统计各个函数的耗时_利用systemtap 分析c/c++函数调用耗时

统计各个函数的耗时_利用systemtap 分析c/c++函数调用耗时_第1张图片

通常情况下我们开发服务时为了更好的性能往往需要借助一些工具来辅助优化,发现性能的瓶颈所在。

比如:

  • perf 用于分析哪些方法调用cpu比较高、cpu cache 命中率、分支预测等
  • valgrind 的helgrind 工具用于分析资源竞争
  • gprofile 用于分析一些包括函数调用次数、函数调用耗时等(编译时需要带上-pg),原理就是在函数入口、退出地方插入两个function来进行统计对源码是侵入式的。原来跟-finstrument-function 类似
  • oprofile 用于分析cpu cache命中率等 [关于该工具介绍可以参考:https://www.ibm.com/developerworks/cn/linux/l-oprof/]

我这里主要是介绍下如何通过systemtap 系统钩子,来分析耗时比较高的函数(包括用户态的、系统调用:比如readwriteepoll_ctl等)。对应的脚本:(保存名字为first.stp)

probe process("/usr/xxx/a.out").function("*").return {

printf("%s %d,cost:%ld us",probefunc(),pid(), gettimeofday_us() - @entry(gettimeofday_us())

}

p

你可能感兴趣的:(统计各个函数的耗时)