按数字键1可切换top为每核模式,显示%Cpu0、%Cpu1等各行数据,对应各逻辑CPU核心实时使用率,需用主键盘上方数字1而非小键盘。

启动top后按1键才能看到每个CPU核心的使用率
top默认只显示所有核心的平均值,比如4核机器上单个进程跑满1核,%Cpu(s)可能只显示25%,容易误判系统负载不高。必须手动触发“每核模式”:运行top后,直接按键盘主区域上方的数字1(不是小键盘区的1),界面立刻刷新为%Cpu0、%Cpu1等多行数据,每行对应一个逻辑CPU(含超线程)。
常见错误现象:top -1或top --per-cpu会报错——这些不是合法参数;也有人误按小键盘1没反应,实际必须用主键盘数字区。
- 按
1后,第三行下方会出现类似%Cpu0 : 98.7 us, 1.3 sy的明细 - 此时再按
P排序,仍是按所有核加总后的%CPU值排,不是单核峰值 - 退出每核模式?没有快捷键,只能重启
top或按q退出重进
为什么us+sy之和不等于100%减去id
%Cpu0行里us(用户态)和sy(内核态)加起来,通常不等于100% - id,因为还有其他非空闲时间成分参与分配:
-
wa:I/O等待,CPU在等磁盘/网络,不算真正计算时间 -
hi/si:硬中断/软中断处理,属于内核工作但单独统计 -
st:虚拟机环境下被宿主机“偷走”的时间
所以真实计算负载 ≈ us + sy,而100% - id是总忙时长(含等待、中断等)。如果wa长期高于5%,说明I/O成了瓶颈,不是CPU不够用。
用命令行参数固化每核视图并导出快照
交互式按1适合排查,但自动化监控或写入日志时,需靠参数组合实现稳定输出:
- 想启动就进入每核模式:目前
top无原生命令行开关,必须交互按1——这是硬限制 - 但可配合
-b(批处理模式)抓取快照:top -b -n 1 | head -20能拿到含%Cpu0等行的数据(前提是之前已手动按过1并保存了配置) - 更可靠的方式是用
mpstat -P ALL 1 1,它原生支持按核输出,且无需交互,适合脚本调用
注意:top的配置(如是否启用每核模式)会保存在~/.toprc里,首次按1后,下次启动自动生效。
对比htop看多核更直观,但依赖额外安装
htop默认顶部就是彩色条形图,每个CPU核心独立显示,用户态/内核态/等待时间用不同颜色区分,一眼就能看出哪一核飙高、是否均衡。但它不是系统自带工具:
- Ubuntu/Debian:
sudo apt install htop - CentOS/RHEL 8+:
sudo dnf install htop(需启用EPEL源) - 启动后按
F2→Display options可开启“Show CPU average”关闭汇总行,专注单核细节
不过htop不能替代top -b做自动化采集,它的输出是面向终端渲染的,解析结构化数据不如mpstat或/proc/stat直接。
真正麻烦的是:每核模式一旦开启,top就记住了这个状态,后续所有top调用都会默认展开——除非你手动删掉~/.toprc里的States段。很多人不知道这个配置文件存在,导致在脚本里调用top -b -n 1时意外拿到多行CPU数据,解析失败。











