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

您的位置: 首页 > 文章列表 > 系统应用 > Linux怎么查看CPU每个核心的占用率 Linux下mpstat命令详解

Linux怎么查看CPU每个核心的占用率 Linux下mpstat命令详解

  发布于2026-05-21 阅读(0)

扫一扫,手机访问

想实时看清Linux系统里每个CPU核心的“心跳”吗?这事儿其实没想象中那么复杂。市面上工具不少,但选哪个,完全取决于你想看什么、在什么场景下看。简单来说,想一眼扫过所有核心的实时负载,用top按个键就行;需要导出数据做分析,或者深挖I/O等待这类细分指标,就得请出mpstat;至于要写监控脚本、追求纳秒级精度,那还得回归最底层的/proc/stat

Linux怎么查看CPU每个核心的占用率 Linux下mpstat命令详解

为什么 top1 是第一选择

先说结论:对于绝大多数“看一眼”的需求,top命令按数字键1,是最高效、最直接的选择。原因很简单,它几乎预装在所有Linux发行版里,开箱即用。按下主键盘区(注意,不是小键盘)的数字1后,top界面顶部会立刻展开,显示%Cpu0%Cpu1……每一行对应一个逻辑CPU核心(包括超线程虚拟出来的核心)。这个数值是核心当前的总占用率,综合了用户态、系统态、软中断等所有非空闲时间,刷新快、延迟低,非常适合用来快速定位是哪个核心突然“压力山大”。

不过,这里有几个新手常踩的坑:

  • 按错键:必须使用主键盘上方的数字行,按小键盘的1是无效的。
  • 看错行:默认只显示一行%Cpu(s),那是所有核心的平均值,会掩盖单个核心负载不均的问题,必须按1展开。
  • 用错模式:在批处理模式(比如top -b -n 1)下运行top,按键交互是失效的,自然也无法展开核心视图。

mpstat -P ALL 的真实用途和参数陷阱

别把mpstat当成一个“更高级的top”,它的定位其实是统计分析工具。关键区别在于,mpstat输出的不是瞬时值,而是采样周期内的平均值。默认情况下,它只显示所有核心的聚合数据,必须加上-P ALL参数,才能看到每个核心的明细。

几个实用的参数组合和常见错误:

  • mpstat -P ALL 1 1:每秒采样一次,只输出一次结果,适合在脚本里抓取一个快照。
  • mpstat -P ALL 2:每2秒采样并输出一次,会持续运行直到你按Ctrl+C中断。
  • 易错点:漏写-P,直接敲mpstat ALL会报错;在部分新版本中,误用小写-p也可能不被识别,务必用大写-P

它的输出字段很有价值,尤其是%usr(用户态)、%sys(系统态)、%iowait(I/O等待)和%idle(空闲)。举个例子,如果发现某个核心的%iowait长期高于20%,那基本可以判断它的瓶颈不在计算,而是在等待磁盘或网络I/O。

什么时候必须用 /proc/stat 解析

当你需要将监控嵌入自动化脚本、告警系统,或者追求极限精度时,mpstat的采样间隔和格式化输出反而成了累赘。这时,就该直接读取内核暴露的原始数据:/proc/stat文件。

这个文件里的每一行cpuN后面,跟着10个数字,分别代表该核心在各种状态下的累计“jiffies”(通常一个jiffy是0.01秒)。想快速瞅一眼各核心的空闲情况?可以这么看:

grep '^cpu[0-9]' /proc/stat | head -5

输出会类似这样:

cpu0 123456 123 45678 987654 0 123 456 0 0 0
cpu1 123400 110 45600 987700 0 110 440 0 0 0

其中,第5个字段(例如上面的987654和987700)就是idle时间的累计值。计算使用率的经典方法,就是读取两次,用第二次的idle差值除以总时间的差值,从而得出精确的CPU利用率。这才是最底层、最可控的方式。

说到底,没有哪个命令是万能的。top胜在实时直观,mpstat强在统计分析,/proc/stat则是所有数据的源头。另外,还有一个容易忽略的细节:在支持超线程的系统里,cpu0cpu1可能属于同一个物理核心。要理清物理核心和逻辑核心的对应关系,还得借助lscpu或者查看/sys/devices/system/cpu/cpu*/topology/core_id这样的系统文件。

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

热门关注