歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> 使用valgrind的callgrind工具進行多線程性能分析

使用valgrind的callgrind工具進行多線程性能分析

日期:2017/2/27 15:54:38   编辑:Linux教程
簡介
valgrind是開源的性能分析利器。 根據它的文檔,可以用它來檢查內存洩漏等問題,還可以用來生成函數的調用圖,就這兩個功能就足夠有吸引力了。
本文主要是介紹如何使用valgrind的callgrind工具進行性能分析。

分析過程

使用callgrind工具生成性能分析數據
命令格式如下:
valgrind --tool=callgrind ./exproxy

其中 ./exproxy就是我們要分析的程序。執行完畢後,就會在當前目錄下生成一個文件。文件名為“callgrind.out.進程號”。如,callgrind.out.31113。注意,對於daemon進程的調試,不要通過kill -9方式停止。

如果你調試的程序是多線程,你也可以在命令行中加一個參數 –separate-threads=yes。這樣就會為每個線程單獨生成一個性能分析文件。如下:
valgrind --tool=callgrind --separate-threads=yes ./exproxy

生成的文件除了callgrind.out.31113外,還會多出一些子線程的文件。文件名如下:
callgrind.out.31113-01 callgrind.out.31113-02 callgrind.out.31113-03

把callgrind生成的性能數據轉換成dot格式數據
可以使用gprof2dot.py腳本,把callgrind生成的性能分析數據轉換成dot格式的數據。方便使用dot把分析數據圖形化。
腳本可以點此下載。腳本使用方式如下:
python gprof2dot.py -f callgrind -n10 -s callgrind.out.31113 > valgrind.dot

使用dot把數據生成圖片

命令格式如下:
dot -Tpng valgrind.dot -o valgrind.png

生成的圖片示例 通過圖形,我們可以很直觀的知道那段程序執行慢,並且了解相關調用關系。
Copyright © Linux教程網 All Rights Reserved