我有一个2GB RAM的虚拟服务器,平均使用总是低于1GB的RAM,所以我得到了一个新的完全相同的目的,我只有1GB的RAM。 但在我看来,它现在使用更多的CPU。
有更less的内存意味着它会使用更多的CPU? 即使平均内存使用率不是100%?
//它是一个带有Plesk面板的Web服务器
答案不是那么直截了当,而是基本上 – 是的。
通过减lessRAM,通常会迫使系统在HDD上使用更多的虚拟内存。 这导致CPU不得不做更多的工作,例如在RAM和HDD之间移动数据,并调整页表,特别是当有上下文切换时。 因此,应用程序可用的CPU时间更less。
这就是为什么如果你可以select花同样的钱来增加内存的两倍,或者提高CPU的速度5%-10%,那么把内存加倍的时间通常会更好。
CPU使用率通常是一个红鲱鱼,因为你不知道它是否代表有用的工作。 如果您的CPU使用率很高,则可能表示应用程序正在执行大量有用的工作(好); 另一方面,这可能表明应用程序的效率非常低(不好)。
最好把重点放在有用工作的直接测量上,比如应用程序的吞吐量和延迟 。 对于Web服务器,这些将包括诸如同时用户的最大数量以及服务器响应每个请求所花费的时间等指标。 然后,您可以将这些指标与CPU使用情况进行比较,以了解CPU效率。
回答您的具体问题:这取决于您的特定环境中的性能瓶颈。
在许多情况下,添加RAM实际上会增加CPU使用率,因为这样可以做更多有用的工作 – 这是一件好事。 例如,设想一个负载很重的Web服务器提供文件。 性能瓶颈很可能是磁盘I / O; 应用程序将花费大部分时间等待磁盘,所以CPU使用率将会相当低。 如果您添加了更多的RAM来caching磁盘上的文件,应用程序将花费更less的时间等待,更多的时间处理,因此CPU使用率和吞吐量会更高。
它也可以用另一种方式工作。 例如,在空间复杂性和时间复杂度之间经常存在计算机algorithm的折衷; 也就是说,额外的RAM允许应用程序使用更less的CPU,所以CPU使用率会更低(或者每个CPU周期可以获得更多的吞吐量)。 @sybreon给出了一个很好的例子,说明如何通过增加内存来提高CPU使用率,因为系统不必花费太多的精力来pipe理受限制的资源。