对linux下各种profiling工具的心得
第一次写博
第一次写这种技术博客,本着一颗分享技术的心,希望能和大家多多交流和学习。
最近在公司实习,一直用Linux,要对一个比较大的服务器进行性能测试,过程中遇到了诸多问题,在此和大家分享一下。
总结一下前两天用profile工具时遇到的问题和自己切身的感受吧,这也算是我这两天弄得我相当头疼的一个问题。首先我用的第一个工具是valgrind,valgrind有很多强大的工具,我这里要用到的是callgrind,我们公司的开发机测试机上预装了这个东西,所以不用自己安装。由于第一次接触这种性能测试的东西,各方面都还不太明白,所以自己捣鼓了半天,发现这个东西只能是哪个用户自己编译安装的valgrind哪个用户才能用这个。被逼无奈之下,自己找了安装包手动编译安装了下。总算是能用了,我用这个启动服务器,然后我就在等服务器启动完,这一等就是将近三个小时,然后日志中还报错了,内存貌似是溢出了,所以说用valgrind尽量不要测试那种大型的服务器。然后我接着又准备用第二个工具,oprofile。感觉这是一个相当强大的工具,但是这个oprofile用起来是相当坑爹(也可能是我比较笨)。几经查找发现,这个oprofile只能是具有root权限的用户才能使用。同事也相当热心,直接就给了我台root权限的机器。部署好了系统的环境后,又发现这机器根本就无法启动服务器,内存太小了。无语之下,又听说还有个profiling的东西,于是我便转向了我用的第三个工具,gprof。鉴于前两次的失败,我总算是对这类东西有了一定的了解,然后用这个的时候也算是轻车熟路。但仔细一看,发现这个也是有一定问题的。这个是只能检测主线程,不适应于多线程应用,显然是不符合我的要求。自己在网上找了诸多资料,发现这问题是能解决的,需要自己手动重新编译一个pthread的动态链接库。在网上搜了半天后,最后在一个国外牛人的博客上找到了这个源文件。按照要求编译好动态链接库后,放在了原工程下,重新编译了整个工程,运行测试后,最终终于得到了测试结果。
以上便是我这两天弄这个profiling的真实情况,不敢在各位大牛面前班门弄斧,只希望能给后面刚接触的人一些小小的方便。如果以上我有什么说的不对的地方,欢迎大家指出,谢谢~!
更多推荐
所有评论(0)