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 系統效能監控全景圖:mpstat/vmstat/sar/iostat/top 六大神器深度解析與實戰判讀

編輯:Linux 教學

效能調優的第一步是「看懂數據」。Linux 提供豐富的監控工具箱,各有側重:CPU 視角(mpstat、sar)、記憶體/換頁/上下文切換(vmstat)、磁碟 I/O(iostat)、進程級熱點(top/htop)、系統整體負載(uptime/w)。本文系統解析六大工具的關鍵指標、輸出判讀邏輯、常用參數與實戰排查案例,助你建立從指標到根因的完整診斷鏈路。

一、核心指標統一語義表

指標含義健康基線主要工具
%user用戶態 CPU 佔用< 70%mpstat, vmstat, sar, top
%sys核心態 CPU 佔用< 30%同上
%iowait/wa等待 I/O 導致 CPU 空閒< 5-10%同上
%idle/idCPU 完全空閒> 20%同上
%steal虛擬化環境被宿主機佔用= 0%mpstat, sar
r (run queue)等待 CPU 的進程數< CPU 核心數vmstat
in (interrupts/s)每秒中斷次數視硬體而定vmstat, mpstat
cs (context switch/s)每秒上下文切換次數< 5000-10000vmstat
si/so每秒換入/換出頁數= 0 (持續非零=記憶體不足)vmstat
bi/bo每秒塊裝置讀/寫塊數視負載而定vmstat, iostat
%util裝置忙碌百分比< 70-80%iostat
await平均 I/O 等待時間 (ms)< 10-20ms (SSD), < 50ms (HDD)iostat
svctm平均 I/O 服務時間 (ms)< awaitiostat
load average1/5/15 分鐘可運行進程平均數< CPU 核心數uptime, top, w

二、六大工具深度解析

1. mpstat -P ALL 間隔 次數 —— 每核心 CPU 細粒度視角

mpstat -P ALL 5
# 輸出含:CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle intr/s
  • 核心價值:揭露單核熱點(如中斷親和性導致 CPU0 %si 高)、虛擬化 %steal、軟中斷 %soft 暴增等現象。
  • 判讀要點:某核 %iowait 持續高 → 磁碟瓶頸;%sys 高於 %user → 核心鎖競爭/系統調用過多;%steal > 5% → 宿主機超售或鄰居噪音。

2. vmstat 間隔 次數 —— 系統級資源壓力綜合儀表板

vmstat 3 10
# 輸出欄位:procs(r b) memory(swpd free buff cache) swap(si so) io(bi bo) system(in cs) cpu(us sy id wa st)
  • r (run queue):持續 > 核心數 × 2 → CPU 飽和;> 核心數 × 4 → 嚴重不足。
  • si/so:持續非零 = 物理記憶體不足,觸發 swap,效能崩塌前兆。
  • in/cs:高中斷/上下文切換 → 大量短命進程、頻繁鎖競爭、網路封包風暴。
  • us+sy+id=100%,wa 包含在 id 中(舊版內核),新版分離顯示。

3. sar -u/-r/-d/-n DEV 間隔 次數 —— 歷史數據存儲與報表神器

sar -u 5 6    # CPU 使用率歷史
sar -r 5 6    # 記憶體使用率歷史
sar -d 5 6    # 磁碟 I/O 歷史 (需啟用 sadc)
sar -n DEV 5 6 # 網路介面統計歷史
  • 優勢:sysstat 套件含 sadc 守護進程,預設每 10 分鐘寫入 /var/log/sa/saDD,支援事後追溯、生成日報/周報(sar -A -f /var/log/sa/sa01)。
  • 關鍵指標:%idle 持續 < 10% → CPU 瓶頸;%idle 高但響應慢 → 等待記憶體分配(檢查 %steal、si/so)。

4. iostat -xmt 間隔 —— 磁碟 I/O 微觀剖析

iostat -xmt 1
# 關鍵欄位:rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util
  • %util 接近 100%:裝置飽和,排隊嚴重。
  • await ≫ svctm:佇列等待時間長,I/O 擁塞(併發請求過多)。
  • avgqu-sz:平均佇列長度,> 10 通常意味著擁塞。
  • 合併因子 rrqm/s, wrqm/s:高合併 = 順序 I/O 好;低合併 = 隨機 I/O 多。

實戰公式:總 IOPS = r/s + w/s;平均等待 ≈ svctm × (1 + 2 + ... + 佇列深度) / 佇列深度。

5. top / htop —— 進程級熱點定位

top -d 3
# 頭部:系統時間、uptime、負載、任務統計、CPU 彙總、記憶體/Swap
# 進程表:PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
  • PR:優先權(數值越大 = 優先權越低,時間片越長)。
  • NI:Nice 值(-20 最高,19 最低)。
  • VIRT/RES/SHR:虛擬/常駐/共享記憶體 (KB)。
  • S:R 運行、S 睡眠、D 不可中斷睡眠(通常卡 I/O)、Z 僵屍、T 停止/追蹤。
  • 熱鍵:1 顯示每核 CPU、M 按記憶體排序、P 按 CPU 排序、c 顯示完整命令列、k 殺進程。

6. uptime / w —— 一秒掌握系統負載

uptime
# 14:32:11 up 46 days, 8:02, 2 users, load average: 0.25, 0.37, 0.38
  • load average:可運行佇列平均長度(含運行中 + 等待 CPU + 等待 I/O 的不可中斷睡眠進程)。
  • 判讀:load > 核心數 × 0.7 需關注;> 核心數 明顯擁塞;> 核心數 × 2 嚴重過載。

三、實戰排查決策樹

  1. 系統響應慢 → uptime 看負載 → 高則 top 找熱進程 → vmstat 1 看 r/cs/si/so → 定 CPU/記憶體/鎖/換頁。
  2. CPU 高但業務不忙 → mpstat -P ALL 看單核/軟中斷/Steal → perf top 定函數熱點。
  3. 磁碟 I/O 擁塞 → iostat -x 1 看 %util/await/svctm → pidstat -d 1 或 iotop 定進程 → 檢查應用寫入模式/索引/RAID 卡快取策略。
  4. 記憶體不足 → free -h/vmstat 看 si/so → top -o %MEM 找大戶 → 分析記憶體洩漏/快取佔用/巨型頁配置。

四、持久化監控建議

  • 部署 sysstat(含 sadc)+ cron 10 分鐘採集,保留 30 天以上。
  • 關鍵指標接入 Prometheus + Grafana:node_exporter 暴露 cpu/mem/disk/net 全維度指標。
  • 告規則:load1 > cores*1.5、iowait > 20%、disk_util > 85%、mem_available < 10%、context_switches > 20000/s。

熟練掌握這六大工具的指標語義、輸出判讀與聯動排查,你就擁有了「X 光眼」般的 Linux 效能診斷能力——從現象到根因,從單機到叢集,數據說話,調優有據。

Copyright © Windows教程網 All Rights Reserved