gpt4 book ai didi

android - 如何获得比TOP命令更高精度的 "CPU%"?

转载 作者:IT王子 更新时间:2023-10-29 00:00:52 25 4
gpt4 key购买 nike

当我使用 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

我们可以看到 CPU% 是整数,有什么办法可以更高精度地获取进程的 CPU% 吗?

-- 关于赏金的澄清 -- Alex

问题是针对安卓系统的,最好是非root设备。虽然 Android 为 Java 应用程序提供了高级分析技术,但用于 native 代码 (C++) 的工具是有限的。 Android 上的 top 命令允许显示系统中运行的所有线程的统计信息,包括 Java 线程和 C++ 线程。我正在寻找有助于完成以下任务的答案:

我的应用程序在后台处于非 Activity 状态时使用 2% 的 CPU,而它应该低于 0.1%。如果我运行 top -t,属于我的进程的所有 15 个线程都得到 0%(一些线程是 Java 线程,例如 Main、UI 线程;其他线程是永远不会附加到 JVM 的 pthreads)。我怎么能猜出哪个线程耗尽了电池?

我很高兴获得有关此意外 Activity 的更多详细信息,Android 提供了很好的帮助,例如 TraceView对于 Java 线程。任何有关 native 代码工具的见解都将受到高度赞赏。

最佳答案

您没有在帖子中提及它,但在评论中您说您确实需要每个线程而不是每个进程的 CPU 利用率。

如果找不到足够准确的工具,可以直接在/proc/[pid]/task/[ThreadName]中查找,如the man page for /proc中所述。 .这给出了自执行开始以来在“时钟滴答”中消耗的总 CPU 时间。获得比这更好的分辨率可能很困难或不可能。

编辑

根据OP的评论,列出相关信息的命令是:

adb shell cat /proc/${pid}/task/*/stat | awk -F\ '{print $1, $14}' 

这只是 cat 将正确的 /proc 文件发送到调试主机,调试主机运行一个微型 awk 程序来打印 的列code>pid用户时间。如果 awk 不可用,您还可以轻松地使用 cut -d ""-f1,14perl 中的类似内容来获取列.

关于android - 如何获得比TOP命令更高精度的 "CPU%"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15148193/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com