在冰淇淋三明治上,开发人员选项中的一个选项是“显示 CPU 使用情况”,它在屏幕上添加了一个覆盖(见下面的截图)。
我的问题是,我如何读取数据?我猜包名是当前活动的进程,但是后面的红绿条是什么意思呢?包裹顶部的3个数字是什么?
这应该是 Unix 平均负载。维基百科有一篇关于这个的好文章。
这些数字显示了不同时间间隔内 CPU 的平均负载。从左到右:最后一分钟/最后五分钟/最后十五分钟
到目前为止,这是我能找到的最有用的信息来源。显然,这些数字不会以 % 表示平均负载:http: //forum.xda-developers.com/showthread.php ?t=1495763
正如其他答案所指出的那样,在 UNIX 系统上,这些数字代表1/5/15 分钟周期内的CPU 负载平均值。但在 Linux(以及随后的 Android)上,它代表的是不同的东西。
在可追溯到 1993 年的内核补丁(一篇关于该主题的深度文章)之后,在 Linux 中,负载平均数不再严格代表CPU负载:因为计算不仅考虑了 CPU 绑定进程,还考虑了处于不间断等待状态的进程 - 最初的目标是以这种方式考虑 I/O 绑定进程,以表示更多的“系统负载”而不仅仅是 CPU 负载. 问题是自 1993 年以来,不间断状态的使用在 Linux 内核中有所增长,它不再通常代表 I/O 绑定进程。一些 Linux 开发人员使用不间断等待作为一种简单的等待来避免在其实现中容纳信号,从而进一步加剧了这个问题。结果,在 Linux(和 Android)中,我们可以看到不客观地代表真实负载的倾斜的高负载平均数字。有 Android 用户报告称,不合理的高负载平均值与低 CPU 利用率形成鲜明对比。例如,即使系统和 CPU 处于空闲状态,我的旧 Android 手机(具有 2 个 CPU 内核)通常显示的平均负载约为 12。因此,Linux (Android) 中的平均负载数并不是一个可靠的性能指标。
更多关于“平均负载”显示超过 1 分钟、5 分钟和 15 分钟的 CPU 负载
Linux、Mac 和其他类 Unix 系统显示“平均负载”数字。这些数字告诉您系统的 CPU、磁盘和其他资源的繁忙程度。一开始它们并不能不言自明,但很容易熟悉它们。
WIKI: example, one can interpret a load average of "1.73 0.60 7.98" on a single-CPU system as:
during the last minute, the system was overloaded by 73% on average (1.73 runnable processes, so that 0.73 processes had to wait for a turn for a single CPU system on average).
during the last 5 minutes, the CPU was idling 40% of the time on average.
during the last 15 minutes, the system was overloaded 698% on average (7.98 runnable processes, so that 6.98 processes had to wait for a turn for a single CPU system on average) if dual core mean: 798% - 200% = 598%.
您可能有一个具有多个 CPU 或多核 CPU 的系统。在这样的系统上,平均负载数字的工作方式略有不同。例如,如果您在单 CPU 系统上的平均负载为 2,这意味着您的系统过载了 100% — 在整个时间段内,一个进程正在使用 CPU,而另一个进程正在等待。在具有两个 CPU 的系统上,这将是完全使用——两个不同的进程一直在使用两个不同的 CPU。在具有四个 CPU 的系统上,这将是一半的使用率——两个进程正在使用两个 CPU,而两个 CPU 处于空闲状态。
要了解负载平均数,您需要知道系统有多少 CPU。平均负载为 6.03 表示具有单个 CPU 的系统严重过载,但在具有 8 个 CPU 的计算机上会很好。
更多信息:链接
来自高性能 Android 应用程序书(第 157 页):