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

Sysstat 工具套件核心命令實戰:sar CPU、I/O、記憶體效能分析全解

編輯:關於 Linux

Sysstat 是 Linux 系統效能監控的標準工具箱,核心命令 sar (System Activity Reporter) 能夠採集、報告與儲存 CPU、I/O、記憶體、網路等關鍵指標。本文聚焦 sar -u (CPU) 與 sar -b (I/O) 兩大最高頻使用場景,詳細解讀輸出欄位含義、異常判讀邏輯與實戰排查策略。

一、通用語法與採樣策略

sar [選項] [間隔秒數] [採樣次數]
# 範例:每 1 秒採樣 1 次,共 5 次
sar -u 1 5

最佳實踐:生產環境建議 間隔 ≥ 5 秒、次數 ≥ 60 (持續 5 分鐘) 以平滑瞬間抖動;歷史資料分析可直接讀取 /var/log/sa/saDD 日誌檔(sar -f /var/log/sa/sa15)。

二、CPU 使用率深度解析 (sar -u)

1. 標準輸出範例

Linux 2.6.9-67.ELsmp (stage1-new9.intra99bill.com) 06/12/2012 _x86_64_ (8 CPU)

11:34:43 AM CPU %user %nice %system %iowait %steal %idle
11:34:44 AM all 0.00 0.00 0.00 0.00 0.00 100.00
11:34:45 AM all 0.00 0.00 0.12 0.00 0.00 99.88
11:34:46 AM all 0.00 0.00 0.00 0.00 0.00 100.00
11:34:47 AM all 0.00 0.00 0.12 0.00 0.00 99.88
11:34:48 AM all 0.00 0.00 0.00 0.00 0.00 100.00
Average:     all 0.00 0.00 0.05 0.00 0.00 99.95

2. 欄位語義與異常閾值

欄位含義關注閾值異常成因排查方向
%user用戶態佔比 (應用程式)> 70% 持續計算密集型任務、失控迴圈、GC 頻繁
%nice低優先級用戶態佔比> 10%批次任務佔用、nice 值調度
%system核心態佔比 (系統呼叫、中斷)> 30%頻繁系統呼叫、鎖競爭、驅動問題
%iowait等待 I/O 佔比> 10% 持續磁碟瓶頸、NFS 延遲、Swap 活躍
%steal虛擬化環境被 Hypervisor 佔用> 5%宿主機超售、鄰居佔用、需調整 vCPU 配額
%idle閒置佔比< 10% 持續CPU 飽和、需擴容或優化熱點代碼

3. 關鍵診斷邏輯

  • 高 %iowait + 低 %idle → I/O 子系統瓶頸,檢查 iostat -x、iotop 定位熱點磁碟/進程
  • 高 %idle 但系統響應慢 → 可能等待記憶體分配 (Page Fault)、鎖、網路封包,檢查 vmstat、pidstat
  • %steal 持續偏高 → 雲主機資源爭用,考慮調整實例規格或專用宿主機
  • 多核不均衡:sar -P ALL 1 5 查看各 CPU 核心負載,識別單核熱點 (中斷親和性、單線程應用)

sar CPU 輸出示例

三、I/O 與傳輸速率分析 (sar -b)

1. 標準輸出範例

17:09:07 tps rtps wtps bread/s bwrtn/s
17:09:08 3.12 3.12 0.00 25.00 0.00
17:09:09 89.58 6.25 83.33 141.67 733.33
17:09:10 42.71 9.38 33.33 141.67 600.00
17:09:11 2.11 2.11 0.00 16.84 0.00
17:09:12 1.04 0.00 1.04 0.00 175.00
Average: 27.77 4.18 23.59 65.14 302.30

2. 欄位語義

欄位含義單位
tps每秒 I/O 傳輸總次數 (Read + Write)次/秒
rtps每秒讀取請求次數次/秒
wtps每秒寫入請求次數次/秒
bread/s每秒讀取區塊數塊/秒 (通常 1 塊 = 512 bytes 或 1KB/4KB 視架構)
bwrtn/s每秒寫入區塊數塊/秒

3. 進階關聯分析

  • 結合 sar -d (裝置級):sar -d -p 1 5 顯示每個磁碟裝置的 %util、await、svctm,定位具體熱點裝置
  • 換頁活動 (sar -B):pgpgin/s、pgpgout/s、fault/s 反映記憶體壓力導致的 I/O
  • 網路 I/O (sar -n DEV):區分磁碟與網路瓶頸

四、持久化採集與報表自動化

1. 啟用 sysstat 服務

systemctl enable --now sysstat
# 或 SysV: chkconfig sysstat on && service sysstat start

預設每 10 分鐘採樣一次,資料存放於 /var/log/sa/saDD (二進制) 與 /var/log/sa/sarDD (文本摘要)。

2. 歷史報表生成

# 查看指定日期完整報表
sar -f /var/log/sa/sa15 -u -b -r -n DEV

# 生成 CSV 供圖表分析
sar -f /var/log/sa/sa15 -u -b -r | sadf -d > sar_20240115.csv

3. 異常告警腳本雛形

#!/bin/bash
# 每 5 分鐘檢查 CPU idle < 10% 或 iowait > 20%
sar 1 3 --iface=lo | awk '/Average:/ && $NF < 10 || $(NF-1) > 20 { 
    system("logger -t SAR_ALERT \"CPU 异常: idle=\"$NF\" iowait=\"$(NF-1)} 
}'

掌握 sar -u/-b 欄位語義與異常判讀邏輯,結合持久化採集與關聯工具 (iostat、pidstat、vmstat),即可建立從現象感知到根因定位的系統效能分析閉環。

Copyright © Windows教程網 All Rights Reserved