Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學

vmstat 實戰指南:從虛擬內存原理到性能瓶頸定位

編輯:Linux 系統常見問題解答

vmstat(Virtual Memory Statistics)是 Linux 系統性能分析的經典工具。它不僅報告虛擬內存狀態,還涵蓋進程、CPU、I/O 等關鍵指標。本文從原理入手,詳細解讀輸出字段,助你快速發現系統瓶頸。

虛擬內存核心原理

  • 調頁:將近期未用的內存頁換至磁盤,保留活躍頁供進程使用。
  • 交換:將整個進程地址空間換出到磁盤。
  • Page-Out / Page-In:頁面寫入磁盤 / 從磁盤讀回內存。
  • Page Fault:訪問的頁不在物理內存,觸發缺頁中斷。
  • Thrashing(顛簸):頻繁 Page-Out 導致內核花費更多時間管理頁面而非運行進程,系統性能急劇下降。

常用語法

vmstat [-a] [-n] [-S unit] [delay [count]]
vmstat -s   # 顯示內存統計摘要
vmstat -m   # 顯示 slab 信息
vmstat -d   # 磁盤統計
vmstat -p partition  # 指定分區統計

關鍵參數:-a 活躍/非活躍內存;-n 僅首行顯示表頭;-S k|K|m|M 指定單位(默認 K=1024)。

核心字段解讀(默認輸出)

類別字段含義
Procsr運行隊列中等待 CPU 的進程數
b等待 I/O 的進程數(不可中斷睡眠)
Memoryswpd已用虛擬內存大小
free空閒物理內存
buff作為 buffer 的內存(塊設備緩存)
cache作為 cache 的內存(文件系統緩存)
Swapsi每秒從交換區讀入內存(Page-In)
so每秒寫入交換區(Page-Out)
IObi每秒讀取塊數(塊大小 1024B)
bo每秒寫入塊數
Systemin每秒中斷數(含時鐘中斷)
cs每秒上下文切換數
CPU%us用戶態佔用
sy系統態佔用
id空閒(含 I/O 等待)
waI/O 等待佔用

實戰判斷邏輯

  • r 長期 > CPU 核心數 → CPU 瓶頸
  • b 持續非零 → I/O 瓶頸
  • si/so 頻繁非零 → 內存不足,發生頻繁換頁
  • wa 高 → 磁盤 I/O 等待嚴重
  • in/cs 高 → 中斷或上下文切換過多,可能為高併發短連接或鎖爭用

建議以 vmstat 2 10 連續采樣觀察趨勢,結合 iostat、pidstat 進一步定位具體進程或設備。

Copyright © Windows教程網 All Rights Reserved