如何通过CPUInfo了解系统负载
导读:用 CPUInfo 判断系统负载的正确方式 核心概念与 CPUInfo 的作用 CPUInfo(/proc/cpuinfo、lscpu)提供的是CPU的型号、频率、缓存、物理核心数、逻辑处理器数等“能力”信息;而系统负载(load ave...
用 CPUInfo 判断系统负载的正确方式
核心概念与 CPUInfo 的作用
- CPUInfo(/proc/cpuinfo、lscpu)提供的是CPU的型号、频率、缓存、物理核心数、逻辑处理器数等“能力”信息;而系统负载(load average)是1/5/15分钟内处于可运行或不可中断状态的平均进程数,反映“繁忙程度”。判断负载是否过高,需要把“负载值”与“CPU处理能力(逻辑CPU数)”对照来看,CPUInfo正是用来获取这个“对照基准”的。另需注意:负载≠CPU使用率,高负载也可能由I/O等待引起,而非CPU算力不足。
从 CPUInfo 获取对照基准
- 查看逻辑CPU数(决定负载对比阈值):
grep -c ^processor /proc/cpuinfo - 查看物理CPU个数:
grep "physical id" /proc/cpuinfo | sort -u | wc -l - 查看每颗物理CPU的核心数:
grep "cpu cores" /proc/cpuinfo | uniq - 辅助工具:
lscpu(更直观展示架构、核心/线程、NUMA等) - 计算关系:总逻辑CPU数 = 物理CPU个数 × 每颗核心数 × 超线程数(若支持)。示例:若逻辑CPU为8,则负载在1/5/15分钟的平均值通常不应长期超过8(偶尔峰值可接受)。
结合负载数据做判断
- 获取负载:
uptime、w、cat /proc/loadavg或top首行,关注三个值:1分钟、5分钟、15分钟负载。 - 快速判定:
- 负载 ≈ 逻辑CPU数:CPU基本吃满;
- 负载 > 逻辑CPU数:存在排队,需结合其他指标定位瓶颈;
- 趋势更重要:1分钟 > 5分钟 > 15分钟表示负载在上升,反之在缓解。
- 注意:单看“CPU使用率”不足以解释高负载,还需看I/O等待等因素(见下一节)。
定位高负载的配套命令
- 整体资源与队列:
vmstat 1(关注r运行队列、b阻塞、si/so换入换出、wa I/O等待) - 进程级占用:
top/htop(按P按CPU排序,观察us、sy、wa) - 每核使用率:
mpstat -P ALL 1(来自 sysstat,识别单核瓶颈) - 历史负载:
sar -q或查看/var/log/sa/sa??(需安装并启用 sysstat) - 磁盘I/O:
iostat -x 1(关注**%util**、await,判断是否I/O瓶颈) - 频率与电源管理:
watch -n 1 "cat /proc/cpuinfo | grep 'cpu MHz'",以及/sys/devices/system/cpu/cpu*/cpufreq/scaling_governor(如 powersave/performance)。
快速排障流程
- 用 CPUInfo 拿到逻辑CPU数(对比阈值)。
- 读取1/5/15分钟负载,判断是否超过逻辑CPU并观察趋势。
- 若负载高:
top看us/sy/wa;wa高→看iostat与磁盘;vmstat看r/b与si/so;mpstat -P ALL检查是否单核饱和;- 必要时用
sar -q回溯历史。
- 若负载不高但响应慢:优先排查I/O、内存、网络等非CPU因素。
- 优化方向:优化慢查询/线程池、减少锁竞争、做缓存/异步、升级磁盘/网络或扩容CPU(按瓶颈施策)。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 如何通过CPUInfo了解系统负载
本文地址: https://pptw.com/jishu/788610.html
