在平台公升級中經常碰到自測時效能指標沒有問題,而平台轉到產品業務部門匹配測試時就出了問題.如果是功能異常的問題,一般還是很好處理的,但如果碰到系統的效能問題,如cpu公升高,記憶體使用超標,就比較不好搞了,老虎吞天,沒有目標,乙個版本幾十萬行**一行行看,絕對能累死,尤其是核心組.
幸好開源界的風氣好,提供了各種工具,本文主要介紹oprofile工具,適用系統的cpu效能分析,最主要它能深入核心函式,這是很多使用者態工具達不到的地方.
一、基本原理
根據cpu架構取樣的觸發有兩種模式:
2) timer interrupt模式: 在沒有performance counter支援的情況下(例如vmware虛擬機器下), 可以利用時鐘中斷來取樣. 這時候就沒有performance counter的概念了. 或者可以當成近似的cpu時鐘週期事件. 要使用timer interrupt模式, 需要在載入oprofile.ko模組的時候,傳遞」timer=1″引數. modprobe oprofile timer=1
二、快速操作
1.首先要安裝了oprofile,具體版本適用不同,請自行google
2.準備獲取有debuginfo資訊的核心檔案vmlinux,具體方法請點入鏈結,這個vmlinux應該是用和環境核心完全一致的**編譯出來的
3.初始化oprofile,可以通過demsg檢視oprofile使用的是哪一種模式:幫助
1
2
3
oen@oen
/tmp
$
sudo
opcontrol --init
oen@oen
/tmp
$ dmesg |
tail
-n 1
[32197.736534] oprofile: using nmi interrupt.
4.開始獲取cpu取樣幫助
1
2
3
4
5
6
7
8
oen@oen
/tmp
$
sudo
opcontrol --start --vmlinux=
/tmp/vmlinux
attention: use of opcontrol is discouraged. please see the
man
page
for
operf.
using default event: cpu_clk_unhalted:100000:0:1:1
using 2.6+ oprofile kernel inte***ce.
reading module info.
using log
file
/var/lib/oprofile/samples/oprofiled
.log
daemon started.
profiler running.
5.這個時候啟動需要監控的程式,如果是核心,就直接sleep一段時間即可
6.停止取樣幫助
1
2
oen@oen
/tmp
$
sudo
opcontrol --stop
stopping profiling.
7.獲取取樣資訊幫助
1
2
3
4
5
6
7
8
9
10
11
oen@oen
/tmp
$ opreport -l
cpu: intel ivy bridge microarchitecture, speed 2.501e+06 mhz (estimated)
counted cpu_clk_unhalted events (clock cycles when not halted) with a unit mask of 0x00 (no unit mask) count 100000
459479 30.4134 chrome chrome
/opt/google/chrome/chrome
88167 5.8359 libpepflashplayer.so libpepflashplayer.so
/opt/google/chrome/pepperflash/libpepflashplayer
.so
61784 4.0895 libc-2.15.so libc-2.15.so
/lib/x86_64-linux-gnu/libc-2
.15.so
59765 3.9559 oprofile oprofile
/oprofile
46383 3.0701 vmlinux vmlinux fb_deferred_io_fault
36778 2.4344 libglib-2.0.so.0.3400.1 libglib-2.0.so.0.3400.1
/lib/x86_64-linux-gnu/libglib-2
.0.so.0.3400.1
31214 2.0661 vmlinux vmlinux native_read_tsc
這個樣子就可以獲取系統的cpu主要耗費在哪個函式上了,從上面的示例可以看到核心cpu主要在fb_deferred_io_fault和native_read_tsc函式上,就可對症下藥,縮小問題排查範圍。
oprofile還有很多引數,包括事件取樣的配置等直接參考man手冊吧。
關於oprofile**調優的文章推薦閱讀:
用 oprofile 徹底了解效能
利用oprofile對多核多執行緒進行效能分析
mysql 效能分析 Mysql效能分析
優化mysql資料庫效能的十個引數 1 max connections 允許的同時客戶的數量。增加該值增加 mysqld 要求的檔案描述符的數量。這個數字應該增加,否則,你將經常看到 too many connections 錯誤。預設數值是100,我把它改為1024 2 record buffer...
mysql效能分析方法 mysql 效能分析方法
1.explain分析法 explain 分析查詢語句 1 id列數字越大越先執行,如果說數字一樣大,那麼就從上往下依次執行 2 select type查詢型別 primary dependent subquery等 3 table表名 4 type 從上到下效能依次下降 system 表中只有一行...
mysql 效能分析 mysql效能分析工具
一 expalin 在sql語句之前加上explain關鍵字就可以獲取這條sql語句執行的計畫 那麼返回的這些欄位是什麼呢?我們先關心一下比較重要的幾個字段 1.select type 查詢型別 1 簡單查詢,沒有union和子查詢 2 priamry 主查詢,有union或子查詢的最外層查詢 3 ...