Linux性能優化:CPU性能分析工具–vmstat
vmstat是Virtual Meomory Statistics(虛擬記憶體統計)縮寫,可對作業系統的虛擬記憶體、進程、CPU活動進行監控。是對系統的整體情況進行統計,不足之處是無法對某個進程進行深入分析。
語法格式:
vmstat [options] [delay [count]]
delay
:刷新時間間隔。如果不指定,只顯示一條結果。
count
:刷新次數。如果不指定刷新次數,但指定了刷新時間間隔,這時刷新次數為無窮。
參數說明
參數 | 說明 |
---|---|
-a | 顯示活躍和非活躍記憶體 |
-f | 顯示從系統啟動至今的fork數量 |
-m | 顯示slabinfo |
-n | 只在開始時顯示一次各欄位名稱 |
-s | 顯示記憶體相關統計資訊及多種系統活動數量 |
-d | 顯示磁碟相關統計資訊 |
-p | 顯示指定磁碟分區統計資訊 |
-S | 使用指定單位顯示。參數有 k 、K 、m 、M ,分別代表1000、1024、1000000、1048576位元組(byte)。默認單位為K(1024 bytes) |
-V | 顯示vmstat版本資訊 |
輸出資訊說明
類別:
- procs:進程
- memory:記憶體
- swap:虛擬記憶體
- io:磁碟io
- system:系統內核
- cpu:CPU時間百分比
procs
項目 | 說明 |
---|---|
r | 等待執行的任務數,當這個值超過了CPU數目,就會出現CPU瓶頸了 |
b | 處在非中斷睡眠狀態的進程數,大於0表示進程阻塞 |
memory
項目 | 說明 |
---|---|
swpd | 正在使用的swap大小單位K,如果大於0,表示物理記憶體不足 |
free | 空閑的物理記憶體空間 |
buff | 已使用的buff大小,對塊設備的讀寫進行緩衝 |
cache | 已使用的cache大小,文件系統的cache |
inact | 非活躍記憶體大小 |
active | 活躍的記憶體大小 |
swap
項目 | 說明 |
---|---|
si | 交換記憶體使用,由磁碟調入記憶體 |
so | 交換記憶體使用,由記憶體調入磁碟 |
io
項目 | 說明 |
---|---|
bi | 從塊設備讀入的數據總量(讀磁碟) (KB/s),如果這個值大於0,表示物理記憶體不夠用或者記憶體泄露了 |
bo | 寫入到塊設備的數據總理(寫磁碟) (KB/s) ,如果這個值大於0,表示物理記憶體不夠用或者記憶體泄露了 |
system
這2個值越大,會看到由內核消耗的CPU時間會越多。
項目 | 說明 |
---|---|
in | 每秒產生的中斷次數 |
cs | 每秒產生的上下文切換次數 |
cpu
項目 | 說明 |
---|---|
us | 用戶進程消耗的CPU時間百分比。us 的值比較高時,說明用戶進程消耗的CPU時間多,但是如果長期超過50% 的使用,那麼就該考慮優化程式演算法或者進行加速了 |
sy | 內核進程消耗的CPU時間百分比,其中包括消耗在system、irq、softirq狀態的時間。sy的值高時,說明系統內核消耗的CPU資源多,這並不是良性的表現,我們應該檢查原因 |
id | 系統空閑消耗的總CPU時間百分比 |
wa | IO等待消耗的CPU時間百分比。wa的值高時,說明IO等待比較嚴重,這可能是由於磁碟大量作隨機訪問造成,也有可能是磁碟的頻寬出現瓶頸(塊操作) |
st | Time stolen from a virtual machine. Prior to Linux 2.6.11, unknown. |
示例
不加任何參數:
[root@test ~]# vmstat
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 18536908 381556 58920 35857652 0 0 2 6 0 0 2 2 96 1 0
以上示例顯示的是自系統啟動後它記錄的統計資訊的均值。在CPU一欄顯示,CPU有2%的時間用於執行用戶應用程式程式碼,2%的時間用於系統程式碼,其餘96%的時間處於空閑狀態。
每2秒刷新輸出結果,共計10條數據:
[root@test ~]# vmstat 2 10 |tee vmstat.log
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
2 3 18244556 320756 58848 37127060 0 0 2 6 0 0 2 2 96 1 0
2 2 18233548 319008 58856 37107488 4546 0 4554 64 35098 28464 5 5 84 6 0
2 1 18233548 365572 58864 36950716 8 0 8 640 40116 27700 6 7 83 5 0
1 2 18233292 321304 58880 37012480 134 0 134 92 35978 33730 5 2 88 6 0
1 1 18233292 374516 58880 36972972 12 0 12 106 31706 25987 3 2 90 5 0
4 2 18233292 302484 58888 37047228 8 0 10 32 26781 24285 5 3 87 5 0
1 2 18233292 371552 58904 36977100 12 0 12 78 30176 25186 5 3 87 5 0
3 0 18233292 307768 58912 37015744 24 0 24 42 36149 26812 1 5 89 5 0
0 3 18233036 377984 58920 36941756 194 0 212 64 35131 26675 2 3 90 5 0
3 2 18233036 567952 58920 36795824 22 0 22 0 30918 25781 2 2 90 6 0
以上示例中,第一組數據是CPU ticks
,顯示的是自系統啟動的CPU時間,這裡的「tick」是一個時間單位。雖然精簡的vmstat輸出僅顯示四個CPU狀態——us、sy、id和wa,這裡則顯示了全部CPU ticks的分布情況。