top按主键盘1键是最快最稳的实时单核占用查看方式,显示%Cpu0、%Cpu1等瞬时总占用率;mpstat需-P ALL才展开每核统计;/proc/stat是脚本解析唯一可靠源头;htop适合人眼扫视但不适合告警。

top 按 1 是最快最稳的实时查看方式
几乎所有 Linux 发行版都预装 top,不需要额外安装,按主键盘数字键 1(不是小键盘)后立刻显示每个逻辑核的当前占用率,比如 %Cpu0、%Cpu1 等。这个值是瞬时总占用(user + system + softirq + irq),不含 idle,刷新快、延迟低,适合快速判断哪颗核突然飙高。
常见踩坑点:
- 误按小键盘的
1:无效,必须用主键盘上方数字行 - 看到
%Cpu(s)就停住:那是所有核的加权平均值,会掩盖单核不均衡问题 - 在非交互模式下运行
top -b -n 1后再按1:不生效,-b模式根本不响应按键
mpstat -P ALL 才能真正展开每核统计
mpstat 不是“高级版 top”,它是面向采样统计的工具,默认只输出聚合值。要看到每核数据,必须加 -P ALL(注意大写 P,小写 -p 在新版 sysstat 中已弃用或行为不一致)。
常用组合:
-
mpstat -P ALL 1 1:采样一次,适合脚本取快照 -
mpstat -P ALL 2:每 2 秒刷新,持续输出(需手动Ctrl+C停止) -
mpstat -P 0,2 1 3:只监控 CPU 0 和 CPU 2,共采样 3 次
输出中重点看 %usr、%sys、%iowait、%idle。如果某核 %iowait 长期 >20%,说明它卡在 I/O 上,和计算负载无关——这时候查磁盘比查进程更有效。
/proc/stat 是脚本解析唯一可靠源头
当你要写监控告警脚本、嵌入到运维平台、或需要精确到 jiffies 级别的差值计算时,mpstat 的格式和采样间隔反而成了干扰。直接读 /proc/stat 才是最底层、最可控的方式。
关键事实:
- 每行以
cpuN开头(N 从 0 开始),后面 10 个数字是该核在各状态下的累计 jiffies(通常 1 jiffy = 0.01 秒) - 第 5 个字段是
idle时间,两次读取差值除以总差值,就是该核真实使用率 - 超线程带来的逻辑核编号顺序不等于物理排列,
/proc/stat给出的就是内核调度视角的真实编号
快速验证命令:grep '^cpu[0-9]' /proc/stat | head -5,看到的 cpu0、cpu1… 就是你在 top 或 mpstat 里看到的编号,别指望它们和物理插槽顺序一致。
别被 htop 的彩色条形图带偏节奏
htop 默认顶部就显示各核条形图,看起来直观,但它本质仍是基于 /proc/stat 或 sysfs 的封装,刷新频率和精度受其内部实现限制。它适合人眼快速扫视,但不适合做阈值告警或性能归因。
容易忽略的细节:
- 默认排序是按 PID,不是 CPU%,要按
F6→ 选P_CPU_PERCENT才能定位高占用进程 - 它不显示
%iowait这类细分指标,无法区分是计算瓶颈还是 I/O 卡顿 - 部分旧版本
htop在 NUMA 多路系统上可能错误合并逻辑核,导致条形图失真
真正难的是理解“逻辑核编号”背后的意义——它由内核调度器分配,受超线程、CPU 热插拔、cpuset 限制影响,同一台机器重启后编号可能变化。盯住编号本身不如盯住行为模式。


















