Oprofile CPU效能分析工具指南

2021-07-04 05:58:51 字數 3650 閱讀 7080

在平台公升級中經常碰到自測時效能指標沒有問題,而平台轉到產品業務部門匹配測試時就出了問題.如果是功能異常的問題,一般還是很好處理的,但如果碰到系統的效能問題,如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$sudoopcontrol --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$sudoopcontrol --start --vmlinux=/tmp/vmlinux

attention: use of opcontrol is discouraged. please see themanpageforoperf.

using default event: cpu_clk_unhalted:100000:0:1:1

using 2.6+ oprofile kernel inte***ce.

reading module info.

using logfile/var/lib/oprofile/samples/oprofiled.log

daemon started.

profiler running.

5.這個時候啟動需要監控的程式,如果是核心,就直接sleep一段時間即可

6.停止取樣幫助

1

2

oen@oen/tmp$sudoopcontrol --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 ...