vmstat
vmstat [options] [delay [count]]
報告虛擬內存的統計數據
描述
- vmstat報告進程、內存、頁面、塊IO、陷入、磁盤、以及CPU活動的信息
- 第一個報告產生的是從最近一次重啓以來的平均數據。
- 額外的報告給出的信息是在一個長度爲delay的採樣週期中的數據
- 在以上兩種報告中,進程和內存的報告都是實時的。
用法總結
vmstat 指定模式參數 採樣參數
- 1 模式參數 每種模式都有對應的輸出
- 磁盤模式
-d
-D
- 磁盤分區模式
-p
- VM模式
-a
-f
-s
- slab模式
-m
- 2 採樣參數 無非就是第一個是採樣週期,第二個是採樣次數,不過第一個採樣是從上次重啓以來到現在的一個報告
選項
採樣參數
- delay 秒爲單位的兩次更新之間的延時。如果沒有指定delay參數,就只產生一個從重啓以來的平均值報告
- count 更新的次數。如果沒有count參數,且定義了delay參數的話,默認是無限次
VM模式
- -a, --active 展示活躍的或者不活躍的內存
- -f, --forks 展示從啓動以來的fork次數。這個包括
fork
vfork
clone
系統調用,並且等於總的被創建的任務數。每個進程是由一個或者多個任務表示的,取決於線程的使用情況。這個展示不會反覆。
- -s, --stats 展示一系列的事件計數器以及內存統計信息
slab模式
磁盤模式
- -d, --disk 報告磁盤的統計數據
- -D, --disk-sum 報告關於磁盤活動的描述信息
磁盤分區模式
- -p, --partition device 關於分區的詳細統計信息
輸出微調
- -n, --one-header 僅僅展示標題行一次,而不是週期性地展示標題欄
- -S, --unit character 切換輸出中的數據單位:
k(1000) K(1024) m(1000000) M(1048576)
- 注意,這個不會影響到swap(si/so)或者block(bi/bo)字段
- -t, --timestamp 添加時間戳到每行
- -w, --wide 寬輸出模式(適用於內存量更大的系統,其中默認輸出模式會遭受不必要的列損壞)。 輸出每行超過80個字符。
- -V, --version
- -h, --help
對於VM模式的字段描述
進程
標題 |
詳解 |
r |
runnable的進程(包含正在運行的或者等待運行時間的進程) |
b |
處於不可中斷的休眠的進程 |
內存
標題 |
詳解 |
swpd |
已經使用的虛擬內存的數量 |
free |
空閒的內存的數量 |
buff |
作爲buffer使用的內存的數量 |
cache |
作爲cache使用的內存的數量 |
inact |
要帶-a選項纔有,不活躍內存的數量 |
active |
要帶-a選項纔有,活躍內存的數量 |
Swap
標題 |
詳解 |
si |
從磁盤交換的內存量(/s) |
so |
交換到磁盤的內存量(/s) |
IO
標題 |
詳解 |
bi |
從一個塊設備中接收到的塊的數量(blocks/s) |
bo |
發送到一個塊設備的塊的數量(blocks/s) |
系統
標題 |
詳解 |
in |
每秒的中斷數,包含時鐘的中斷 |
cs |
每秒的上下文交換數量 |
CPU
標題 |
詳解 |
us |
運行非內核代碼花的時間 (用戶層時間,包含nice時間) |
sy |
運行內核代碼花的時間 (系統層時間) |
id |
空轉花的時間 |
wa |
等待IO花的時間 |
st |
從虛擬機偷來的時間 |
對於磁盤模式的字段描述
讀
標題 |
詳解 |
total |
成功完成的總的讀取次數 |
merged |
聚合的讀取(最終以一次IO完成) |
sectors |
成功讀取的扇區數 |
ms |
花在讀上的ms數 |
寫
標題 |
詳解 |
total |
成功完成的總的寫入次數 |
merged |
聚合的寫入(最終以一次IO完成) |
sectors |
成功寫入的扇區數 |
ms |
花在寫上的ms數 |
IO
標題 |
詳解 |
cur |
正在進行中的IO |
s |
花在IO上的秒數 |
對於磁盤分區模式的字段描述
標題 |
詳解 |
reads |
|
read sectors |
|
writes |
對這個分區的寫次數 |
requested writes |
向分區的總的寫請求數 |
對於SLAB模式的字段描述
標題 |
詳解 |
cache |
Cache的名稱 |
num |
當前活躍對象的數量 |
total |
可用對象的總數 |
size |
每個對象的大小 |
pages |
有至少一個活躍對象的頁的數量 |
注意事項
- vmstat並不需要特殊權限
- 這些報告都是用來幫助識別系統瓶頸的,Linux的vmstat並不會將自己當做一個運行進程來統計的
- 所有的linux塊當前都是1024B,老的內核可能將塊當做512B|2048B|4096B來報告。
- vmstat使用slabinfo1.1