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)。
sar -u)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
| 欄位 | 含義 | 關注閾值 | 異常成因排查方向 |
|---|---|---|---|
%user | 用戶態佔比 (應用程式) | > 70% 持續 | 計算密集型任務、失控迴圈、GC 頻繁 |
%nice | 低優先級用戶態佔比 | > 10% | 批次任務佔用、nice 值調度 |
%system | 核心態佔比 (系統呼叫、中斷) | > 30% | 頻繁系統呼叫、鎖競爭、驅動問題 |
%iowait | 等待 I/O 佔比 | > 10% 持續 | 磁碟瓶頸、NFS 延遲、Swap 活躍 |
%steal | 虛擬化環境被 Hypervisor 佔用 | > 5% | 宿主機超售、鄰居佔用、需調整 vCPU 配額 |
%idle | 閒置佔比 | < 10% 持續 | CPU 飽和、需擴容或優化熱點代碼 |
iostat -x、iotop 定位熱點磁碟/進程vmstat、pidstatsar -P ALL 1 5 查看各 CPU 核心負載,識別單核熱點 (中斷親和性、單線程應用)
sar -b)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
| 欄位 | 含義 | 單位 |
|---|---|---|
tps | 每秒 I/O 傳輸總次數 (Read + Write) | 次/秒 |
rtps | 每秒讀取請求次數 | 次/秒 |
wtps | 每秒寫入請求次數 | 次/秒 |
bread/s | 每秒讀取區塊數 | 塊/秒 (通常 1 塊 = 512 bytes 或 1KB/4KB 視架構) |
bwrtn/s | 每秒寫入區塊數 | 塊/秒 |
sar -d (裝置級):sar -d -p 1 5 顯示每個磁碟裝置的 %util、await、svctm,定位具體熱點裝置sar -B):pgpgin/s、pgpgout/s、fault/s 反映記憶體壓力導致的 I/Osar -n DEV):區分磁碟與網路瓶頸systemctl enable --now sysstat
# 或 SysV: chkconfig sysstat on && service sysstat start
預設每 10 分鐘採樣一次,資料存放於 /var/log/sa/saDD (二進制) 與 /var/log/sa/sarDD (文本摘要)。
# 查看指定日期完整報表
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
#!/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),即可建立從現象感知到根因定位的系統效能分析閉環。