|
导航:[首页]->[cpp]->[Google-perftools CPU Profiler]
两年前研究过google-perftools 的Tcmalloc,其使用线程本地存储解决线程间锁开销,以及全局表来合并地址相连的碎内存方面,着实让人眼前一亮。 最近在工作中用了下CPU Profiler,这里做个笔记。 使用CPU Profiler分三个步骤 ###链接库
若有源码,建议编译时,带-lprofiler选项,也可以用hack的办法,运行时**env LD_PRELOAD=”/usr/lib/libprofiler.so” ###运行程序 CPU Profiler对多线程和动态库很友好,同时也支持动态开启关闭取样(似乎gprof没有发现类似的功能)。 为了开启取样,运行前可以设置环境变量CPUPROFILE。**env CPUPROFILE=/tmp/mybin.prof 当然也可以动态设置,以及参数修改。这就需要借助CPU Profiler的API了。例如ProfilerStart/ProfilerStop 我个人很喜欢另外一种方式,用gdb下个断点到需要开启取样的地方,被断点后运行p ProfilerStart(“/tmp/mybin.prof”)来开启取样,ProfilerStop也用同样的办法。这种办法有几个好处:
###分析 ##参考
|