64 核服务器买回来,为什么只快了 4 倍?
这堵墙 1967 年就砌好了。今天你来亲手撞一次。
数据组的一份报表任务要跑 100 分钟。老板发话:压进 25 分钟以内, 预算管够,服务器随便加。你的任务:达标。
串行比例:任务里有多少部分一个核干活时其余核只能干等。选一个开局,或拖下面的滑块。
青色线是你,红色虚线是老板的目标(4x),黄色虚线是这串代码的天花板。曲线再陡,也穿不过天花板。
s 是串行比例,n 是核心数。分母里的 s 永远除不掉,所以 n 拉到无穷大, 加速比也只能逼近 1/s。串行 25%,天花板就是 4 倍——你烧再多的钱, 只是在逼近它,永远踩不到它。
这个公式叫阿姆达尔定律,Gene Amdahl 在 1967 年发表。当年没人在意: 那会儿单核性能一年涨一半,谁需要并行。2004 年前后主频撞上功耗墙, 全行业转头堆核数,这个半个多世纪前的公式才变成每个架构师头顶的墙。
砸穿它的方法只有一个:回过头优化那个 s。demo 里的「优化代码」按钮 每点一次串行减 1%——真实世界里,这一下往往比你想象中贵得多。