聊聊系統平均負載

李朝淋發表於2019-04-02

一、什麼是平均負載

單位時間內,系統處於可執行狀態和不可中斷狀態的程式數,可簡單理解為系統平均活躍程式數

  • 可執行狀態:top命令狀態為R,包括Runnable和Running
  • 不可中斷狀態:top命令狀態為D,正處於核心態關鍵流程中的程式,並且這些流程是不可打斷的,比如等待硬體裝置的I/O響應,這往往是對資料一致性的一種保護機制

二、如何檢視平均負載

$ uptime
...,  load average: 0.20, 0.15, 0.19
$ top
...,  load average: 0.20, 0.15, 0.19
$ w
...,  load average: 0.20, 0.15, 0.19
$  watch -d uptime // 監控平均負載,預設2s重新整理一次
複製程式碼

有uptime、top、w等命令檢視系統平均負載,後面三個資料分別系統過去1分鐘、5分鐘、15分鐘的平均負載

三、如何更好理解的平均負載

單核,類似單車道車道,數字小於1.0,說明正常,大於1.0道理則出現擁擠現象,多核心CPU類推,如下圖

  • 車輛佔滿整個車道(0.50),說明車道暢通
  • 車輛佔滿整個車道(1.00),說明車道已飽和
  • 車輛佔滿整個車道(1.70),說明車道嚴重擁擠
    聊聊系統平均負載

四、平均負載與cpu核數關係

單核平均負載一般認為0.7以下是安全的,多核(邏輯CPU個數N)下,臨界值 = N * 0.7

grep 'model name' /proc/cpuinfo | wc -l
複製程式碼

五、平均負載與cpu使用率關係

前面提到,計算平均負載的程式包括R和D兩種狀態程式,所有平均負載高可能有Cpu使用率高或者IO wait兩種情況引起 簡單理解如下:

  • CPU密集型:程式大量使用cpu,此時兩種指標效果一直
  • IO密集型:程式I/O等待導致平均負載升高,此時cpu使用率不一定高
  • 大量等待 CPU 的程式排程也會導致平均負載升高,此時的 cpu使用率一般也會比較高

六、如何排查

linux系統提供pidstat、mpstat、iostat等工具分析

相關文章