商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 系统应用 > Linux怎么查看每核心空闲率分布

Linux怎么查看每核心空闲率分布

  发布于2026-08-15 阅读(0)

扫一扫,手机访问

运行 top 之后,直接按主键盘上的数字 1,就能看到各个 CPU 核心的实时空闲率。比如 %Cpu0 这一行末尾的 id 值如果是 99.7,就说明 CPU0 当前大约有 99.7% 处于空闲状态;而 mpstat -P ALL 1 1 给出的,则是每个核心在这一个采样周期内的平均 %idle。再看 /proc/stat,cpuN 对应行里的第 5 个字段就是 idle 时间,不过这里不能直接拿来当使用率看,必须做两次采样、再通过差值计算,才能得到更真实的 CPU 使用情况。还要特别注意一点:%idle 高,并不意味着系统就一定没有瓶颈,还得把 %iowait、%st 以及进程状态放在一起综合判断。

Linux怎么查看每核心空闲率分布

top 按 1 看各核空闲率最直接

直接运行 top,按主键盘上方的数字 1(不是小键盘),顶部立刻显示 %Cpu0%Cpu1 等多行——每行末尾的 id 值就是该核当前空闲率。比如 %Cpu0 :0.0 us,0.3 sy,0.0 ni, 99.7 id,说明 CPU0 当前空闲 99.7%。

常见误操作:

  • 误按小键盘 1:无响应,必须用主键盘数字行
  • 看到第一行 %Cpu(s) 就停住:那是所有核平均值,掩盖单核卡死或空闲不均
  • top -b -n 1 非交互模式下按 1:无效,-b 模式不支持按键切换

mpstat -P ALL 输出带 %idle 的精确统计

mpstat 不是看瞬时值,而是采样周期内的平均空闲率,适合验证是否长期不均衡。关键命令是:

mpstat -P ALL 1 1:每秒采一次,只取 1 次快照,输出每核的 %idle 字段

mpstat -P ALL 2:每 2 秒刷新一次,持续输出(需 Ctrl+C 中断)

注意参数陷阱:

  • 漏掉 -P 写成 mpstat ALL:报错 Unknown option 'A'
  • 写成 mpstat -p ALL(小写 p):旧版可能兼容,但新 sysstat 要求大写 -P
  • %idle 高 ≠ 无瓶颈:如果某核 %iowait 同时也高(比如 >20%),说明它在等磁盘,不是真“空闲”

/proc/stat 解析能算出任意精度的空闲率差值

当你要写监控脚本、做告警、或需要比 mpstat 更细的时间分辨率时,/proc/stat 是唯一可靠源头。每行 cpuN 后第 5 个字段是 idle 时间(单位 jiffies,通常 1 jiffy = 0.01 秒)。

快速比对两时刻空闲程度:

grep '^cpu[0-9]' /proc/stat → 记下各核第 5 列数值 → 等几秒再执行一次 → 差值大的核更空闲

真实使用率计算公式是:(total_jiffies_diff - idle_jiffies_diff) / total_jiffies_diff * 100%。别直接信 idle 绝对值,必须用两次读数的差值。

容易忽略的点:

  • /proc/statcpu 行是所有核总和,cpu0cpu1 才是单核,别混用
  • 字段顺序固定但易数错:user、nice、system、idle、iowait……第 5 个才是 idle,不是第 4 个
  • 不同内核版本字段数可能不同(如含 guest 字段),稳妥做法是用 awk 提取第 5 列:awk '/^cpu[0-9]/ {print $5}' /proc/stat

别把 idle 当成“剩余资源”的唯一指标

空闲率高不代表系统健康。比如:

  • 某核 %idle 95%,但 %iowait 也 80%:它在等 I/O,实际已卡住
  • 所有核 %idle 都高,但 load a verage 却飙升:可能是不可中断睡眠进程(D 状态)在阻塞,top 里看 SD 状态进程
  • 虚拟机里 %st(steal time)高:CPU 时间被宿主机“偷走”,%idle 再高也没用

真正要判断“还剩多少可用 CPU”,得同时看 %idle%iowait%st 和进程状态,不能只盯一个数字。

本文转载于:https://www.php.cn/faq/2987827.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注