vmstat是Virtual Meomory Statistics(虛擬內存統計)縮寫,可對操做系統的虛擬內存、進程、CPU活動進行監控。是對系統的總體狀況進行統計,不足之處是沒法對某個進程進行深刻分析。bash
語法格式:優化
vmstat [options] [delay [count]]
delay
:刷新時間間隔。若是不指定,只顯示一條結果。操作系統
count
:刷新次數。若是不指定刷新次數,但指定了刷新時間間隔,這時刷新次數爲無窮。code
參數 | 說明 |
---|---|
-a | 顯示活躍和非活躍內存 |
-f | 顯示從系統啓動至今的fork數量 |
-m | 顯示slabinfo |
-n | 只在開始時顯示一次各字段名稱 |
-s | 顯示內存相關統計信息及多種系統活動數量 |
-d | 顯示磁盤相關統計信息 |
-p | 顯示指定磁盤分區統計信息 |
-S | 使用指定單位顯示。參數有 k 、K 、m 、M ,分別表明1000、102四、1000000、1048576字節(byte)。默認單位爲K(1024 bytes) |
-V | 顯示vmstat版本信息 |
類別:blog
項目 | 說明 |
---|---|
r | 等待執行的任務數,當這個值超過了CPU數目,就會出現CPU瓶頸了 |
b | 處在非中斷睡眠狀態的進程數,大於0表示進程阻塞 |
項目 | 說明 |
---|---|
swpd | 正在使用的swap大小單位K,若是大於0,表示物理內存不足 |
free | 空閒的物理內存空間 |
buff | 已使用的buff大小,對塊設備的讀寫進行緩衝 |
cache | 已使用的cache大小,文件系統的cache |
inact | 非活躍內存大小 |
active | 活躍的內存大小 |
項目 | 說明 |
---|---|
si | 交換內存使用,由磁盤調入內存 |
so | 交換內存使用,由內存調入磁盤 |
項目 | 說明 |
---|---|
bi | 從塊設備讀入的數據總量(讀磁盤) (KB/s),若是這個值大於0,表示物理內存不夠用或者內存泄露了 |
bo | 寫入到塊設備的數據總理(寫磁盤) (KB/s) ,若是這個值大於0,表示物理內存不夠用或者內存泄露了 |
這2個值越大,會看到由內核消耗的CPU時間會越多。進程
項目 | 說明 |
---|---|
in | 每秒產生的中斷次數 |
cs | 每秒產生的上下文切換次數 |
項目 | 說明 |
---|---|
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條數據:get
[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的分佈狀況。