Shooting's Blog

Simpleperf

What is simpleperf ?

  • 在 Linux 上內建提供 perf tool, 可以用它做效能的分析.
  • 而 Android 上, Google 利用同樣概念, 提供 simpleperf 工具

How simpleperf works ?

Simpleperf 利用 CPU 內的 PMU,將需要的事件不斷的輸出 (比方 cpu-cycles ),
以達到監控每個CPU每個瞬間跑在哪一行 arm 指令.
透過這樣取樣的方式, 我們可以假設取樣到同區域的次數越多, 代表該段代碼越可能是執行瓶頸.

Script

每10ms錄一次共錄120s
adb root
adb remount
adb push simpleperf /data
adb shell chmod 755 /data/simpleperf
adb shell "/data/simpleperf record  -g -p `pidof camerahalserver` --duration 120 -f 100 -o /sdcard/perf.data"
adb shell /data/simpleperf --log error report -i /sdcard/perf.data > 1-self.txt
adb shell /data/simpleperf --log error report --children -i /sdcard/perf.data > 2-children.txt
adb shell /data/simpleperf --log error report -g -i /sdcard/perf.data > 3-caller.txt
adb shell /data/simpleperf --log error report -g callee -i /sdcard/perf.data > 4-callee.txt