Linux CPU瓶颈排查神器!mpstat命令超全详解|多核CPU精准监控

📅 2026/7/3 3:48:40
Linux CPU瓶颈排查神器!mpstat命令超全详解|多核CPU精准监控
1. 命令简介mpstat 命令是 sysstat 工具集的一部分用于实时监控多处理器多核CPU系统中各个CPU核心的利用率统计信息。它能够清晰地展示用户态、内核态、I/O等待、中断处理等不同维度的CPU时间分配情况是进行系统性能分析、定位CPU瓶颈和负载均衡问题的重要工具。2. 语法格式mpstat [选项] [间隔时间 [次数]]参数说明间隔时间指定每次统计报告之间的间隔秒数。如果未指定则只输出一次自系统启动以来的平均统计信息。次数指定生成报告的次数。如果指定了间隔时间但未指定次数mpstat 将持续生成报告直到手动中断通常使用 CtrlC。3. 常用选项及说明选项说明-P { cpu | ALL }指定要报告的CPU。cpu 是CPU编号从0开始。使用 ALL 表示报告所有CPU的统计信息包括一个 all 的汇总行。这是最常用的选项之一。-I { SUM | CPU | SCPU | ALL }报告中断统计信息。SUM显示系统总中断速率。CPU显示每个CPU每秒接收的中断数量。SCPU显示每个CPU的软中断统计信息需要内核2.6.31。ALL显示以上所有信息。-u报告CPU利用率默认选项。即使不指定输出也是CPU利用率信息。-V显示 sysstat 工具的版本信息并退出。-o JSON以JSON格式输出结果便于脚本解析需要 sysstat 11.7.3 版本。-N { node_list | ALL }在NUMA架构系统中报告指定内存节点的CPU统计信息。node_list 是节点列表如 0,2 或 0-2。ALL 表示所有节点。4. 示例用法显示自系统启动以来的平均CPU利用率所有CPU汇总这是不带任何参数的基本用法显示一个整体的历史平均值。mpstat以2秒为间隔持续监控所有CPU包括每个核心和汇总这是最经典的实时监控用法-P ALL 是关键。mpstat -P ALL 2按 CtrlC 停止。以3秒为间隔共采样5次并显示所有CPU信息命令将输出5次报告并在最后给出这5次采样的平均值。mpstat -P ALL 3 5仅监控特定的CPU核心例如核心0和核心2mpstat -P 0,2 1 3监控系统中断统计信息显示系统全局中断速率。mpstat -I SUM 2显示每个CPU核心的中断数量。mpstat -I CPU 2结合 watch 命令进行动态高亮监控使用 watch 可以刷新屏幕结合 --diff 可以高亮显示变化的部分。watch -n 1 --differencescumulative mpstat -P ALL 1 15. 输出字段含义详解执行 mpstat -P ALL 后常见字段字段含义CPU处理器编号。all 表示所有处理器的统计平均值。%usr在用户级别应用程序执行时发生的CPU利用率百分比。%nice在用户级别用于执行 nice 优先级进程的CPU利用率百分比。%sys在内核级别系统调用、中断处理等执行时发生的CPU利用率百分比。%iowait系统有未完成的磁盘I/O请求时CPU空闲时间的百分比。高值可能表示I/O瓶颈。%irqCPU用于处理硬件中断的时间百分比。%softCPU用于处理软件中断如网络协议栈处理的时间百分比。%steal在虚拟化环境中虚拟CPU等待宿主机CPU服务的时间百分比。非零值表示宿主机资源竞争。%guestCPU运行虚拟机的时间百分比。%gniceCPU运行低优先级nice虚拟机的时间百分比。%idleCPU空闲且系统没有未完成的磁盘I/O请求的时间百分比。6. 注意事项数据来源mpstat 的数据来源于 /proc/stat 文件。其统计的是时间片的占用比例而非CPU的绝对时钟周期。首次采样当指定了间隔时间后第一次报告的数据仍然是自系统启动以来的平均值。从第二次报告开始才是上一个间隔时间内的瞬时或平均数据。%iowait 的解释%iowait 高并不一定意味着磁盘是瓶颈它只表示CPU在那段时间是空闲的并且系统恰好有I/O在进行。需要结合 iostat、iotop 等工具综合判断。%steal 在虚拟化环境如果虚拟机的 %steal 值持续较高表明宿主机物理CPU资源紧张该虚拟机正在与其他虚拟机竞争CPU时间。安装大多数Linux发行版默认不安装 sysstat。您可能需要使用包管理器安装例如Ubuntu/Debian: sudo apt install sysstatCentOS/RHEL/Fedora: sudo yum install sysstat 或 sudo dnf install sysstat版本差异不同版本的 sysstat 工具mpstat 的输出字段可能略有不同例如旧版本可能没有 %guest 和 %gnice 字段。请使用 mpstat -V 查看版本。获取更多Linux学习资料请关注“阿成学长工具包”对话框中输入2647获取