Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/211.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
描述;top";Android中的命令_Android_Memory Management_Cpu Usage_Top Command - Fatal编程技术网

描述;top";Android中的命令

描述;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

我正在制作一个小的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    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 in
jiffies
(通常为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提供:这应该是可接受的答案。第二行给出了所花费的时间,而不是线程。