vmstat

顯示虛擬內存狀態

補充說明

vmstat命令 的含義爲顯示虛擬內存狀態(“Viryual Memor Statics”),但是它可以報告關於進程、內存、I/O等系統整體運行狀態。

語法

1vmstat(選項)(參數)

選項

1-a:顯示活動內頁;
2-f:顯示啓動後創建的進程總數;
3-m:顯示slab信息;
4-n:頭信息僅顯示一次;
5-s:以表格方式顯示事件計數器和內存狀態;
6-d:報告磁盤狀態;
7-p:顯示指定的硬盤分區狀態;
8-S:輸出信息的單位。

參數

  • 事件間隔:狀態信息刷新的時間間隔;
  • 次數:顯示報告的次數。

實例

1vmstat 3
2procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
3 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
4 0  0    320  42188 167332 1534368    0    0     4     7    1    0  0  0 99  0  0
5 0  0    320  42188 167332 1534392    0    0     0     0 1002   39  0  0 100  0  0
6 0  0    320  42188 167336 1534392    0    0     0    19 1002   44  0  0 100  0  0
7 0  0    320  42188 167336 1534392    0    0     0     0 1002   41  0  0 100  0  0
8 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: 空閒時間百分比

來源:https://github.com/jaywcjlove/linux-command

最後修改於: Wednesday, January 31, 2024

相關文章:

翻譯: