從平均負載說起
名詞解釋
平均負載: 指單位時間內,處於可執行狀態和不可中斷狀態的程式數。所以,它不僅包括了正在使用 CPU 的程式,還包括等待 CPU 和等待 I/O 的程式。也就是平均活躍程式數。
可執行狀態的程式:是指正在使用 CPU 或者正在等待 CPU 的程式,也就是我們常用 ps 命令看到的,處於 R 狀態(Running 或 Runnable)的程式。
不可中斷狀態的程式:正處於核心態關鍵流程中的程式,並且這些流程是不可打斷的,比如最常見的是等待硬體裝置的 I/O 響應,也就是我們在 ps 命令中看到的 D 狀態(Uninterruptible Sleep,也稱為 Disk Sleep)的程式。
答疑
當平均負載為 2 時,意味著什麼呢?
- 在只有 2 個 CPU 的系統上,意味著所有的 CPU 都剛好被完全佔用
- 在 4 個 CPU 的系統上,意味著 CPU 有 50% 的空閒。
- 而在只有 1 個 CPU 的系統中,則意味著有一半的程式競爭不到 CPU
平均負載為多少時合理?
- 當平均負載高於 CPU 數量 70% 的時候,你就應該分析排查負載高的問題了。一旦負載過高,就可能導致程式響應變慢,進而影響服務的正常功能
小工具與技巧
1.系統有幾個 CPU?
grep 'model name' /proc/cpuinfo | wc -l
2.mapstat
mpstat 是一個常用的多核 CPU 效能分析工具,用來實時檢視每個 CPU 的效能指標,以及所有 CPU 的平均指標。
// -P ALL 表示監控所有CPU,後面數字5表示間隔5秒後輸出一組資料 $ mpstat -P ALL 5 Linux 4.15.0 (ubuntu) 09/22/18 _x86_64_ (2 CPU) 13:30:06 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle 13:30:11 all 50.05 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 49.95 13:30:11 0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 13:30:11 1 100.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
- pidstat
是一個常用的程式效能分析工具,用來實時檢視程式的 CPU、記憶體、I/O 以及上下文切換等效能指標。
// 間隔5秒後輸出一組資料 $ pidstat -u 5 1 13:37:07 UID PID %usr %system %guest %wait %CPU CPU Command 13:37:12 0 2962 100.00 0.00 0.00 0.00 100.00 1 stress
本作品採用《CC 協議》,轉載必須註明作者和本文連結