在计算密集型系统中,添加更多节点是否会导致(近)线性性能提升?

In a computational intensive system, could adding more nodes result in (near)linear performance increase?

假设有一个服务器集群,执行计算密集型工作。

假设这个系统中没有数据库、文件存储或任何类似的东西。

假设集群中的每个节点都具备独立计算能力。

在这些假设下,添加更多节点是否会带来(接近)线性的性能提升?

如果没有,限制条件是什么?

嗯,很明显,如果没有其他限制,可能 获得线性性能提升。您可能会受到控制节点需要划分问题和合并结果的时间、节点之间的一般通信或其他因素的限制。 假设您已经 运行 在集群上进行计算,您可以 运行 在集群的不同子部分上进行一些基准测试,以获得您的算法如何扩展到您已有的节点数量的曲线.如果曲线在最后仍然线性缩放,您可能会认为它会继续这样做一段时间。

根据算法的不同,性能提升甚至可能是超线性的。如果内存访问时间是瓶颈的一部分,并且通过将问题分布在更多节点上,每个节点需要在内存中保留整个工作集的一小部分,那么您将获得更少的磁盘访问、更多的缓存命中等,这就是这种情况.不过,这种情况可能很少发生。