这是一个双核机器,负载约24,但CPU使用率从60-80%左右反弹,从来没有达到100%,那么如何能有许多进程在等待? I / O几乎没有,因为一切都从内存数据库中读取,networking只使用七兆位的千兆位连接。 增加额外的内核是否会减less负载,或者是CPU不是问题,因为它甚至没有达到顶点?
没有。
除了Seti @ Home之外(或者现在的任何forms)尝试运行,你会发现你的服务器负载固定在1.0,尽pipe你的CPU将被固定在100%的使用率。
从UPTIME(1)手册页:
系统负载平均值是处于可运行状态或不可中断状态的进程的平均数量。 处于可运行状态的进程使用CPU或等待使用CPU。 处于不间断状态的进程正在等待一些I / O访问,例如等待磁盘。 平均值是在三个时间间隔内进行的。 对于系统中的CPU数量,负载平均值没有进行标准化,所以平均负载1意味着一个CPU系统在4 CPU系统上一直加载,这意味着它在75%的时间内处于空闲状态。
例如,我们有一台服务器,除了运行Spamassassin和两个Xeon CPU(总共4个虚拟CPU),它有时达到100%的CPU利用率,但更多的时候通过读取和写入大量的磁盘IO贝叶斯数据库。 因此,系统负载通常非常高,在20-40左右,因为有很多进程正在等待磁盘。
负载平均值是可运行状态下的进程数量:按顶部的“i”将其限制为这些值。 这包括(R)运行和(D)等待磁盘的进程。 它真的没有做任何IO? 它没有进入交换?
这些过程中的重要内存用户是不是一个重要的数字? 因为您可能会看到大量caching未命中的影响。
内存很慢,所以CPU有一个(或更多的几个级别的)caching。 现在,如果进程A在CPU上并且已经用自己的内存加载了大部分caching,那么进程B出现并且想要用其内存来填充caching,在发生这种情况时会有一系列等待,从而导致CPU减less。 然后,stream程A迟早会出现,你又要经历一遍……