从 CPU/计算的角度来看:

从 CPU/计算的角度来看:

我在公共计算服务器上运行模拟。由于模拟的性质,其 CPU 使用率在很大范围内波动(0-60%)。这会影响其他人的工作速度吗?总体 CPU 使用率不超过 90%。

问题是,一个任务的 CPU 使用率波动会如何影响其他任务的速度,其中总体 CPU 使用率始终保持低于 100%,即 CPU 没有超载。

附图显示了我所说的 CPU 的振荡使用情况

在此处输入图片描述

答案1

因为似乎没有人回答这个问题:是的,它会减慢其他进程的速度。

从 CPU/计算的角度来看:

CPU 每秒的工作量可能不会超过其每秒可以完成的工作量(即负载),但当它们必须使用不同的数据集执行不同的任务时,它们的效率会降低。本主题中要研究的关键词是上下文切换和缓存命中。

用一个等价的东西来比喻:把 CPU 想象成一个秘书,你给他分配工作。如果她只做一件工作,并且花一个小时做这件事,那么她/他就会比尝试做 60 件工作每件花一分钟更有效率。这其中的一部分就是从一项工作(上下文)切换到另一项工作,这需要时间。

另一部分是 CPU 上的缓存。它保存了它所处理的数据的本地副本。这样做是因为内存访问相对较慢。一旦你切换任务,你就会开始处理一组新数据。这意味着获取新信息。由于缓存中的空间有限,这意味着要丢弃旧数据。一旦你切换回来,这种情况就会再次发生。然后再次……

然后,在现代 CPU 上有一个热预算。CPU 可以一直以常规最大速度运行。这样做会变热,但产生的热量和散发的热量应该保持平衡。如果 CPU 的工作较少,它可以冷却下来。这有效地为其提供了一个小的热缓冲。此缓冲区与 Intel 和 AMD 现在称为 turbo 的功能一起使用。当 CPU 相对较冷并且有大量工作时,CPU 会增加其时钟速度并加快工作速度。它不能长时间维持这种状态,但在冷 CPU(具有多余的热预算)上执行短暂但紧张的任务将比在已经用尽其热预算的 CPU 上运行得更快。

记忆:

从内存角度来看:您的应用程序将至少使用一些内存。这意味着其他任务(例如 IO 缓冲区)可用的内存更少。这会降低系统速度。

输入输出:

如果您的应用程序使 I/O 达到最大值(例如磁盘访问),那么即使它降低了 CPU 速度也无所谓。如果每个其他程序都必须在队列中等待磁盘访问,那么即使 CPU 负载不超过 100%,您也会降低系统速度。


总结:是的,持续繁忙的应用程序很可能会拖慢系统速度。但拖慢程度可能从几乎察觉不到到显著下降。

相关内容