Linux 命令使用筆記【vmstat】

飛朋發表於2020-10-13

vmstat命令

 

vmstat 命令的含義為顯示虛擬記憶體狀態(“Virtual Memory Statistics”),但是它可以報告關於程式、記憶體、I/O等系統整體執行狀態。

語法

vmstat(選項)(引數)

選項

  • -a:顯示活動內頁;
  • -f:顯示啟動後建立的程式總數;
  • -m:顯示slab資訊;
  • -n:頭資訊僅顯示一次;
  • -s:以表格方式顯示事件計數器和記憶體狀態;
  • -d:報告磁碟狀態;
  • -p:顯示指定的硬碟分割槽狀態;
  • -S:輸出資訊的單位。

引數

  • 事件間隔:狀態資訊重新整理的時間間隔;
  • 次數:顯示報告的次數。

例項

vmstat 3 

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 320 42188 167332 1534368 0 0 4 7 1 0 0 0 99 0 0 
0 0 320 42188 167332 1534392 0 0 0 0 1002 39 0 0 100 0 0 
0 0 320 42188 167336 1534392 0 0 0 19 1002 44 0 0 100 0 0 
0 0 320 42188 167336 1534392 0 0 0 0 1002 41 0 0 100 0 0 
0 0 320 42188 167336 1534392 0 0 0 0 1002 41 0 0 100 0 0

欄位說明:

Procs(程式)

  • r: 執行佇列中程式數量,這個值也可以判斷是否需要增加CPU。(長期大於1)
  • b: 等待IO的程式數量。

Memory(記憶體)

  • swpd: 使用虛擬記憶體大小,如果swpd的值不為0,但是SI,SO的值長期為0,這種情況不會影響系統效能。
  • free: 空閒實體記憶體大小。
  • buff: 用作緩衝的記憶體大小。
  • cache: 用作快取的記憶體大小,如果cache的值大的時候,說明cache處的檔案數多,如果頻繁訪問到的檔案都能被cache處,那麼磁碟的讀IO bi會非常小。

Swap

  • si: 每秒從交換區寫到記憶體的大小,由磁碟調入記憶體。
  • so: 每秒寫入交換區的記憶體大小,由記憶體調入磁碟。

注意:記憶體夠用的時候,這2個值都是0,如果這2個值長期大於0時,系統效能會受到影響,磁碟IO和CPU資源都會被消耗。有些朋友看到空閒記憶體(free)很少的或接近於0時,就認為記憶體不夠用了,不能光看這一點,還要結合si和so,如果free很少,但是si和so也很少(大多時候是0),那麼不用擔心,系統效能這時不會受到影響的。

IO(現在的Linux版本塊的大小為1kb)

  • bi: 每秒讀取的塊數
  • bo: 每秒寫入的塊數

注意:隨機磁碟讀寫的時候,這2個值越大(如超出1024k),能看到CPU在IO等待的值也會越大。

system(系統)

  • in: 每秒中斷數,包括時鐘中斷。
  • cs: 每秒上下文切換數。

注意:上面2個值越大,會看到由核心消耗的CPU時間會越大。

CPU(以百分比表示)

  • us: 使用者程式執行時間百分比(user time)

us的值比較高時,說明使用者程式消耗的CPU時間多,但是如果長期超50%的使用,那麼我們就該考慮優化程式演算法或者進行加速。

  • sy: 核心系統程式執行時間百分比(system time)

sy的值高時,說明系統核心消耗的CPU資源多,這並不是良性表現,我們應該檢查原因。

  • wa: IO等待時間百分比

wa的值高時,說明IO等待比較嚴重,這可能由於磁碟大量作隨機訪問造成,也有可能磁碟出現瓶頸(塊操作)。

  • id: 空閒時間百分比

 

相關文章