Android 移植oprofil效能監測工具

來源:互聯網
上載者:User

關於oprofile的移植,在Ubuntu Server 10.04平台上交叉編譯,移植到Android,經過實踐,以下是交叉編譯的正確步驟,不保證在其他環境中能正確運行,以下是編譯環境: build: Ubuntu Server 10.04host: Android-2.2r2cross compiler: mips-linux-gnu-gcc  version:4.3.2cpu: mips 交叉編譯oprofile,依賴(popt,binutils); 1.Download Open Source: popt-1.14.tar.gzbinutils-2.21.tar.gzoprofile-0.9.6.tar.gz  2.Building environment 重要:touch env.shvi env.sh內容如下:export PATH=/home/gzshun/share/mips-4.3/bin:$PATH  ##修改為自己的工具鏈路徑export CC="mips-linux-gnu-gcc -EL"export CXX="mips-linux-gnu-g++ -EL"export CFLAGS=-staticexport CXXFLAGS=-staticexport CPPFLAGS=-static source env.sh 3.Building popt-1.14.tar.gz tar zxvf popt-1.14.tar.gzcd popt-1.14ac_cv_va_copy=yes ./configure --with-kernel-support --host=mips-linux-gnu --prefix=/home/gzshun/poptmakemake install 以下是靜態編譯:4.Building binutils-2.21.tar.gz tar zxvf binutils-2.21.tar.gzcd binutils-2.21./configure --with-kernel-support --host=mips-linux-gnu --prefix=/home/gzshun/binutils --enable-sharedmake configure-hostmake LDFLAGS="-all-static"make install  5.Building oprofile-0.9.6.tar.gz tar zxvf oprofile-0.9.6.tar.gzcd oprofile-0.9.6./configure --with-kernel-support --host=mips-linux-gnu --prefix=/home/gzshun/oprofile/ --with-extra-libs=/home/gzshun/popt/lib/ --with-extra-includes=/home/gzshun/popt/include/ --with-binutils=/home/gzshun/binutilsmake LDFLAGS="-all-static -L/home/gzshun/binutils/lib -Xlinker -R -Xlinker /home/gzshun/binutils/lib  -L/home/gzshun/popt/lib/"make install  6.添加核心oprofile模組General setup  --->[*] Profiling support (EXPERIMENTAL)<*> OProfile system profiling (EXPERIMENTAL)將oprofile模組編進核心,也可以編程模組 開發板效能測試篇: 1.注意a.在ubuntu編譯oprofile的產生路徑是:/home/gzshun/oprofile,所以在開發板也需要建立相應的路徑mkdir -p /home/gzshun/將產生的oprofile目錄拷貝到開發板/home/gzshun/目錄下##原因:在ubuntu環境下編譯,oprofile會按照原本在ubuntu的路徑尋找需要的lib庫。(組建目錄自己定)b.修改oprofile/bin/opcontrol第1968行,將/usr/bin修改為/binc.在Android系統中的/etc目錄下建立mtab檔案,並新增內容:nodev /dev/oprofile oprofilefs rw 0 0d.在開發板設定oprofile的環境變數,必須放在PATH的前面,因為原Android系統也存在2個命令。 e.oprofile產生報告的預設地址是:/var/lib/oprofile 2.效能測試##Android沒有核心,所以需要從虛擬位址去引用vmlinuxgrep "_stext" /proc/kallsyms  --> result: 84000400 T _stext  ##擷取vmlinux虛擬起始地址grep "_etext" /proc/kallsyms  --> result: 84342a18 A _etext  ##擷取vmlinux虛擬結束位址opcontrol --init  --> 提示錯誤,掛載oprofilefs即可mount -t oprofilefs nodev /dev/oprofile  ##掛載oprofile需要的裝置資訊opcontrol --init   ##初始化opcontrol --reset  ##清空上次保留下來的資訊echo 0 > /data/vmlinux ##產生一個虛擬vmlinuxopcontrol --callgraph=2 --vmlinux=/data/vmlinux --kernel-range=0x84000400,0x84342a18 ##起始地址,結束位址, 跟蹤核心或者 opcontrol --setup --callgraph=2 --no-vmlinux ##不跟蹤 核心opcontrol --setup --event=CYCLES:7500:0:0:1  ##事件採樣opcontrol --start  ##開始測試效能opcontrol --status ##查看狀態.....等待時間,測試opcontrol --dump  ##將測試效能資訊寫入磁碟。opreport  ##列印報告opcontrol --stop ##停止檢測opcontrol --shutdown  ##關閉檢測守護進程opcontrol --deinit  ##卸載oprofile核心模組 opreport出來的一個例子: 分析:Samples 採樣到的次數% 占的百分比Symbol name 函數名 Android@localhost:/# opreportOverflow stats not availableCPU: MIPS 24K, speed 0 MHz (estimated)Counted CYCLES events (Cycles) with a unit mask of 0x00 (No unit mask) count 7500CYCLES:7500samples|      %------------------132594 18.2787 opreport103155 14.2204 libdvm.so96514 13.3049 libc.so88463 12.1950 libskia.so79213 10.9199 app_processCYCLES:7500samples|      %------------------79213 100.000 [heap] (tgid:1444 range:0x83000-0x401000)77023 10.6180 oprofiled57865  7.9770 libcutils.so19547  2.6946 busybox17571  2.4222 libwebcore.so13223  1.8229 libplayback.so9490  1.3082 libdisplay.so3906  0.5385 libbinder.so3816  0.5261 libutils.so3374  0.4651 ophelp3373  0.4650 libandroid_runtime.so2069  0.2852 libcore.so1816  0.2503 libz.so1648  0.2272 libsqlite.so1342  0.1850 dalvik-jit-code-cache (deleted)1141  0.1573 vmlinux1110  0.1530 libui.so975  0.1344 libsurfaceflinger.so840  0.1158 libGLES_android.so711  0.0980 libhw.so604  0.0833 example_display591  0.0815 libpixelflinger.so528  0.0728 libsurfaceflinger_client.so522  0.0720 linker494  0.0681 libicuuc.so467  0.0644 libdcchd_android.so293  0.0404 libnativehelper.so169  0.0233 libm.so158  0.0218 uinput132  0.0182 gralloc.smp86xx.so117  0.0161 libicui18n.so98  0.0135 copybit.smp86xx.so75  0.0103 libstdc++.so58  0.0080 libEGL.so58  0.0080 libhardware.so57  0.0079 libGLESv1_CM.so46  0.0063 librmlibplay_default_plugin.so35  0.0048 opjitconv32  0.0044 libandroid_servers.so22  0.0030 libhardware_legacy.so15  0.0021 liblog.so11  0.0015 servicemanager10  0.0014 libmedia.so9  0.0012 adbd8  0.0011 logwrapper5 6.9e-04 libmediaplayerservice.so4 5.5e-04 libmedia_jni.so3 4.1e-04 libsysutils.so1 1.4e-04 init1 1.4e-04 libemoji.so 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.