有现场,adb shell进入系统:
top -H -b -d 1 -m 10 -p `pidof android.hardware.audio.service`//持续输出指定进程top10cpu占用的线程
top -H -b -d 1 -m 10 -p 6008,10003,4765?> /data/local/tmp/top.txt?//持续输出指定进程top10 cpu占用的线程
top -b -d 1 -m 10 > /data/local/tmp/top.txt?//持续输出top10进程cpu占用
每天版本有monkey压测,会通过上述命令持续抓取进程cpu占用,如果发现进程cpu占用超过阈值,就抓取这个进程的线程cpu占用,生成一张cpu变化的趋势图
没现场,判断cpu是否超标,通过system_monitor_service进程定期获取cpu占用率。system_monitor_service进程是一个Android的native进程,在init.rc启动时拉起来,每隔1分钟从"/proc/stat"获取CPU total使用率,再从"/proc/pid/cmdline"读取每个进程的cpu使用率,打印系统CPU total占用率和top10进程的cpu使用率到log里面
system_monitor_service