天天看點

了解linux平均負載了解linux平均負載

了解linux平均負載

簡介

平均負載最理想的情況是等于 CPU 個數。檢視CPU

grep 'model name' /proc/cpuinfo | wc -l

綜合檢視平均負載的三個數值分析系統負載趨勢的資料,可以能更全面、更立體地了解目前的負載狀況。

假設我們在一個單 CPU 系統上看到平均負載為 1.73,0.60,7.98,那麼說 明在過去 1 分鐘内,系統有 73% 的超載,而在 15 分鐘内,有 698 % 的超載,從整體趨勢來 看,系統的負載在降低。

當平均負載高于 CPU 數量 70% 的時候,你就應該分析排查負載高的問題了。一旦 負載過高,就可能導緻程序響應變慢,進而影響服務的正常功能。

平均負載是指機關時間内,處于可運作狀态和不可中斷狀 态的程序數。是以,它不僅包括了正在使用CPU的程序,還包括等待CPU 和等待 I/O的程序,而CPU使用率,是機關時間内 CPU 繁忙情況的統計,跟平均負載并不一定完全對應。例如:

  • CPU 密集型程序,使用大量 CPU 會導緻平均負載升高,此時這兩者是一緻的。
  • I/O 密集型程序,等待 I/O 也會導緻平均負載升高,但 CPU 使用率不一定很高。
  • 大量等待 CPU 的程序排程也會導緻平均負載升高,此時的 CPU 使用率也會比較高。

分析工具

使用iostat、mpstat、pidstat 等工具,找出平均 負載升高的根源。

1. CPU密集型程序

$ uptime

# -P ALL 表示監控所有 CPU,後面數字 5 表示間隔 5 秒後輸出一組資料
$ mpstat -P ALL 5

# 間隔 5 秒後輸出一組資料
$ pidstat -u 5 1           

平均負載的升高是由于 CPU使用率 的升高

2. I/O 密集型程序

# 顯示所有 CPU 的名額,并在間隔 5 秒輸出一組資料
$ mpstat -P ALL 5 1

# 間隔 5 秒後輸出一組資料,-u 表示 CPU 名額
$ pidstat -u 5 1           

平均負載的升高是由于 iowait 的升高

3. 大量程序的場景

當系統中運作程序超出 CPU 運作能力時,就會出現等待 CPU 的程序。

$ uptime

# 間隔 5 秒後輸出一組資料,-u 表示 CPU 名額
$ pidstat -u 5 1           

多程序在争搶有限CPU,每個程序等待CPU的時間(也就是代碼塊中的 %wait 列)高。這些超出CPU計算能力的程序,最終導緻 CPU 過載。

更多

# 檢視高IO程序
$ ps -e -L h o state,cmd  | awk '{if($1=="R"||$1=="D"){print $0}}' | sort | uniq -c | sort -k 1nr           

繼續閱讀