判断cpu负载均衡需分析各核实际使用率差异而非平均负载;用sar -p all查看单核指标,识别持续单点过载或空闲等失衡模式,并结合历史sa日志回溯异常时段。

要分析每个 CPU 核心的负载均衡度,关键不是看平均负载(ldavg-5),而是直接对比各核心在相同时间段内的实际使用率差异。sar 本身不计算“均衡度”指标,但能提供足够原始数据供你判断是否失衡。
确认系统支持 per-CPU 采集
需确保 sysstat 已启用且内核支持多核统计:
- 运行
sar -P ALL 1 1,若输出中包含CPU0、CPU1等多行,说明支持;若只显示all,可能是旧版 sysstat 或内核未开启 SMP 统计 - 检查 sysstat 版本:
sar -V,建议 ≥ 12.0.0(较新发行版默认满足)
实时查看各核 CPU 使用率
用 -P 选项指定核心,或用 ALL 一次性列出全部:
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
-
sar -P ALL 2 5:每 2 秒采样一次,共 5 次,显示所有核心的 %user、%system、%iowait、%idle 等 -
sar -P 0,2,4 1 10:只监控 CPU0、CPU2、CPU4,适合排查特定核异常 - 注意:
-P ALL输出中all行是加权平均值,不能替代单核观察
识别负载不均衡的典型模式
均衡 ≠ 各核数值完全相等,而是无持续性单点过载或长期空闲:
- 某核 %idle 长期 60% → 明显不均,可能因进程绑核(taskset)、中断集中(如网卡 IRQ 只打到 CPU0)或调度器异常
- 某核 %iowait 持续 > 30%,其余核接近 0 → IO 密集型任务未分散,需检查进程分布和磁盘队列绑定
- 所有核 %user 波动同步,但幅度差 > 2×(如 CPU0 峰值 80%,CPU3 峰值仅 25%)→ 应用线程未充分利用多核,可能是单线程设计或锁竞争导致
结合历史日志回溯不均衡时段
若问题偶发,需查归档日志定位时间点:
- 查当日 sa 文件:
ls /var/log/sysstat/sa$(date +%d) - 提取各核 5 分钟负载峰值:
sar -P ALL -f /var/log/sysstat/sa25 | awk '$1 ~ /^[0-9]/ && $2 ~ /CPU[0-9]+/ {print $2, $4}' | sort -k2,2nr | head -10 - 交叉验证:同一时段运行
sar -q -f /var/log/sysstat/sa25,若runq-sz高但各核 idle 差异大,说明调度层未能有效分发任务










