在 Linux 多核性能监控场景下,htop 凭借默认的多核条形图更适合交互式排查,而 top 凭借系统自带和脚本兼容性更适合自动化或最小化环境。
先说结论:htop 默认展示多核条形图更直观,top 需按键切换且默认聚合显示,生产环境建议两者互补使用。
- 适合:日常交互排查选 htop,远程最小化环境或脚本采集选 top
- 重点看:top 按数字键 1 展开多核,htop 直接观察顶部 CPU 条形图
- 别忽略:htop 非系统自带需安装,负载平均值不等于 CPU 使用率
界面差异与多核视图切换
top 是 Linux 系统自带的经典工具,默认为了减少渲染开销,CPU 信息通常聚合显示。htop 基于 ncurses 库开发,默认布局包含每个 CPU 核心的独立条形图。
top 默认聚合视图示例:
%Cpu(s): 12.5 us, 3.2 sy, 0.0 ni, 84.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
此时无法区分具体哪个核心负载高。在 top 界面中按下数字键 1,可展开多核视图:
Cpu0 : 10.0 us, 2.0 sy, 0.0 ni, 88.0 id, 0.0 wa... Cpu1 : 15.0 us, 4.0 sy, 0.0 ni, 81.0 id, 0.0 wa... Cpu2 : 12.0 us, 3.0 sy, 0.0 ni, 85.0 id, 0.0 wa...
htop 默认视图:启动后顶部直接显示多行彩色条形图,每行代表一个逻辑核心,无需额外按键即可观察负载倾斜情况。
高负载场景排查实战案例
当系统 Load Average 过高但 CPU 使用率不高时,需结合多核视图与等待状态排查。
案例现象:top 显示 load average 远高于 CPU 核心数,但 %id (idle) 剩余较多。
排查步骤:
- 在 top 界面观察 %wa (iowait) 数值。若 %wa 较高(如超过 30%),说明瓶颈在磁盘 I/O 而非 CPU 计算。
- 按下数字键 1 查看多核状态,确认是否所有核心均存在等待。
- 按 Shift+M 按内存排序,或按 Shift+P 按 CPU 排序,定位具体进程。
典型输出特征:
%Cpu(s): 5.0 us, 2.0 sy, 0.0 ni, 60.0 id, 33.0 wa...
此时应优先排查磁盘性能或进程 I/O 行为,而非单纯增加 CPU 资源。
生产环境选型与性能开销
性能开销:top 作为内核态信息的直接读取工具,开销极低。htop 由于丰富的 UI 渲染和 ncurses 库依赖,在极低配容器或高频调用场景下开销略高于 top,但在现代服务器上差异可忽略。
NUMA 架构注意:在 NUMA 架构服务器上,htop 默认可能未按 NUMA 节点分组显示。若需精细排查 NUMA 绑定问题,建议结合 numactl 或 perf 工具,top/htop 仅作为初步负载分布参考。
脚本与自动化:若需编写监控脚本,请使用 top -b -n 1 批处理模式。htop 主要用于人工交互,其输出格式不易被脚本解析。在最小化安装环境(如 Docker 基础镜像),请确保掌握 top 按 1 键切换多核视图的技巧,以防 htop 不可用。
安装提示:htop 非预装工具,Ubuntu/Debian 使用 sudo apt install htop,CentOS/RHEL 使用 sudo yum install htop。
原文链接:https://www.zjcp.cc/ask/10889.html
