在Android中描述"top"命令

10

我正在制作一个小型的Android应用程序,像Windows任务管理器中的“性能”选项卡一样显示当前总CPU使用率。

我使用“top -m 1 -n 1 -d 1”获取CPU使用情况,但我实际上不太理解“top”的结果。

结果类似于:

User 5%, system 15%, IOW 0%, IRQ 0%
User 5 + Nice 0 + Sys 14 + Idle 73 + IOW 0 + IRQ 0 + SIRQ 0 = 92
PID     CPU%  S   #THR    VSS    RSS    UID     Name
213     11%   R    1      900K   340K   app_16   top

CPU使用率 = ??? 如何计算总CPU使用率?

4个回答

10
这个问题的被接受的答案是不正确的。输出的第二行是在该分组中启动的线程/进程数。你的 CPU 使用率为 20%。其中 5% 来自用户应用程序,15% 来自系统应用程序。根据第二行,你有 73 个空闲线程、14 个系统线程和 5 个用户线程。
例如,这是我 Droid 的当前 top 快照。
User 6%, System 5%, IOW 0%, IRQ 0%
User 21 + Nice 0 + Sys 16 + Idle 270 + IOW 0 + IRQ 3 + SIRQ 0 = 310

  PID CPU% S  #THR     VSS     RSS PCY UID      Name
30994   4% S    19 134912K  24140K  bg app_24   edu.vu.isis.ammo.spotreport
 1021   3% S    57 217400K  58504K  fg system   system_server
20911   2% R     1    880K    400K  fg shell    top
 1053   0% S     1      0K      0K  fg root     tiwlan_wq
  995   0% S     2   1272K    128K  fg compass  /system/bin/akmd2

根据被接受的答案,我将会拥有310%的CPU使用率,但实际上这只是线程数。我相当确定我实际上只使用了11%的CPU,其中前三个进程使用了总量的9%。


如果CPU具有多个核心,那么它的解释是什么? - Rilwan
1
不正确,请参考以下正确答案(https://dev59.com/2G025IYBdhLWcg3wOzTY#15497011) - Denisigo
错误的,请检查此源代码:https://android.googlesource.com/platform/system/core.git/+/refs/tags/android-7.1.2_r36/toolbox/top.c#462 - Joël Esponde
自 Android 8.0 开始,top 命令由 toybox 工具集提供:https://android.googlesource.com/platform/system/core.git/+/refs/heads/master/shell_and_utilities/README.md - Joël Esponde

6
实际上,这个问题的答案很简单 - 可以从Android top命令输出的第一行计算得出。
User 5%, system 15%, IOW 0%, IRQ 0%

总和 = 所有百分比之和 = 5+15 = 20%

关于第二行的另一个答案是错误的。实际上,第二行提供了调度器在特定状态下花费的时间 - 用户/系统/空闲/iow中的jiffies(通常为10毫秒)在top的一次输出和下一次输出之间 - 在OP的情况下top -d 1 - 每秒打印一次使用情况 - 每个核心的jiffies总数将是~100(假设每个jiffy为10ms),这将类似于百分比值。

User 5 + Nice 0 + Sys 14 + Idle 73 + IOW 0 + IRQ 0 + SIRQ 0 = 92

在此情况下,如果 -d 值更高或者有多个核心,则值将更大。

User 21 + Nice 0 + Sys 16 + Idle 270 + IOW 0 + IRQ 3 + SIRQ 0 = 310

这可能是没有任何-d选项,因此top采用默认延迟3秒= 300滴答声。

请参考AOSP top源代码来获取每个值如何计算的完整逻辑。


这应该是被接受的答案。第二行给出的是时间花费,而不是线程数。 - Vikram Gupta

-5

CPU使用率百分比大致为(100-空闲百分比)。在您的片段中,Idle百分比为73,这使得您的CPU使用率为27%。

至于每个进程的CPU使用情况,那将是您最后2行的第二列。


1
正如@jedmodson在他的回答中提到的那样,从发布的示例中,“73”是空闲线程数,而不是空闲百分比。 - HeatfanJohn

-5

top 命令是一个 Linux 命令。 请到这里查看。

谢谢 Deepak


我阅读了这个手册,但不理解如何计算 CPU 使用率。 - VietAnh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接