Linux 效能優化之 CPU 篇 ----- Linux 軟中斷

bossaiguo發表於2020-06-26

名詞解釋

  1. 中斷其實是一種非同步的事件處理機制,可以提高系統的併發處理能力
  2. 為了解決中斷處理程式執行過長和中斷丟失的問題,Linux 將中斷處理過程分成了兩個階段,也就是上半部和下半部。
    • 上半部用來快速處理中斷,它在中斷禁止模式下執行,主要處理跟硬體緊密相關的或時間敏感的工作。也就是我們常說的硬中斷,特點是快速執行。
    • 下半部用來延遲處理上半部未完成的工作,通常以核心執行緒的方式執行。也就是我們常說的軟中斷,特點是延遲執行。
  3. proc 檔案系統。它是一種核心空間和使用者空間進行通訊的機制,可以用來檢視核心的資料結構,或者用來動態修改核心的配置。
    • /proc/softirqs 提供了軟中斷的執行情況;
    • /proc/interrupts 提供了硬中斷的執行情況。

工具與技巧

  1. sar 是一個系統活動報告工具,既可以實時檢視系統的當前活動,又可以配置儲存和報告歷史統計資料。
    # -n DEV 表示顯示網路收發的報告,間隔1秒輸出一組資料
    $ sar -n DEV 1
    15:03:46        IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s   %ifutil
    15:03:47         eth0  12607.00   6304.00    664.86    358.11      0.00      0.00      0.00      0.01
    15:03:47      docker0   6302.00  12604.00    270.79    664.66      0.00      0.00      0.00      0.00
    15:03:47           lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
    15:03:47    veth9f6bbcd   6302.00  12604.00    356.95    664.66      0.00      0.00      0.00      0.05
  • 第一列:表示報告的時間
  • 第二列:IFACE 表示網路卡
  • 第三、四列:rxpck/s 和 txpck/s 分別表示每秒接收、傳送的網路幀數,也就是 PPS
  • 第五、六列:rxkB/s 和 txkB/s 分別表示每秒接收、傳送的千位元組數,也就是 BPS。
  1. hping3 是一個可以構造 TCP/IP 協議資料包的工具,可以對系統進行安全審計、防火牆測試等。

    # -S參數列示設定TCP協議的SYN(同步序列號),-p表示目的埠為80
    # -i u100表示每隔100微秒傳送一個網路幀
    # 注:如果你在實踐過程中現象不明顯,可以嘗試把100調小,比如調成10甚至1
    $ hping3 -S -p 80 -i u100 192.168.0.30
  2. tcpdump 是一個常用的網路抓包工具,常用來分析各種網路問題

    # -i eth0 只抓取eth0網路卡,-n不解析協議名和主機名
    # tcp port 80表示只抓取tcp協議並且埠號為80的網路幀
    $ tcpdump -i eth0 -n tcp port 80
    15:11:32.678966 IP 192.168.0.2.18238 > 192.168.0.30.80: Flags [S], seq 458303614, win 512, length 0
    ...
本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章