Linux CPU 性能分析工具(1)
掌握 Linux CPU 性能分析工具,是每一位 Linux 工程师、SRE、DevOps 和性能工程师的基本功。本文介绍 Linux 最常用的 CPU 性能分析工具,包括 vmstat、top、mpstat、ps、pidstat、time 和 perf,并讲解它们适用的场景、常用参数以及分析思路。

一、CPU 性能分析思路
CPU 性能分析一般遵循以下流程:
CPU 利用率高?
│
▼
top / vmstat / mpstat
│
▼
哪个进程占用 CPU?
│
▼
top / ps / pidstat
│
▼
哪个线程?
│
▼
top -H
ps -Lp
pidstat -t
│
▼
哪个函数最耗 CPU?
│
▼
perf top
perf record
perf report

二、vmstat——系统整体运行状态
作用
查看整个系统的 CPU、内存、上下文切换和运行队列。
也是 Linux 性能分析最经典的命令之一。
vmstat 1
输出示例:
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
rbswpdfreebuff cachesi so bi boincs us sy id wa st
200 12345 10000 800000000 1200 3000 40 10 4820
重点字段:
适合:
●查看系统是否 CPU 忙
●是否 Context Switch 很高
●是否 IO Wait 很高

三、top——实时监控
作用
Linux 最常用的实时性能监控工具。
top
主要指标:
%Cpu(s): 80 us, 10 sy, 5 id, 5 wa
分别表示:
●us(User)
●sy(System)
●id(Idle)
●wa(IO Wait)
常用快捷键:
P
按 CPU 排序。
M
按内存排序。
1
查看所有 CPU。
H
查看线程。
适合:
●找高 CPU 进程
●找高 CPU 线程

四、mpstat——CPU 利用率统计
安装:
sudo apt install sysstat
查看所有 CPU:
mpstat -P ALL 1
示例:
CPU%usr %sys %idle
020575
19082
210288
适合:
●查看每个 CPU 是否均衡
●NUMA 分析
●IRQ 是否集中某几个 CPU

五、ps——查看进程
查看 CPU 排名前十:
ps aux --sort=-%cpu
查看线程:
ps -Lp PID
查看线程 CPU:
ps -Lp PID -o pid,tid,%cpu,comm
适合:
●查看进程
●查看线程
●查看 CPU 使用率

六、pidstat——查看进程和线程历史
安装:
sudo apt install sysstat
查看 CPU:
pidstat 1
查看线程:
pidstat -t 1
查看指定进程:
pidstat -p PID 1
优点:
可以连续观察 CPU 变化。
相比 top:
●更适合日志记录
●更适合线上分析

七、time——统计程序运行时间
Linux 自带:
time ./app
输出:
real3.2s
user5.6s
sys0.3s
三个时间:
real
真实耗时
开始
│
│
结束
user
用户态 CPU 时间。
sys
内核态 CPU 时间。
例如:
user > real
说明程序利用了多线程。

八、perf——Linux 最强性能分析工具
perf 是 Linux 官方性能分析工具。
查看热点:
perf top
采样:
perf record ./app
生成报告:
perf report
查看硬件计数器:
perf stat ./app
输出:
cycles
instructions
cache-misses
branches
branch-misses
IPC
perf 可以回答:
●CPU 在执行哪个函数?
●Cache Miss 是否严重?
●IPC 是否低?
●Branch Miss 是否高?
它是 Linux CPU Profiling 最重要的工具。

九、工具对比

十、CPU 性能分析推荐流程
实际工作中,建议按以下顺序排查 CPU 问题:
CPU 高?
│
▼
vmstat
│
▼
top
│
▼
ps / pidstat
│
▼
top -H
│
▼
perf top
│
▼
perf record
│
▼
perf report
这种分析思路遵循 "由宏观到微观、由系统到进程、由进程到线程、由线程到函数" 的原则,能够快速定位 CPU 瓶颈。

总结
vmstat、top、mpstat、ps、pidstat、time 和 perf 是 Linux CPU 性能分析中最常用的工具。它们覆盖了从系统整体、CPU 核心、进程、线程到函数级别的完整分析链路。
在实际生产环境中,这些工具通常配合使用:先利用 vmstat、top 和 mpstat 判断系统整体负载,再通过 ps、pidstat 和 top -H 定位具体进程和线程,最后借助 perf 深入分析函数热点、缓存命中率和指令执行效率。 熟练掌握这套工具,是 Linux 性能调优和故障排查的核心技能