要检查历史CPU峰值需先确认sysstat服务活跃及日志文件存在,再用sar提取100−%idle最高值,结合时间戳、时段筛选、I/O等待和单核负载等多维分析定位真实瓶颈。

要检查历史 CPU 峰值数据,核心是读取 sysstat 保存的二进制日志,并从中提取最高负载时刻——不是看单次采样最大值,而是识别“持续高忙”的真实峰值段。
确认昨日日志文件是否存在
昨天是 10 月 8 日,对应日志文件为 /var/log/sa/sa08(注意:部分系统路径可能是 /var/log/sysstat/sa08)。先验证文件是否生成:
- 运行 ls -l /var/log/sa/sa08,若提示“没有那个文件”,说明 sysstat 未采集或已轮转清除
- 检查服务状态:systemctl is-active sysstat 应返回 active;若非 active,需启用:sudo systemctl enable --now sysstat
- 默认保留 7 天,超过则自动删除。如需长期存档,可调整 /etc/sysconfig/sysstat 中的 HISTORY=30
提取单日 CPU 最高忙碌度(推荐方法)
真正反映压力的是 100 − %idle,而非 %user 或 %system 单独数值。执行以下命令可快速获得昨日 CPU 忙碌率最高点:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- sar -f /var/log/sa/sa08 -u | awk '$1 ~ /^[0-9]/ {print 100-$6}' | sort -n | tail -1
- 输出结果如 98.3,表示昨日某次采样中 CPU 忙碌率达 98.3%
- 若想同时看到时间戳,改用:sar -f /var/log/sa/sa08 -u | awk '$1 ~ /^[0-9]/ {print $1, 100-$6}' | sort -k2 -n | tail -1
跨多日对比峰值趋势
排查周期性高峰时,可批量扫描近几天数据。例如查 10 月 3 日至 10 月 8 日每日最高忙碌度:
- for d in $(seq -w 03 08); do echo "10月$d:"; sar -f /var/log/sa/sa$d -u | awk '$1 ~ /^[0-9]/ {print 100-$6}' | sort -n | tail -1; done
- 输出类似:10月05: 92.1、10月08: 97.6,便于定位异常上升日
- 配合业务日志,可确认是否与定时任务、发布窗口或流量高峰吻合
定位峰值发生的具体时刻与原因
光有数值不够,还需结合上下文判断是否真有问题:
- 加 -s 和 -e 限定时间段,缩小范围:sar -f /var/log/sa/sa08 -u -s 14:00:00 -e 15:00:00
- 若 %iowait 同步偏高(>20%),说明 CPU 在等磁盘,需查 sar -d -f /var/log/sa/sa08 看 await 是否超标
- 怀疑单核瓶颈?加 -P ALL 查各核差异:sar -P ALL -f /var/log/sa/sa08 -u | grep '^[0-9]'

















