Linux下的應用程式效能分析 總結

工程師WWW發表於2013-11-01

Linux下的應用程式效能分析,根據核心程式和應用程式的不同,下文分兩類進行描述。

我們側重的是應用級別的程式,推薦google perf tool/kcachegrind組合

一、和核心有關的工具

既可以處理核心,又可以處理應用的程式,但安裝需要對核心程式碼有處理,所以有些麻煩

(一)Perf

#1 必須在root下編譯

# perf

pushd /usr/src

bzip2 -d linux-source-2.6.32.tar.bz2

tar -xvf linux-source-2.6.32.tar -C .

popd

pushd /usr/src/linux-source-2.6.32/tools/perf

make

make install

popd

cp -f /root/bin/perf /usr/bin/.

perf --version

Perf -- Linux下的系統效能調優工具

http://www.ibm.com/developerworks/cn/linux/l-cn-perf1/

http://www.ibm.com/developerworks/cn/linux/l-cn-perf2/

wps_clip_image-32340

(二)Oprofile

oprofile 在 Linux 上分兩部分,一個是核心模組 (oprofile.ko) ,一個為使用者空間的守護程式 (oprofiled) 。前者負責訪問效能計數器或者註冊基於時間取樣的函式 ( 使用 register_timer_hook 註冊之,使時鐘中斷處理程式最後執行 profile_tick 時可以訪問之 ) ,並取樣置於核心的緩衝區內。後者在後臺執行,負責從核心空間收集資料,寫入檔案。

http://blog.csdn.net/yili_xie/article/details/4925648

http://www.ibm.com/developerworks/cn/linux/l-oprof/

wps_clip_image-17881

(三)LTTNG

http://lttng.org/

The LTTng project aims at providing highly efficient tracing tools for Linux. Its tracers help tracking down performance issues and debugging problems involving multiple concurrent processes and threads. Tracing across multiple systems is also possible.

Apart from LTTng's kernel tracer and userspace tracer, viewing and analysis tools are part of the project. The LTTV viewer permits to analyze and show traces, both in text format and graphically.

二、應用工具

(一)Gprof (kprof)

主要的步驟:

1.在程式編譯時選擇-g -pg選項,插入必要的資訊

2.執行程式後輸出gmon.out資訊

3.檢視gmon.out,可以看到相關的資訊

這個的效果不太好

http://blog.csdn.net/stanjiang2010/article/details/5655143

wps_clip_image-11839

(二)google perf tool (kcachegrind)

#gperftools-2.1 說明文件說明了在64下的問題

tar -xzvf libunwind-1.1.tar.gz  -C .

#libunwind 0.99 1.0.1 編譯錯誤

pushd libunwind-1.1

./configure --prefix=/usr

make

make install

popd

rm -r -f libunwind-1.1

#gperftools-2.1

tar -xzvf gperftools-2.1.tar.gz  -C .

pushd gperftools-2.1

./configure --prefix=/usr

make

make install

popd

rm -r -f gperftools-2.1

程式中插入效能的資訊

ProfilerStart("demo.prof");

benchPasrer = boost::make_shared<antlr::AntlrMSSQLParser>();

for(int i=0; i< 1000; i++){

demo();

}

ProfilerStop();

檢視

pprof –text  demo demo.prof --lines

pprof --text demo demo.prof --functions

和kcachegrind 整合在一起,圖形檢視

% pprof –callgrind demo demo.prof > demo.callgrind

% kcachegrind demo.callgrind

wps_clip_image-5469

https://code.google.com/p/gperftools/

http://www.road2stat.com/cn/r/rprofiling.html

(三)Valgrind

http://valgrind.org/

http://www.cnblogs.com/2018/p/3228174.html

http://www.cnblogs.com/2018/p/3230736.html

 

詳細資料參考

http://ajsm5iagih.l6.yunpan.cn/lk/Qn2w6bg4BgZqU  工具_Linux程式效能剖析.doc

相關文章