Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> Linux 教學

Linux vmstat 命令深度解析:系統效能監控實戰指南

編輯:Linux 教學

vmstat(Virtual Memory Statistics)是 Linux 系統管理員進行效能診斷的瑞士軍刀。它能即時顯示虛擬記憶體、程序、CPU、I/O 等關鍵指標,幫助快速定位瓶頸。本文深度解析各欄位含義、進階用法與實戰分析技巧。

命令語法與常用選項

vmstat [options] [delay [count]]

常用選項:
  -a    顯示活躍/非活躍記憶體
  -s    顯示記憶體統計摘要(事件計數器)
  -d    顯示磁碟統計
  -p    顯示指定分區統計
  -t    顯示時間戳
  -n    週期性輸出時標題僅顯示一次
  -V    顯示版本資訊

delay  : 取樣間隔(秒)
count  : 取樣次數(預設無限)

常用組合

# 每 2 秒取樣 1 次,共 5 次
vmstat 2 5

# 持續監控,每 3 秒顯示一次(Ctrl+C 結束)
vmstat 3

# 顯示活躍/非活躍記憶體,每 5 秒一次
vmstat -a 5

# 顯示磁碟 I/O 統計
vmstat -d

輸出欄位深度解析

procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs  us sy id wa st

procs(程序佇列)

欄位含義異常判讀
r運行佇列中等待 CPU 的進程數(含正在運行)長期 > CPU 核心數 × 2 表示 CPU 壓力大
b不可中斷睡眠狀態的進程數(通常等待 I/O)持續非零表示 I/O 瓶頸

memory(記憶體,單位 KB)

欄位含義說明
swpd已使用的交換空間持續增長表示記憶體不足
free完全空閒記憶體過低(< 總記憶體 5%)需關注
buffBlock Device 緩衝區原始磁碟緩衝
cache頁面緩存檔案系統緩存,可被快速回收

swap(交換分頁,單位 KB/s)

欄位含義異常判讀
si從磁碟交換區讀入記憶體(Swap In)持續非零 = 記憶體嚴重不足,頻繁換入
so從記憶體寫入交換區(Swap Out)持續非零 = 主動換出,記憶體壓力大

核心判斷:健康系統 si、so 長期為 0。若持續非零,必須增加實體記憶體或優化應用記憶體使用。

io(塊設備,單位 KB/s)

欄位含義
bi從塊設備讀入總量(讀磁碟)
bo寫入塊設備總量(寫磁碟)

system(系統)

欄位含義異常判讀
in每秒中斷數(含時鐘中斷)過高(> 20k/s)可能為硬體問題或驅動程式問題
cs每秒上下文切換次數過高(> 10k/s)表示進程/執行緒切換頻繁,CPU 開銷大

cpu(CPU 百分比)

欄位含義關注重點
us用戶態 CPU 時間應用程式計算密集型負載
sy系統態 CPU 時間系統呼叫、中斷處理開銷,過高(> 20%)需關注
id閒置時間長期接近 0 表示 CPU 飽和
wa等待 I/O 時間關鍵指標,持續 > 20% 表示 I/O 瓶頸
st虛擬機被 Hypervisor 偷走的時間虛擬化環境關注,過高表示宿主機超售

實戰分析場景

場景 1:CPU 瓶頸診斷

# 觀察持續 1 分鐘
vmstat 5 12

# 關注指標
r > 2*CPU_cores      → 進程排隊嚴重
us + sy > 80%        → CPU 繁忙
sy > 30%             → 系統調用過多(鎖競爭、頻繁系統呼叫)
cs > 10000           → 過度上下文切換

場景 2:記憶體壓力與 Swap 暴增

# 關注指標
free < 總記憶體 5%       → 可用記憶體不足
swpd 持續增長           → 持續換出
si/so 持續 > 0          → 頻繁換頁,效能嚴重下降
buff/cache 過低         → 檔案緩存被擠佔,I/O 效能下降

場景 3:I/O 瓶頸定位

# 關注指標
wa > 20%              → CPU 大量時間等待 I/O
bi/bo 持續高位         → 大量磁碟讀寫
b > 0                  → 進程處於不可中斷睡眠(通常等待 I/O)

# 結合 iostat 定位具體設備
iostat -xmt 5

場景 4:系統調用與上下文切換異常

# 關注指標
in > 20000            → 中斷風暴,檢查網卡/磁碟控制器驅動
cs > 20000            → 過度切換,可能為:
                        - 進程過多(超過 CPU 核心數數倍)
                        - 同步鎖競爭激烈
                        - 頻繁系統呼叫(如頻繁 read/write 小塊資料)

進階用法與組合拳

記憶體詳細分析

vmstat -s
# 輸出事件計數器:
#   total memory, used memory, active memory, inactive memory
#   page faults, major faults, page reclaims
#   swap ins, swap outs, page ins, page outs
#   context switches, CPU time...

磁碟 I/O 詳細統計

vmstat -d
# 輸出每個磁碟裝置的讀寫統計:
#   reads, reads merged, sectors read, ms reading
#   writes, writes merged, sectors written, ms writing
#   io in progress, ms doing io, weighted ms doing io

指定分區統計

vmstat -p /dev/sda1
# 輸出指定分區的讀寫統計

腳本化監控範例

#!/bin/bash
# 持續監控,異常時告警
vmstat 10 | awk '
$13 > 80 { print "CPU 高負載: us+sy=" $13+$14 "%" }
$16 > 20 { print "I/O 等待過高: wa=" $16 "%" }
$7 > 0 || $8 > 0 { print "Swap 活躍: si=" $7 " so=" $8 }
'

對比工具速查

工具焦點適用場景
vmstat系統級宏觀概覽快速定位 CPU/記憶體/I/O 大方向瓶頸
iostat磁碟 I/O 詳細定位具備磁碟、分區效能
mpstat每 CPU 核心統計多核負載不均衡分析
pidstat進程級資源使用定位具體進程資源佔用
sar歷史資料收集/報表長期趨勢分析、容量規劃

總結

vmstat 是系統效能診斷的「聽診器」。掌握 r, b, si, so, bi, bo, wa, cs 等關鍵指標含義,配合 delay count 觀察趨勢,能在幾分鐘內完成系統健康度評估。記住核心口訣:r 看 CPU 排隊、si/so 看記憶體壓力、wa 看 I/O 等待、cs 看切換開銷。配合 iostat、pidstat、top 形成組合拳,即可應對絕大多數效能疑難雜症。

Copyright © Windows教程網 All Rights Reserved