[[email protected] ~]# vmstat 2 3 procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 1 0 8 247512 39660 394168 0 0 31 8 86 269 0 1 98 1 0 0 0 8 247480 39660 394172 0 0 0 0 96 147 4 0 96 0 0 0 0 8 247484 39660 394172 0 0 0 66 95 141 2 2 96 0 0通過分析 vmstat 命令的執行結果,可以獲得一些與當前 Linux 執行效能相關的資訊。比如說:
和 vmstat 命令一樣,sar 命令的基本格式和用法已經在 《Linux sar命令》一節中做了詳細的介紹,接下來直接學習如何使用 sar 命令檢視 CPU 效能。注意,雖然使用 sar 命令會增加系統開銷,不過這些開銷是可以評估的,不會對系統效能的統計結果產生很大影響。
[[email protected] ~]# sar -u 3 5 Linux 2.6.32-431.el6.x86_64 (localhost) 10/28/2019 _x86_64_ (8 CPU) 04:02:46 AM CPU %user %nice %system %iowait %steal %idle 04:02:49 AM all 1.69 0.00 2.03 0.00 0.00 96.27 04:02:52 AM all 1.68 0.00 0.67 0.34 0.00 97.31 04:02:55 AM all 2.36 0.00 1.69 0.00 0.00 95.95 04:02:58 AM all 0.00 0.00 1.68 0.00 0.00 98.32 04:03:01 AM all 0.33 0.00 0.67 0.00 0.00 99.00 Average: all 1.21 0.00 1.35 0.07 0.00 97.37此輸出結果統計的是系統中包含的 8 顆 CPU 的整體執行狀況,每項的輸出都非常直觀,其中最後一行(Average)是匯總行,是對上面統計資訊的一個平均值。
另外,在一個多 CPU 的系統中,如果程式使用了單執行緒,就會出現“CPU 整體利用率不高,但系統應用響應慢”的現象,造成此現象的原因在於,單執行緒只使用一個 CPU,該 CPU 佔用率為 100%,無法處理其他請求,但除此之外的其他 CPU 卻處於閒置狀態,進而整體 CPU 使用率並不高。需要指出的是,sar 輸出結果中第一行包含了 sar 命令本身的統計消耗,因此 %user 列的值會偏高一點,但這並不會對統計結果產生很大影響。
[[email protected] ~]# sar -P 0 3 5 Linux 2.6.32-431.el6.x86_64 (localhost) 10/28/2019 _x86_64_ (8 CPU) 04:44:57 AM CPU %user %nice %system %iowait %steal %idle 04:45:00 AM 0 8.93 0.00 1.37 0.00 0.00 89.69 04:45:03 AM 0 6.83 0.00 1.02 0.00 0.00 92.15 04:45:06 AM 0 0.67 0.00 0.33 0.33 0.00 98.66 04:45:09 AM 0 0.67 0.00 0.33 0.00 0.00 99.00 04:45:12 AM 0 2.38 0.00 0.34 0.00 0.00 97.28 Average: 0 3.86 0.00 0.68 0.07 0.00 95.39注意,sar 命令對系統中 CPU 的計數是從數位 0 開始的,因此上面執行的命令表示對系統中第一顆 CPU 的執行狀態進行統計。如果想單獨統計系統中第 5 顆 CPU 的執行狀態,可以執行
sar -P 4 3 5
命令。[[email protected] ~]# iostat -c Linux 2.6.32-431.el6.x86_64 (localhost) 10/28/2019 _x86_64_ (8 CPU) avg-cpu: %user %nice %system %iowait %steal %idle 0.07 0.00 0.12 0.09 0.00 99.71可以看到,此輸出結果中包含的項和 sar 命令的輸出項完全相同。
有關 iostat 命令的基本用法,由於不是本節重點,因為不再詳細介紹。
[[email protected] ~]# uptime 05:38:26 up 1:47, 2 users, load average: 0.12, 0.08, 0.08該命令的輸出結果中,各個資料所代表的含義依次是:系統當前時間、系統執行時長、當前登陸系統的使用者數量、系統分別在 1 分鐘、5 分鐘和 15 分鐘內的平均負載。