2

我正在尝试使用我的 android 手机中的 top 命令监控 CPU 使用情况,使用以下命令:

Process p = Runtime.getRuntime().exec("top -m 15 -d 1 -n 1");

我得到的顶级命令的输出之一是:

User 2%, System 9%, IOW 0%, IRQ 0%
User 3 + Nice 0 + Sys 10 + Idle 95 + IOW 0 + IRQ 0 + SIRQ 0 = 108

PID    PR    CPU%    S     #THR     VSS     RSS    PCY      UID     Name
743     0     15%    R        1    2416K    948K    bg    u0_a692   top
15351   0      2%    S       79 1921396K 114536K    bg    u0_a59    com.google.android.googlequicksearchbox:search
167     0      1%    S        6   9668K   3512K     logd            /system/bin/logd
496     0      0%    S        1      0K      0K     root            kworker/0:3
20447   0      0%    S        1      0K      0K     root            kworker/u:34

我正在使用具有四核芯片即 4 个 CPU 的 Nexus 4

这里的总 CPU 使用率是(直观地)用户 + 系统 = 11%。但是,该top进程本身占用了 15% 的 CPU。大多数时候都会发生。这是我使用以 1 秒的间隔运行 top 命令绘制的图表。在此处输入图像描述

在大多数情况下,该top命令使用的 CPU 比用户和系统 CPU 使用率的总和还要多。

是什么导致了这种行为?

我想计算在空闲、睡眠状态下使用了多少 CPU。所以,我想top从用户和系统的综合 CPU 使用率中减去进程使用的 CPU。但是,拥有这些输出并不能帮助我准确确定手机正在使用多少 CPU。

另外,一个进程的 CPU% 是用户和系统的总和吗?即,如果一个进程正在使用 10% 的 CPU,它实际上是否使用了 6% 的用户和 4% 的系统 CPU?

4

0 回答 0