实时热点视图
实时热点视图按当前采样即时展示各符号的开销占比,不需要先落盘再出报告,适合快速判断「现在谁在吃 CPU」。它本质上是边采集边聚合,所以长时间开着本身就有开销。现场排查时先用它扫一眼,再决定要不要做正式采样记录。
基本信息
| 适用平台 | Linux(内核自带性能工具) |
|---|---|
| 常用选项 | 指定进程、刷新间隔、事件、采样周期、调用链视图 |
| 显示过滤 | 可只看用户态符号或隐藏内核符号 |
| 文本模式 | 非交互输出适合脚本与远程终端 |
| 权限要求 | 采样通常需要较高权限 |
典型使用场景
- 上线后现场扫一眼热点分布,判断是否需要深入分析。
- 排查是否有非业务进程在抢占算力。
- 远程终端环境用文本模式输出前若干行,快速定位。
- 应急时避免落盘,直接观察实时分布。
- 确认内核态占比是否异常,决定是否转向系统层排查。
用法
用法
perf top # 整机实时热点
perf top -p 12345 # 只看指定进程
perf top -d 5 -p 12345 # 每 5 秒刷新一次
perf top --stdio -K | head -30 # 文本模式并隐藏内核符号
perf top -e cycles -c 100000 # 指定事件与采样周期
perf top -g # 展开调用链视图
perf top -U # 仅显示用户态符号界面列读法
| 列 | 含义 | 判读要点 |
|---|---|---|
| 开销占比 | 该符号样本占总体比例 | 排序后定优先级 |
| 符号 | 函数名或内核例程名 | 显示为地址说明缺符号 |
| 来源模块 | 符号所属可执行文件或库 | 区分业务代码与第三方库 |
| 用户态标记 | 该符号所处特权级 | 内核占比高需换方向排查 |
交互界面可切换符号与模块视图;远程或脚本环境用文本输出更省事,但只给前若干行,适合快速判断而非长期观察。
长时间挂着实时视图会持续消耗资源,在本来就紧张的生产机上可能加剧问题;排查完要及时退出,需要长时间观察时改用低频采样落盘。