在Android中描述“ top”命令

问题描述

| 我正在制作一个小型Android应用程序,以显示当前的总cpu使用情况,例如Windows Task Manager中的Performance标签。 我使用\“ 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使用率?     

解决方法

该问题的可接受答案不正确。输出的第二行是在该分组中启动的线程/进程的数量。上面的CPU使用率是20%。其中5%来自用户应用,而15%来自系统应用。您有73个空闲线程,14个系统线程和5个用户线程(根据第二行)。 例如,这是Droid的当前顶级快照。
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,而前3个进程使用的是总CPU的9%。     ,该问题的实际答案很简单-可以从android top输出的第一行计算得出
User 5%,system 15%,IRQ 0%
总计=所有百分比的总和= 5 + 15 = 20% 关于第二行的另一个答案是如此错误。第二行实际上给出了计划程序在该特定状态下花费的时间-用户/ sys / idle / iow在top的一个输出与top的下一个输出之间以
jiffies
(通常为10ms)显示-在OP的情况下为
top -d 1
-每次打印使用情况第二个-每个核心的抖动总数约为100个(假设每个抖动10毫秒)-类似于百分比值。
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
这可能没有任何“ 6”选项,因此“ 9”需要3秒的默认延迟= 300 jiffies。 请参考AOSP顶级源代码,以获取有关如何计算每个值的完整逻辑。     ,CPU使用百分比大致等于ѭ10as。在您的代码段中,ѭ11%的百分比为73,这使您的CPU使用率达到27%。 至于每个进程的CPU使用率,这将是最后两行的第二列。     ,top命令是linux命令。 在这里看看 谢谢 迪帕克