- 概述
oProfile是用于Linux的若干種評測和性能監(jiān)控工具中的一種,它可以工作在不同的體系結(jié)構(gòu)上,包括MIPS、ARM、IA32、IA64和AMD。oProfile包含在Linux2.5和更高版本的內(nèi)核中,也包含在大多數(shù)較新的Linux版本中,包括RedHat9。
oProfile是Linux平臺上的一個功能強(qiáng)大的性能分析工具,支持兩種采樣(sampling)方式:基于事件的采樣(eventbased)和基于時間的采樣(timebased)。
基于事件的采樣是oProfile只記錄特定事件(比如L2 cache miss)的發(fā)生次數(shù),當(dāng)達(dá)到用戶設(shè)定的定值時oProfile就記錄一下(采一個樣)。這種方式需要CPU內(nèi)部有性能計數(shù)器(performace counter)。
基于時間的采樣是oProfile借助OS時鐘中斷的機(jī)制,每個時鐘中斷oProfile都會記錄一次(采一次樣),引入此種采樣方式的目的在于提供對沒有性能計數(shù)器的CPU的支持,其精度相對于基于事件的采樣要低。因為要借助OS時鐘中斷的支持,對禁用中斷的代碼oProfile不能對其進(jìn)行分析。
oProfile在Linux上分兩部分,一個是內(nèi)核模塊(oprofile.ko),一個為用戶空間的守護(hù)進(jìn)程(oprofiled)。前者負(fù)責(zé)訪問性能計數(shù)器或者注冊基于時間采樣的函數(shù)(使用register_timer_hook注冊之,使時鐘中斷處理程序最后執(zhí)行profile_tick時可以訪問之),并采樣置于內(nèi)核的緩沖區(qū)內(nèi)。后者在后臺運行,負(fù)責(zé)從內(nèi)核空間收集數(shù)據(jù),寫入文件。
oprofile-1.0.0,下載地址:http://sourceforge.net/projects/oprofile/files/oprofile/
安裝:
./configure make & sudo make install
- ERROR1:configure:error:popt library not found
下載popt-1.16,下載地址:http://www.linuxfromscratch.org/blfs/view/svn/general/popt.html
./configure make & sudo make install
繼續(xù)進(jìn)入oprofile目錄執(zhí)行
./configure
- ERROR2:configure:error: liberty library not found
下載binutils-2.25,下載地址:http://ftp.gnu.org/gnu/binutils/?C=M;O=D
./configure --with-sysroots
make clean
make
sudo make install
繼續(xù)進(jìn)入到oprofile目錄執(zhí)行./configure
- ERROR3:configure:error:liberty library not found
該庫也是在binutils中,在libiberty下,由于libiberty的configure沒有提供--enable-shared選項,所以需要我們自己制作so文件,編輯Makefile,加上-fPIC編譯選項,然后利用make gcc生成so:
cd libiberty //進(jìn)入該目錄
./configure //完成之后會有個Makefile文件產(chǎn)生
vi Makefile //編輯該文件,找到并修改該行為: CFLAGS = -g -O2 -fPIC 保存
make clean
make
gcc -shared *.o -o libiberty.so //生成.so文件,把該文件拷到/usr/lib中
sudo cp libiberty.so /usr/lib/libiberty.so
最后還需要bfd的動態(tài)鏈接庫,也是在binutils中,在bfd中,由于自帶的configure可以加入--enable-shared,所以可以利用該參數(shù)自動生成.so文件到/usr/lib中
cd bfd
./configure --enable-shared
make clean
make
sudo make install
最后回到oprofile目錄中再安裝一遍:
./configure
make clean
make
sudo make install