我正在尝试使用我的 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?