ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

mpstat 命令详解:Linux 多核 CPU 性能监控与排查实战

mpstat 命令详解:Linux 多核 CPU 性能监控与排查实战 文档教程【免费下载链接】linux-commandLinux命令大全搜索工具内容包含Linux命令手册、详解、学习、搜集。https://git.io/linux项目地址https://gitcode.com/GitHub_Trending/linux/linux-command点击查看免费下载本篇技术指南以 mpstat 命令手册 为核心系统讲解 Linux 下最常用的多 CPU 状态监控工具mpstat的语法、参数、输出字段含义与典型用法。通过学习本文你将掌握如何查看系统整体与单个 CPU 核心的使用率、定位 I/O 等待与中断开销、识别虚拟化环境中的资源抢占steal并能结合压力测试判断当前系统负载的真实来源为容量评估与性能调优提供第一手数据。命令概述面向多 CPU 环境的 CPU 状态查看器mpstatMulti-Processor Statistics是 Linux 下专门面向多 CPU 环境的状态监控命令主要用于查看系统中每个可用 CPU 的运行状态信息。这些状态数据来源于内核维护的/proc/stat文件——Linux 内核会持续统计每个 CPU 在用户态、内核态、中断处理等各类状态上花费的时间mpstat读取并格式化这些计数器后以百分比形式输出。与vmstat、iostat一样mpstat也属于 sysstat 性能分析工具族。在多点群集、双核甚至几十核的高性能服务器上使用mpstat不仅可以查看所有 CPU 的平均状况还能精确查看某一个特定 CPU的信息从而判断负载是均匀分布在整个系统上还是集中在某个或某几个核心上——这是定位多线程程序扩展性问题的关键手段。安装前提mpstat包含在sysstat软件包中。若系统中尚未安装可参照同仓库的 iostat 文档 中给出的安装方式# RedHat / CentOS / Fedora yum install sysstat # Debian / Ubuntu / Linux Mint sudo apt-get install sysstat安装完成后执行mpstat即可开始监控。语法与参数详解语法格式mpstat [选项] [间隔时间 [次数]]选项-P指定 CPU 编号。-P是mpstat最核心的选项取值方式如下-P ALL显示所有 CPU 的统计数据输出中all行表示全局平均值随后每一行对应一个 CPU 核心编号从 0 开始-P 0、-P 1等仅显示指定编号 CPU 的统计数据适合单独观察某个核心不带-P默认仅输出所有 CPU 的平均状态all行。参数间隔时间每次报告的时间间隔单位为秒次数显示报告的总次数。当间隔时间和次数均省略时mpstat输出的是系统从启动以来的累计平均值只有加上间隔时间才能观察到某一段时间内 CPU 的实时使用情况。输出表头字段含义mpstat输出的每一行对应一个采样周期的 CPU 状态各百分比字段含义如下字段含义%user处理用户进程所使用 CPU 的百分比%nice在用户级别处理经 nice 降级的程序所使用 CPU 的百分比%system内核进程使用的 CPU 百分比%iowait等待进行 I/O 所占用 CPU 时间的百分比%irq用于处理系统中断硬中断的 CPU 百分比%soft用于处理软件中断的 CPU 百分比%steal在管理程序Hypervisor为另一个虚拟处理器服务时虚拟的一个或多个 CPU 在非自愿等待中花费的时间百分比%guest一个或多个 CPU 在运行虚拟处理器客户机时所花费的时间百分比%gnice一个或多个 CPU 在运行经 nice 降级后的虚拟处理器时所花费的时间百分比%idleCPU 的空闲时间百分比实际输出的表头中%user会显示为%usr%system显示为%sys。解读时需注意%iowait 高说明 CPU 正在等待磁盘等 I/O 完成通常伴随磁盘瓶颈可结合 iostat 文档 中的r_await、w_await、%util等指标进一步确认%steal 高常见于云服务器和虚拟化环境说明宿主机上其他虚拟机抢占了你所在虚拟机的 CPU 时间属于宿主机资源争抢信号%irq 与 %soft 高说明中断或软中断如网卡收包消耗了大量 CPU需关注网卡队列、中断绑定等配置。实战一不带参数查看系统累计平均值当mpstat不带任何参数时输出的是从系统启动以来的平均值。例如在一台 4 核 CentOS 主机上mpstat Linux 3.10.0-1160.71.1.el7.x86_64 (centos) 08/14/2022 _x86_64_ (4 CPU) 04:28:36 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle 04:28:36 PM all 0.03 0.00 0.07 0.00 0.00 0.01 0.00 0.00 0.00 99.89首行输出包含内核版本、主机名、日期与 CPU 数量4 CPUall行即全系统平均值。由于这是长时间累计的平均值系统瞬时波动会被平滑掉因此它只能反映总体状况无法体现短时间内的负载变化——要观察实时变化必须指定间隔时间。实战二按 CPU 核心逐核统计-P ALL下面的命令每 2 秒产生一次全部处理器的统计数据报告共产生 3 个 interval 的信息最后再给出这 3 个 interval 的平均信息mpstat -P ALL 2 3 Linux 3.10.0-1160.71.1.el7.x86_64 (centos) 08/15/2022 _x86_64_ (4 CPU) 09:32:43 AM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle 09:32:45 AM all 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 09:32:45 AM 0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 09:32:45 AM 1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 09:32:45 AM 2 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 09:32:45 AM 3 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 09:32:45 AM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle 09:32:47 AM all 0.00 0.00 0.12 0.00 0.00 0.12 0.00 0.00 0.00 99.75 09:32:47 AM 0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 09:32:47 AM 1 0.00 0.00 0.50 0.00 0.00 0.00 0.00 0.00 0.00 99.50 09:32:47 AM 2 0.00 0.00 0.00 0.00 0.00 0.50 0.00 0.00 0.00 99.50 09:32:47 AM 3 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 09:32:47 AM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle 09:32:49 AM all 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 09:32:49 AM 0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 09:32:49 AM 1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 09:32:49 AM 2 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 09:32:49 AM 3 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 Average: CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle Average: all 0.00 0.00 0.04 0.00 0.00 0.04 0.00 0.00 0.00 99.92 Average: 0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 Average: 1 0.00 0.00 0.17 0.00 0.00 0.00 0.00 0.00 0.00 99.83 Average: 2 0.00 0.00 0.00 0.00 0.00 0.17 0.00 0.00 0.00 99.83 Average: 3 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00输出结构解读默认按 CPU 编号排序输出首行all给出 2 秒内所有处理器总的使用情况接下来每行对应一个处理器03每个采样周期对应一个时间戳会重打一次表头所有采样结束后末尾输出Average:段汇总每个 CPU 在全部采样周期内的平均值。注意第二个采样周期中CPU 1 的%sys为 0.50、CPU 2 的%soft为 0.50——这说明瞬时负载集中在特定核心上逐核视角-P ALL能精确暴露这种分布而仅看all行只会看到 0.12 的模糊平均值。实战三带参数与不带参数的结果对比压力测试先对 localhost 进行网络压力测试ping -f localhost然后在另一个终端运行不带参数的mpstatmpstat Linux 3.10.0-1160.71.1.el7.x86_64 (centos) 08/15/2022 _x86_64_ (4 CPU) 09:34:20 AM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle 09:34:20 AM all 0.03 0.00 0.07 0.00 0.00 0.02 0.00 0.00 0.00 99.88如前面所述不带参数时输出的是系统启动以来的平均值因此压力测试带来的瞬时变化完全被稀释看不出任何变化mpstat Linux 3.10.0-1160.71.1.el7.x86_64 (centos) 08/15/2022 _x86_64_ (4 CPU) 09:34:40 AM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle 09:34:40 AM all 0.03 0.00 0.07 0.00 0.00 0.02 0.00 0.00 0.00 99.88只有加上间隔时间才能显示某一段时间内 CPU 的真实使用情况。在压力测试进行期间执行mpstat 3 10 Linux 3.10.0-1160.71.1.el7.x86_64 (centos) 08/15/2022 _x86_64_ (4 CPU) 09:36:21 AM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle 09:36:24 AM all 1.81 0.00 7.03 0.00 0.00 6.37 0.00 0.00 0.00 84.79 09:36:27 AM all 1.82 0.00 6.88 0.00 0.00 5.83 0.00 0.00 0.00 85.47 09:36:30 AM all 1.95 0.00 5.86 0.00 0.00 4.98 0.00 0.00 0.00 87.21 09:36:33 AM all 3.95 0.00 6.50 0.00 0.00 5.46 0.00 0.00 0.00 84.09 09:36:36 AM all 4.05 0.00 6.21 0.00 0.00 5.64 0.00 0.00 0.00 84.10 09:36:39 AM all 4.21 0.00 6.92 0.00 0.00 5.33 0.00 0.00 0.00 83.54 09:36:42 AM all 3.72 0.00 7.17 0.00 0.00 6.05 0.00 0.00 0.00 83.05 09:36:45 AM all 3.97 0.00 6.93 0.00 0.00 6.65 0.00 0.00 0.00 82.46 09:36:48 AM all 4.30 0.00 9.55 0.00 0.00 9.55 0.00 0.00 0.00 76.59 09:36:51 AM all 4.35 0.00 9.31 0.00 0.00 8.79 0.00 0.00 0.00 77.55 Average: all 3.44 0.00 7.28 0.00 0.00 6.52 0.00 0.00 0.00 82.76对比可以发现压力测试期间%sys从 0.07% 升至 7% 左右、%soft从 0.02% 升至 5%9%说明ping -f localhost产生的大量网络软中断成为主要的 CPU 消耗来源是否指定间隔时间直接决定了mpstat反映的是系统启动以来的历史平均值还是当前实时状态要正确反映系统情况必须正确使用命令参数这一点对vmstat和iostat同样适用——三者都是通过指定采样间隔来观察实时变化具体可对照 vmstat 文档 与 iostat 文档。仓库索引与文档检索说明本指南对应的原始手册位于仓库的 command/mpstat.md该文件与仓库内 600 余个命令文档一同维护。mpstat的检索索引记录在 dist/data.json 中n: mpstat、p: /mpstat通过npm install linux-command安装后即可在本地以结构化数据或 Markdown 文本形式获取该命令的完整说明方便集成到内部知识库或工具链中。小结mpstat 使用要点速查使用场景推荐命令关键输出查看系统启动以来平均负载mpstatall行累计百分比实时查看整体 CPU 使用mpstat 3每 3 秒刷新all行实时百分比逐核查看所有 CPU 状态mpstat -P ALL 2 3每个 CPU 独立一行 Average 汇总单独观察某个核心mpstat -P 2 1仅 CPU 2 的数据定位 I/O 瓶颈结合%iowait与 iostat 的%util、r_await判断磁盘是否饱和排查虚拟化资源争抢观察%steal数值判断宿主机是否过载实际监控时建议先用mpstat判断 CPU 层级的瓶颈方向用户态、内核态、I/O 等待还是被抢占再针对性地使用vmstat观察内存与进程队列、使用iostat下钻磁盘、使用sar留存历史采样见 sar 文档形成完整的系统性能分析闭环。赞分享文档教程【免费下载链接】linux-commandLinux命令大全搜索工具内容包含Linux命令手册、详解、学习、搜集。https://git.io/linux项目地址https://gitcode.com/GitHub_Trending/linux/linux-command点击查看免费下载相关推荐Linux iostat 命令详解监控系统 I/O 设备与 CPU 使用率实战指南Linux iostat 命令详解监控系统 I/O 设备与 CPU 使用率实战指南 iostat 是 sysstat 工具包中最常用的系统性能监控命令之一它文档教程taskset 命令速查Linux CPU 亲和性设置与查看实战指南taskset 命令速查Linux CPU 亲和性设置与查看实战指南 本篇指南完整讲解 Linux taskset 命令的核心用法它既可以 查看 运行中进程文档知识库教程开发工具jc mpstat 解析器详解将 mpstat 多核 CPU 利用率与中断统计输出转为结构化 JSONjc mpstat 解析器详解将 mpstat 多核 CPU 利用率与中断统计输出转为结构化 JSON mpstat 是 sysstat 工具包中用于输出每个开发工具上一篇AMD Ryzen硬件调试专家指南5步掌握处理器性能调优下一篇Obsidian AI 自动化指南5 个 Agent Skills 如何让笔记自己跑起来创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表