问题背景
根据我的理解,负载值(例如由 所示top
)允许(与系统有多少个 CPU 核心的知识一起)非常快速地评估使用了哪一个计算能力份额。如果具有四个核心的系统有两个负载,这意味着它可以完成两倍的工作,而不会减慢任何进程(在 CPU 级别,即忽略 I/O)。
我刚刚注意到我的系统负载为 2.7(四核)的信息可能比我想象的用处更少,因为比较值不是恒定的:
start cmd: # grep "^cpu MHz" /proc/cpuinfo
cpu MHz : 800.000
cpu MHz : 800.000
cpu MHz : 2050.000
cpu MHz : 800.000
我的CPU最高运行频率约为2GHz。当部分空闲时,每个内核(单独)的时钟频率可以降低至最低 800MHz。当前对CPU的计算性能的要求是明确的。但比较值(“它能做到的最大值是多少?”)在很大程度上取决于当前频率。
与CPU相比可以负载必须要低得多。示例:所有内核均以 2GHz 运行,负载(由多个正在运行的进程组合而成)为 1。如果所有核心都以 800MHz 运行,那么相同的工作负载(我猜)将被测量为大约 2.5 的负载。
因此我猜想,为了有用,负载值应该根据 CPU 全速性能来衡量。即内核测量到负载为 2.5,但它知道它仅在 800MHz 下运行,因此它知道负载实际上仅为 1.0。
我知道在某些情况下负载不依赖于频率。如果有两个(单线程)进程消耗尽可能多的 CPU,但系统上没有其他进程需要太多 CPU,那么无论在哪个频率,负载始终是两个。但这不是典型案例。
问题
内核的负载值是指当前频率(我假设的)还是最大可用频率?
有没有一个工具可以考虑到这一点?即显示两个值的工具:“负载:2.5(测量)/1.0(校正)”