­

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 位元組