观测目标范围
统计之前要先决定观测边界:是整机所有处理器的汇总,还是某个进程、某个线程,或者指定的一组处理器。边界决定了结论能覆盖到哪里,也决定了数据能不能互相比较。同一份报告里混用不同范围的数字,是最常见的误判来源。
基本信息
| 适用平台 | Linux(内核自带性能工具) |
|---|---|
| 整机范围 | 汇总所有处理器的计数 |
| 进程与线程 | 按进程号或线程号限定观测对象 |
| 处理器范围 | 按处理器编号列表限定 |
| 拆分输出 | 按线程分别列出,便于定位热点线程 |
典型使用场景
- 容量评估使用整机口径,确认机器整体是否已被吃满。
- 单服务优化使用进程口径,避免被同机其它服务干扰。
- 绑核部署的服务按处理器范围采样,验证是否只用到了部分核心。
- 多线程服务按线程拆分,找出消耗最集中的工作线程。
- 短命进程无法用进程号跟随,改为整机口径或直接统计一条命令。
常用目标
常用目标
perf stat -a -- sleep 5 # 整机所有处理器
perf stat -p 12345 -t 12346 -- sleep 5 # 指定进程与线程
perf stat -C 0-3 -- sleep 5 # 指定处理器范围
perf stat --per-thread -p 12345 -- sleep 5 # 按线程拆分输出
perf stat -a -e cycles,instructions -- sleep 5 # 整机效率口径,做容量判断
perf stat ./batch_job.sh # 直接统计一条命令,覆盖短命进程范围与适用判断
| 目标选项 | 观测范围 | 适用判断 |
|---|---|---|
| 整机范围 | 全部处理器汇总 | 容量与整体饱和度 |
| 进程与线程 | 指定对象 | 单服务优化与归因 |
| 处理器列表 | 指定核心 | 绑核与亲和性验证 |
| 命令形式 | 命令运行期间 | 短命进程与一次性任务 |
进程退出后统计就结束:对频繁启动退出的短命进程,用进程号跟随几乎采不到有效数据,改用整机口径或直接把命令交给统计工具执行。
整机数据与单进程数据不能直接比较:分母不同,占比与绝对量含义都不一样,混用会得出错误结论。