如何使用perf top 探究性能

Perf 内置于Linux 内核源码树中的性能剖析工具。它基于事件采样原理,以性能事件为基础,支持针对处理器相关性能指标与操作系统相关性能指标的性能剖析。可用于性能瓶颈的查找与热点代码的定位。linux2.6及后续版本都自带该工具,几乎能够处理所有与性能相关的事件。perf top 是比较常用于展示占用CPU始终最多的函数或者指令,一般以此来查找热点函数。

实战

root@xxxx:~# apt install linux-tools-common
root@xxxx:~# perf top

Samples: 6K of event 'cycles', 4000 Hz, Event count (approx.): 48144737 lost: 0/0 drop: 0/0
Overhead  Shared Object                           Symbol
   3.84%  [kernel]                                [k] native_write_msr
   2.25%  [kernel]                                [k] update_blocked_averages
   1.89%  [kernel]                                [k] update_sd_lb_stats.constprop.0
   1.80%  [kernel]                                [k] pvclock_clocksource_read

Samples : 采样数, perf 总共采集了 6K 个 CPU 时钟事件。

event : 事件类型。

Event count (approx.) : 事件总数量

行列:

Overhead: 是该符号的性能事件在所有采样中的比例,用百分比来表示。

Shared: Shared ,是该函数或指令所在的动态共享对象(Dynamic Shared Object),如内核、进程名、动态链接库名、内核模块名等。

Object: Object ,是动态共享对象的类型。比如 [.] 表示用户空间的可执行程序、或者动态链接库,而 [k] 则表示内核空间。

Symbol: Symbol 是符号名,也就是函数名。当函数名未知时,用十六进制的地址来表示。

上面结果显示内核模块中native_write_msr 占用 CPU时钟最多,比列占3.84%。

同样可以使用perf record 与 perf report 进行定时采集再展示。加上 -g 参数,开启调用关系的采样,方便我们根据调用链来分析性能问题。

root@xxxx:~# perf record
^C //(结束采集)
[ perf record: Woken up 1 times to write data ]
[ perf record: Captured and wrote 0.967 MB perf.data (739 samples) ]

root@xxxx:~# perf report

Samples: 739  of event 'cycles', Event count (approx.): 22853303
Overhead  Command          Shared Object             Symbol
   4.38%  swapper          [kernel.kallsyms]         [k] native_write_msr
   4.04%  swapper          [kernel.kallsyms]         [k] native_safe_halt
   3.26%  swapper          [kernel.kallsyms]         [k] update_blocked_averages
   2.63%  swapper          [kernel.
  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值