stat 命令家族(1)- 詳解 vmstat

性能測試必備的 Linux 命令系列,可以看下面鏈接的文章哦

 

vmstat 介紹

  • Virtual Meomory Statistics,報告虛擬記憶體統計資訊
  • 會統計進程資訊、記憶體、交換區、IO、磁碟、CPU 等數據

 

vmstat 語法格式

vmstat [options] [delay [count]]
  • options:命令行參數,可選
  • delay:間隔多久統計一次數據,可選
  • count:統計一次,可選
  • 注意:若只傳了 delay,則統計次數是無限次,結束統計後會列印本次所有數據的平均值

 

小栗子

vmstat 1 

每隔 1s 統計列印一次數據,統計無限次

 

vmstat 2 5

每隔 2s 統計列印一次數據,共統計 5 次

 

vmstat 命令行參數

簡寫 完整寫法 參數後是否要指定一個值 作用
-a  –active F 顯示活動和非活動記憶體
-n –one-header F 僅顯示一次標題,而不是定期顯示
-s –stats F 獲取記憶體、CPU、交換區、中斷次數、上下文切換次數等資訊
-d –disk F 獲取磁碟的詳細資訊(讀寫資訊)
-D –disk-sum F 獲取磁碟的一些摘要資訊
-P –partition device T(device) 有關分區的詳細統計資訊
-S –unit character T(character)
  • 輸出數值的單位
  • character 取:k, K, m or M (default is K)
  • k:1000
  • K:1024
  • m:1000000
  • M:1048576
-t –timestamp F 加一列顯示當前時間
-V –version F 版本
-h –help F 幫助文檔

 

vmstat 統計數據的欄位說明

共有 6 個模組

 

procs:進程狀態

欄位 欄位說明
r 處於 Runnable 狀態的進程數量
b 處於不可中斷睡嗎狀態的進程數量

 

memory:記憶體資訊

欄位 欄位說明
swpd 已用虛擬記憶體
free 空閑記憶體
buff 用於緩衝區的記憶體
cache 用於快取的記憶體
inact 不活動的記憶體量(-a)
active 活動的記憶體量(-a)

 

swap:交換區

欄位 欄位說明
si 每秒從交換區寫到記憶體的大小
so 每秒寫入交換區的記憶體大小

 

io:io 讀寫資訊

現在的Linux版本塊的大小為1024bytes

欄位 欄位說明
bi 每秒讀取的塊數
bo 每秒寫入的塊數

 

system:系統資訊

欄位 欄位說明
in 每秒中斷數,包括時鐘中斷
cs 每秒上下文切換次數

 

CPU:CPU 詳細資訊

這些是總 CPU 時間的百分比

欄位 欄位說明
us 用戶態進程的 CPU 使用率
sy 內核態進程的 CPU 使用率
id 空閑 CPU 百分比
wa

等待 IO 的 CPU 使用率

st 從虛擬機偷取的 CPU 百分比

 

vmstat 數據來源

主要來自這三個文件

  1. /proc/meminfo
  2. /proc/stat
  3. /proc/*/stat

 

vmstat

這些資訊主要來自 /proc/stat 

 

vmstat -s 

這些資訊的分別來自於 /proc/meminfo 、 /proc/stat 和 /proc/vmstat 

 

vmstat -d

這些資訊主要來自於 /proc/diskstats 

 

vmstat 的其他用法

列印活動記憶體和不活動記憶體量

vmstat -a 2 2

 

以 MB 單位輸出結果

vmstat -S M 1 2

 

以 MB 單位輸出各事件計數器和記憶體的統計資訊

vmstat -s -S M 

 

vmstat 的注意事項

  • vmstat 不需要特殊許可權
  • vmstat 報告旨在幫助確定系統瓶頸,所以它不會將自己視為正在運行的進程
  • 當前所有的 Linux 塊都是 1024 位元組, 舊內核可能報告的塊為 512 位元組,2048 位元組或 4096 位元組