【问题标题】:Descrip "top" command in Android描述 Android 中的“top”命令
【发布时间】:2011-09-02 07:32:57
【问题描述】:

我正在制作一个小型 Android 应用程序来显示当前的总 CPU 使用率,例如 Windows 任务管理器中的选项卡性能。 我使用“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 使用率?

【问题讨论】:

    标签: android memory-management cpu-usage top-command


    【解决方案1】:

    此问题的公认答案不正确。输出的第二行是在该分组中启动的线程/进程的数量。在上面你的 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%。

    【讨论】:

    【解决方案2】:

    这个问题的实际答案是直截了当的——可以从 android top 输出的第一行计算出来

    User 5%, system 15%, IOW 0%, IRQ 0%
    

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

    关于第二行的另一个答案非常错误。第二行实际上给出了调度程序在该特定状态下花费的时间 - jiffies 中的 user/sys/idle/iow (通常为 10 毫秒)在 top 的一个输出和 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 jiffies。

    请参阅 AOSP top sourcecode,了解如何计算每个值的完整逻辑。

    【讨论】:

    • 这应该是公认的答案。第二行给出了花费的时间,而不是线程数。
    【解决方案3】:

    CPU 使用百分比以(100-idle_percentage) 给出,或多或少。在您的 sn-p 中,Idle 的百分比为 73,这使您的 CPU 使用率为 27%。

    至于每个进程的 CPU 使用率,这将是最后两行的第二列。

    【讨论】:

    • 谢谢你的建议,对我帮助太大了。
    • 正如@jedmodson 提到的是他的答案,从发布的示例73 是空闲线程的数量,而不是空闲百分比。
    【解决方案4】:

    top 命令是一个 linux 命令。 看看here

    谢谢 迪帕克

    【讨论】:

    • 我阅读了这本手册,但不明白如何计算 CPU 使用率。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-02
    • 1970-01-01
    • 2017-06-01
    • 2017-07-25
    • 2021-11-24
    • 1970-01-01
    相关资源
    最近更新 更多