Jac*_*kWM 11 linux android cpu-usage
当我使用TOP命令时,我可以得到以下信息:
shell@android:/ $ top -n 1
User 31%, System 10%, IOW 0%, IRQ 0%
User 346 + Nice 10 + Sys 120 + Idle 637 + IOW 6 + IRQ 0 + SIRQ 2 = 1121
PID PR CPU% S #THR VSS RSS PCY UID Name
481 1 26% S 89 762832K 81688K fg system system_server
1699 0 5% S 27 676472K 39092K fg u0_a72 wm.cs.systemmonitor
11243 0 3% S 28 673140K 29796K bg u0_a111 com.weather.Weather
13327 2 1% S 23 680472K 35844K bg u0_a83 com.rhmsoft.fm
659 0 1% S 17 663044K 33136K bg u0_a13 android.process.media
20260 1 0% R 1 1208K 508K shell top
Run Code Online (Sandbox Code Playgroud)
我们可以看到CPU%圆是整数,有没有什么方法可以得到CPU%更高精度的过程?
- 对赏金的澄清 - 亚历克斯
问题涉及Android系统,最好是非root设备.虽然Android为Java应用程序提供了高级的分析技术,但本机代码(C++)的工具却很有限.Android上的top命令允许显示系统中运行的所有线程的统计信息,包括Java线程和C++线程.我正在寻找一个有助于以下任务的答案:
我的应用程序在后台处于非活动状态时使用2%CPU,而应低于0.1%.如果我运行top -t,对于属于我的进程的所有15个线程,我得到0%(一些线程是Java线程,例如Main,UI线程;其他线程是永远不会连接到JVM的pthread).我怎么能猜出哪个线程吃电池?
我很乐意获得关于这个意外活动的更多细节,Android提供了很好的帮助程序,如TraceView for Java线程.任何有关本机代码工具的见解都将受到高度赞赏.
您没有在帖子中提及它,但在评论中您说您确实需要每个线程的CPU利用率,而不是每个进程.
如果找不到足够准确的工具,可以按照手册页中的/proc/[pid]/task/[ThreadName]描述直接查看/proc.这使得自执行开始以来"时钟滴答"中消耗的总CPU时间.获得比这更好的分辨率可能很难或不可能.
编辑
根据OP的评论,列出相关信息的命令是:
adb shell cat /proc/${pid}/task/*/stat | awk -F\ '{print $1, $14}'
Run Code Online (Sandbox Code Playgroud)
这只是catS上的正确/proc文件到调试主机,它运行一个小awk程序打印列pid和user time.如果不可用,您也可以轻松使用cut -d " " -f1,14或类似的内容perl来获取列awk.
| 归档时间: |
|
| 查看次数: |
21192 次 |
| 最近记录: |