linux libiberty.so和bfd.so一般放在那里,oprofile安裝和使用

1.概述

oProfile是用於Linux的若干種評測和性能監控工具中的一種,它可以工作在不同的體系結構上,包括MIPS、ARM、IA32、IA64和AMD。oProfile包含在Linux2.5和更高版本的內核中,也包含在大多數較新的Linux版本中,包括RedHat9。

oProfile是Linux平台上的一個功能強大的性能分析工具,支持兩種采樣(sampling)方式:基於事件的采樣(eventbased)和基於時間的采樣(timebased)。

基於事件的采樣是oProfile只記錄特定事件(比如L2 cache miss)的發生次數,當達到用戶設定的定值時oProfile就記錄一下(采一個樣)。這種方式需要CPU內部有性能計數器(performace counter)。

基於時間的采樣是oProfile借助OS時鍾中斷的機制,每個時鍾中斷oProfile都會記錄一次(采一次樣),引入此種采樣方式的目的在於提供對沒有性能計數器的CPU的支持,其精度相對於基於事件的采樣要低。因為要借助OS時鍾中斷的支持,對禁用中斷的代碼oProfile不能對其進行分析。

oProfile在Linux上分兩部分,一個是內核模塊(oprofile.ko),一個為用戶空間的守護進程(oprofiled)。前者負責訪問性能計數器或者注冊基於時間采樣的函數(使用register_timer_hook注冊之,使時鍾中斷處理程序最后執行profile_tick時可以訪問之),並采樣置於內核的緩沖區內。后者在后台運行,負責從內核空間收集數據,寫入文件。

2.注意事項 1) 不建議在虛擬機里利用oProfile來測試性能,因為虛擬機對oProfile的支持並不好,比如在Vmware虛擬機里不支持性能計數器接口模式:http://oprofile.sourceforge.net/faq/,中斷模式的設置為:

具體參看:http://oprofile.sourceforge.net/doc/detailed-parameters.html#timer 2) 調式的內核最好是原生內核(Vanilla kernel、香草內核),發行版Linux(比如redhat)自帶的內核一般都是經過大量修改的,對oProfile的支持不好。所以,我們最好能從kernel官方網站下載原生源碼后自行編譯生成新內核,重啟機器進行新內核環境后進行

否則在初始化之前執行opcontrol --no-vmlinux;  opcontrol --init; 3) 內核需打開OPROFILE選項,否則無法運行oProfile:

需要編輯內核配置文件:

將其中的# CONFIG_OPROFILE is not set改為CONFIG_OPROFILE=m(或者y) 同時也應確保另外幾個配置選項被選中:

然后編譯內核重啟機器即可。

4)也可以直接yum install oprofile*

4) 為了支持新的CPU類型,oProfile的更新會比較頻繁,所以在使用oProfile時建議先去http://oprofile.sourceforge.net/news/看看是否有更新版本。

3.系統環境 此本中所有關於oProfile的介紹、測試均在CENTOS 5.4環境下進行,具體如下:

4.oProfile的安裝 oProfile的安裝同普通Linux軟件安裝沒有什么兩樣,照例是configure、make、make install三板斧。由於oProfile依賴的庫比較多,如果系統中沒有安裝某些庫則在configure時會給出錯誤提示,比如當我輸入如下命令敲回車后提示:

解決該問題的方法是首先從網站http://ftp.gnu.org/gnu/binutils/?C=M;O=D下載binutils包編譯安裝即可(同樣是./configure 、make、make install)。 再configureoProfile:

提示沒有圖形界面,不用管它,直接make編譯,我還遇到了這個make錯誤:

該問題在於沒有找到bfd的動態鏈接庫,需要進入binutils 的bfd目錄編譯獲取libbfd.so文件:

一般,接下來還會遇到libiberty同樣的問題,但是libiberty的configure沒有提供–enable-shared選項,所以需要我們自己制作so文件,編輯Makefile文件,加上-fPIC編譯選項,然后利用make、gcc生成so:

由於之前編譯過,所以注意不要落了make clean對先前編譯結果進行清除,否則生成的libiberty.so不完整,要把so庫拷貝到正確的系統路徑,否則在執行oProfile程序時,可能出現“error while loading shared libraries”的錯誤信息。 最后再對oProfile進行make、make install即可,以上就是我在Linux 2.6.37.2內核上編譯oProfile過程中遇到的問題,雖然摸索清楚后看似不復雜,其實總個過程也浪費了我不少時間。

5.oProfile工具集 安裝好的oProfile包含有一系列的工具集,這些工具默認在路徑/usr/bin之下,它們分別是: 1) op_help:列出可用的事件,並帶有簡短的描述。 2) opcontrol:控制oProfile的數據收集。 3) opreport:對結果進行統計輸出。 4) opannaotate:產生帶注釋的源/匯編文件,源語言級的注釋需要編譯源文件時已加上調試符號信息的支持。 5) opgprof:產生如gprof相似的結果。 6) oparchive:將所有的原始數據文件收集打包,從而可以在另一台機器上進行分析。 7) opimport:將采樣的數據庫文件從另一種abi外部格式轉化為本地格式。

6.oProfile使用小示例 下面是一個完整的小示例,其中multiply是測試程序,在進行gcc編譯時加上了-g參數,便於opannotate分析:

7.oProfile反復使用以及示例結論 1) 使用oProfile的基本步驟如下所示,其中中間的步驟是經常使用的,前后幾個步驟無需重復多次:

2) 對於oProfile收集的統計信息,可以使用opreport、opgprof、opannotate這些工具進行分析並獲取相關信息,比如從上面的示例中可以看到函數slow_multiply就相對占用了較多的計算時間。

http://www.cnblogs.com/bangerlee/archive/2012/08/30/2659435.html

http://blog.csdn.net/green369258/article/details/6896139

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值