Linux 效能優化之 cup 篇

bossaiguo發表於2020-06-25

從平均負載說起

名詞解釋

  1. 平均負載: 指單位時間內,處於可執行狀態和不可中斷狀態的程式數。所以,它不僅包括了正在使用 CPU 的程式,還包括等待 CPU 和等待 I/O 的程式。也就是平均活躍程式數。

  2. 可執行狀態的程式:是指正在使用 CPU 或者正在等待 CPU 的程式,也就是我們常用 ps 命令看到的,處於 R 狀態(Running 或 Runnable)的程式。

  3. 不可中斷狀態的程式:正處於核心態關鍵流程中的程式,並且這些流程是不可打斷的,比如最常見的是等待硬體裝置的 I/O 響應,也就是我們在 ps 命令中看到的 D 狀態(Uninterruptible Sleep,也稱為 Disk Sleep)的程式。

    答疑

  4. 當平均負載為 2 時,意味著什麼呢?

    • 在只有 2 個 CPU 的系統上,意味著所有的 CPU 都剛好被完全佔用
    • 在 4 個 CPU 的系統上,意味著 CPU 有 50% 的空閒。
    • 而在只有 1 個 CPU 的系統中,則意味著有一半的程式競爭不到 CPU
  5. 平均負載為多少時合理?

    • 當平均負載高於 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
  1. 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 協議》,轉載必須註明作者和本文連結

相關文章