linux无内置“负载平衡实时走势”指标,需用vmstat或sar采样后可视化;load average是三个加权均值,非瞬时值,真正反映当前排队压力的是vmstat的r列或/proc/stat的procs_running。

Linux没有“负载平衡实时走势”这个标准指标
很多人搜“负载平衡实时走势”,其实是想看 load average 随时间变化的曲线。但必须先明确:Linux 内核不提供内置的实时绘图功能,load average 本身是三个标量(1/5/15 分钟均值),不是连续流数据;所谓“走势”需靠外部工具采样+可视化,不能直接用 top 或 uptime 画出来。
用 vmstat 或 sar 每秒采样再导出数据
这是最轻量、最可靠的做法,避免依赖图形界面或第三方服务:
-
vmstat 1每秒输出一行,其中r列(就绪进程数)比 load average 更贴近“瞬时排队压力”,适合做趋势基线 -
sar -q 1 60(需先sudo apt install sysstat)可稳定采集 60 秒的runq-sz(运行队列长度)和plist-sz(总进程数),输出格式统一、易解析 - 别用
top -b -n 60:输出含 ANSI 控制符、列宽随终端变化,awk解析极易出错 - 示例采集命令:
sar -q 1 60 | awk 'NR>3 && NF==6 {print $1","$2}' > load_trend.csv
用 htop 或 glances 看近似实时滚动图
它们不画数学意义上的“走势”,但能通过柱状图/折线模拟短期趋势,适合快速肉眼判断:
-
htop启动后按F2→ “Display options” → 勾选 “Show CPU time” 和 “CPU meter type: bar” → 右上角会出现 CPU 负载滚动条(注意:这仍是单次快照平均,非 load average) -
glances(pip install glances)启动后按l切换到负载视图,顶部有三段横向进度条,分别对应 1/5/15 分钟 load,刷新频率约 2 秒 —— 它本质是轮询/proc/loadavg,视觉上更接近“走势” - 两者都不保存历史,退出即丢数据;若需存档,必须配合日志重定向或插件(如 glances 的
--export-csv)
脚本化绘图要绕开 load average 的语义陷阱
很多用户用 awk '{print $1}' /proc/loadavg 循环写入文件再 gnuplot 绘图,结果发现曲线“不合理”——因为 1 分钟 load 是指数衰减加权均值,不是当前秒的真实队列长度:
- 真正反映“此刻有多少进程在等 CPU”的字段是
vmstat的r列或/proc/stat的procs_running - 如果硬要画 load average,建议同时采集
nproc输出值,在图中标出“警戒线”(如 4 核机器标 4.0),否则数值孤立无意义 - 一个常见坑:
watch -n 1 'cat /proc/loadavg | awk "{print \$1}"'看起来像实时流,实则每秒都在读同一个滑动窗口的起点,无法体现变化速率
真正要盯的不是“走势是否平滑”,而是 5 分钟值是否持续高于逻辑核数、以及 %wa 是否同步升高——这两者组合才能判断是 CPU 瓶颈还是 I/O 卡顿。图形只是辅助,数据语义不能错。











