app=$1 round=$2 dir=$3 prev_alloc=$(adb shell cat /sys/kernel/mm/transparent_hugepage/hugepages-64kB/stats/anon_fault_alloc) prev_alloc_fallback=$(adb shell cat /sys/kernel/mm/transparent_hugepage/hugepages-64kB/stats/anon_fault_fallback) adb shell "simpleperf stat -e dTLB-loads,dTLB-load-misses,iTLB-loads,iTLB-load-misses,page-faults,raw-stall-backend-mem --app $app --duration 3 -o /data/local/tmp/simpleperf-"$app"-"$round".txt" & echo "即将抓的perfetto, 请1秒后启动应用 $app" adb shell perfetto -c - --txt -o /data/misc/perfetto-traces/trace-"$app"-"$round".ptrace \ < $dir/meminfo-"$app"-"$round".txt # 计算大页分配成功率 inc_alloc=$((alloc-prev_alloc)) inc_alloc_fallback=$((alloc_fallback-prev_alloc_fallback)) inc_total=$((inc_alloc+inc_alloc_fallback)) if [ $inc_total -ne 0 ]; then inc_ratio=$(echo "scale=4; $inc_alloc / $inc_total" | bc) else inc_ratio=1 fi echo -e "$inc_ratio\t$inc_total" > $dir/ratio-"$app"-"$round".txt adb pull /data/misc/perfetto-traces/trace-"$app"-"$round".ptrace $dir/ adb pull /data/local/tmp/simpleperf-"$app"-"$round".txt $dir/ adb shell "rm /data/misc/perfetto-traces/trace-"$app"-"$round".ptrace" adb shell "rm /data/local/tmp/simpleperf-"$app"-"$round".txt"