描述;top";Android中的命令
我正在制作一个小的Android应用程序来显示当前的CPU总使用量,比如Windows任务管理器中的tab性能。 我使用“top-m1-n1-d1”来获取CPU使用率,但我并不真正理解“top”的结果 结果如下:描述;top";Android中的命令,android,memory-management,cpu-usage,top-command,Android,Memory Management,Cpu Usage,Top Command,我正在制作一个小的Android应用程序来显示当前的CPU总使用量,比如Windows任务管理器中的tab性能。 我使用“top-m1-n1-d1”来获取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 UI
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使用率百分比或多或少地表示为
(100-idle\u百分比)
。在您的代码片段中,Idle
百分比为73,这使您的CPU使用率达到27%
至于每个进程的CPU使用情况,这将是最后两行中的第二列。top命令是一个linux命令。 看一看 谢谢
Deepak这个问题的公认答案不正确。输出的第二行是在该分组中启动的线程/进程的数量。在上述情况下,您的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个进程使用了总数的9%。这个问题的实际答案是直截了当的-可以从android top的第一行输出计算出来
User 5%, system 15%, IOW 0%, IRQ 0%
总计=所有百分比之和=5+15=20%
关于第二行的另一个答案是错误的。第二行实际上给出了调度程序在该特定状态下所花费的时间-user/sys/idle/iow injiffies
(通常为10ms)介于top的一个输出和top的下一个输出之间-在OP的情况下top-d1
-每秒打印一次使用情况-每个核心的jiffie总数约为100(假设为10ms/jiffy)-类似于百分比值
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以获得每个值如何计算的完整逻辑。谢谢您的建议,这对我帮助太大了。@jedmodson提到了他的答案,从发布的示例中,
73
是空闲线程的数量,不是空闲百分比。我阅读了本手册,但不明白如何计算CPU使用率。如果CPU有多核,该怎么解释?不正确,请参阅下面的正确答案()不正确,请检查此源代码:由于Android 8.0,top由toybox toolset提供:这应该是可接受的答案。第二行给出了所花费的时间,而不是线程。