vmstat(Virtual Memory Statistics)是 Linux 系統效能分析的「瑞士軍刀」。它以極低開銷提供進程、記憶體、交換、I/O、系統中斷與 CPU 等全方位統計,是高負載伺服器排查瓶頸的首選工具。本文將從虛擬記憶體原理切入,深度解析 vmstat 輸出欄位,並提供實戰分析模型。
物理記憶體(RAM)容量有限且昂貴,而程式執行所需位址空間往往超過物理上限。虛擬記憶體利用磁碟空間(Swap 分區/檔案)作為邏輯延伸,讓系統能運行更大、更多程式。
vmstat [選項] [延遲秒數 [次數]]
| 參數 | 功能 |
|---|---|
-a | 顯示活躍/非活躍記憶體統計 |
-f | 顯示開機至今 fork 總數 |
-m | 顯示 slabinfo(核心快取分配器統計) |
-n | 僅在開頭顯示一次欄位標題 |
-s | 顯示詳細記憶體/系統活動統計表(單次輸出) |
-d | 顯示磁碟統計資訊 |
-p 分區 | 顯示指定磁碟分區統計 |
-S 單位 | 指定顯示單位:k(1000) K(1024) m(1000000) M(1048576),預設 K |
delay | 採樣間隔(秒),不指定則只輸出一次平均值 |
count | 採樣次數,指定 delay 但不指定 count 則無限循環 |
[root@localhost ~]# vmstat 5 3
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 3029876 199616 690980 0 0 0 2 3 2 0 0 100 0 0
0 0 0 3029752 199616 690980 0 0 0 41 1009 39 0 0 100 0 0
0 0 0 3029752 199616 690980 0 0 0 3 1004 36 0 0 100 0 0
vmstat 10 100 | tee vmstat_$(date +%F_%H%M).log
vmstat -s
vmstat -p /dev/sda1 5
vmstat -m | head -20

vmstat 以輕量、全面、即時的特性,成為 Linux 效能分析的基石。熟練解讀其輸出,結合 iostat、pidstat、perf 等工具,可快速定位 80% 以上的系統效能問題。建議管理員建立常態基準線,異常時快速比對,精準施策。