Linux系统无原生CPU负载热力图工具,但cpuplayer可实现核心级动态热力图:将各逻辑CPU的%user、%sys、%idle映射为HSV色彩,红表高负载、蓝表空闲、黄绿过渡,实时渲染彩色网格图。

Linux 系统中没有原生的“CPU 负载热力图”工具,但可通过组合命令 + 可视化工具实现真正意义上的核心级负载热力图效果——关键不是找一个叫“热力图”的按钮,而是用合适的数据采集 + 颜色映射方式呈现各逻辑 CPU 的实时负载强度。
直接可用的图形化热力图方案:cpuplayer(专为多核负载三元热力设计)
cpuplayer 是目前最贴近“CPU 核心负载热力图”需求的轻量工具。它把每个逻辑 CPU 的 %user、%sys、%idle 三个维度映射为 HSV 色彩空间,生成动态变化的彩色网格图,视觉上就是一张实时刷新的“热力图”。
- 它不画曲线,也不堆叠条形图,而是为每个 CPU ID 分配一个色块,颜色深浅+色调变化同时反映用户态、系统态、空闲态的占比关系
- 满载时偏红(高 %user 或 %sys),空闲时偏蓝/青(高 %idle),中间状态呈黄/绿过渡,人眼可快速识别热点核与闲置核
使用步骤:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 安装编译:
git clone https://github.com/sparvu/cpuplayer.git→ 按 README 编译(需 GTK+3、Cairo) - 数据采集(推荐每秒一次):
mpstat -P ALL 1 | awk '$2 ~ /^[0-9]+$/ {print systime(), $2, $3, $5, $12}' > cpudata.log - 启动可视化:
./cpuplayer -f cpudata.log
→ 自动解析时间戳、CPU ID、%usr、%sys、%idle,并渲染为带坐标轴和图例的热力网格
替代方案:用 gnuplot 手动绘制静态热力图(适合分析回溯)
若只需离线分析某一时段的负载分布(比如排查毛刺时刻),可导出 mpstat -P ALL 数据后用 gnuplot 绘制二维热力图:
- 横轴:时间点(秒级序列)
- 纵轴:CPU ID(0 到 N-1)
- 颜色深浅:对应
%usr + %sys总和(即活跃度)
示例脚本片段:# 采集30秒数据 mpstat -P ALL 1 30 > mpstat.out # 提取并转为gnuplot兼容格式(CPU, time, load) awk '$2~/^[0-9]+$/ {print $2, NR, $3+$5}' mpstat.out > heatmap.dat # 用gnuplot绘图(需提前写好plot脚本) gnuplot -e "set terminal png; set output 'cpu_heatmap.png'; ..." heatmap.gp
注意:别误用 htop / lstopo 当热力图
-
htop的多核条形图是离散条状,非连续色彩映射,不算热力图 -
lstopo展示的是物理拓扑结构(插槽/核/缓存归属),不是运行时负载强度,不能反映“哪个核此刻最忙”
真正想看“哪一核在什么时刻最烫”,cpuplayer 是目前 Linux 下最匹配的图形化热力图工具。它小而专注,不依赖 X11 复杂环境,输出直观,调试 NUMA 绑核、识别单线程瓶颈、验证负载均衡策略都很有效。

















