使用simpleperf進行性能分析

一、簡介

Simpleperf是一個開源的性能分析工具,可以用於分析Android及Linux系統的應用程序、內核驅動程序和內核下的服務程序的性能。

Simpleperf在Android系統中以二進位文件的形式存在,可以運行於ARM、x86等CPU架構上,可以獲取與當前配置的CPU相關聯的硬體計數器、堆棧跟蹤支持,還可以dump backtrace、tracepoint和kprobe事件等。此外,Simpleperf還支持多種輸出格式,方便用戶進行性能數據分析、比較。

通俗來說,Simpleperf是Android平台上的perf工具,提供的功能比perf更易用、更有針對性,如果你是Android平台的應用開發人員或系統開發人員,那麼Simpleperf可能是你最佳的性能調優工具。

二、安裝和配置

Simpleperf可以在Google官方提供的倉庫中獲取,需要確保您的設備上已經具備adb命令。以Ubuntu操作系統為例,輸入以下命令行來安裝:

sudo apt-get install android-tools-adb
adb root
adb shell "echo 0 > /proc/sys/kernel/kptr_restrict"

當然,Simpleperf也可以通過源代碼來編譯運行。Simpleperf提供了兼容ARM、x86 CPU架構的二進位文件,分別命名為simpleperf,simpleperf.x86或者simpleperf.arm。在使用Simpleperf之前,用戶需要確認系統內核是否支持性能功能且該功能是否已開啟。在設備啟動時添加下列命令配置:

mount -o remount,rw -t rootfs rootfs
echo "0" > /proc/sys/kernel/perf_event_paranoid
mount -o remount,ro -t rootfs rootfs

三、使用方法

1.獲取簡單的性能數據

在一個常式(如:helloworld)中加入延遲(等待任意鍵)以便於採集性能數據,輸入以下命令:

adb shell "echo 7 > /proc/sys/kernel/printk"
adb shell "./helloworld" &
adb shell "echo 1 > /sys/kernel/debug/tracing/events/sched/sched_wakeup/enable"
adb shell "sleep 5"
adb shell "simpleperf record -p `pidof helloworld` --duration 1 -o perf.data"
adb shell "simpleperf report"

simpleperf採集數據,將數據存儲到perf.data文件中。

simpleperf report將顯示採集到的性能數據。如下所示:

100.00%  helloworld              [.] main
         |
         --100.00%--xwrite
            |
            --100.00%--__write_nocancel

2.獲取內核級事件

首先確認系統內核是否支持內核級事件:

adb shell "cat /proc/kallsyms | grep perf_event_open"

運行如下命令獲取內核級事件:

adb shell "echo 1 > /sys/kernel/debug/tracing/events/raw_syscalls/sys_enter/enable"
adb shell "echo 1 > /sys/kernel/debug/tracing/tracing_on"
adb shell "echo 0 > /proc/sys/kernel/kptr_restrict"

adb shell "simpleperf record -e syscalls:sys_enter -o perf.data sleep 1"
adb shell "cat perf.data | simpleperf report -n"

3.通過perf.data文件獲取火焰圖

需要先安裝flamegraph才能使用:

git clone https://github.com/brendangregg/FlameGraph.git

使用以下命令獲取火焰圖:

adb pull perf.data
cd $FLAMEGRAPH_HOME
$ perf script -i perf.data | ./stackcollapse-perf.pl | ./flamegraph.pl > perf.svg

四、總結

Simpleperf是一個功能強大的性能分析工具,支持多種硬體計數器、堆棧跟蹤支持、跟進backtrace、tracepoint和kprobe事件等,有助於開發人員針對性地對程序進行調優優化,深入理解程序的性能瓶頸問題,並實現優化,提升程序的性能。

Simpleperf在性能分析方面有著非常廣泛的應用,並且配合其他工具可以為開發人員帶來很多便利,如果你還沒有使用過Simpleperf,那麼就趕快試試吧。

原創文章,作者:XGSIS,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/363885.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
XGSIS的頭像XGSIS
上一篇 2025-03-12 18:48
下一篇 2025-03-12 18:48

相關推薦

發表回復

登錄後才能評論