Skip to content
About
Main content

Amdahl, Gustafson and the Universal Scalability Law

Why does adding workers first stop helping, and then make things slower?

Amdahl vs. Gustafson

Amdahl's Law (fixed work). If a fraction s of a job is serial (cannot be parallelized), the speedup on N processors is

RelationshipAmdahl's Law →
fraction of a job that is serial (cannot be parallelized)
number of processors
s = 1%s = 5%s = 20%
Data table
Speedup by processors, for three serial fractions
Processors NseriesSpeedup
1s = 1%1×
1.09s = 1%1.09×
1.19s = 1%1.19×
1.3s = 1%1.29×
1.41s = 1%1.41×
1.54s = 1%1.53×
1.68s = 1%1.67×
1.83s = 1%1.82×
2s = 1%1.98×
2.18s = 1%2.15×
2.37s = 1%2.34×
2.59s = 1%2.54×
2.82s = 1%2.77×
3.07s = 1%3.01×
3.35s = 1%3.27×
3.65s = 1%3.56×
3.98s = 1%3.87×
4.34s = 1%4.2×
4.73s = 1%4.56×
5.16s = 1%4.95×
5.62s = 1%5.37×
6.13s = 1%5.83×
6.68s = 1%6.32×
7.29s = 1%6.86×
7.94s = 1%7.43×
8.66s = 1%8.04×
9.44s = 1%8.71×
10.3s = 1%9.42×
11.2s = 1%10.2×
12.2s = 1%11×
13.3s = 1%11.9×
14.5s = 1%12.8×
15.8s = 1%13.8×
17.3s = 1%14.9×
18.8s = 1%16×
20.5s = 1%17.2×
22.4s = 1%18.4×
24.4s = 1%19.8×
26.6s = 1%21.2×
29s = 1%22.7×
31.6s = 1%24.2×
34.5s = 1%25.8×
37.6s = 1%27.5×
41s = 1%29.3×
44.7s = 1%31.1×
48.7s = 1%33×
53.1s = 1%34.9×
57.9s = 1%36.9×
63.1s = 1%38.9×
68.8s = 1%41×
75s = 1%43.1×
81.8s = 1%45.2×
89.1s = 1%47.4×
97.2s = 1%49.5×
106s = 1%51.7×
115s = 1%53.8×
126s = 1%56×
137s = 1%58.1×
150s = 1%60.2×
163s = 1%62.2×
178s = 1%64.2×
194s = 1%66.2×
211s = 1%68.1×
230s = 1%69.9×
251s = 1%71.7×
274s = 1%73.4×
299s = 1%75.1×
325s = 1%76.7×
355s = 1%78.2×
387s = 1%79.6×
422s = 1%81×
460s = 1%82.3×
501s = 1%83.5×
546s = 1%84.7×
596s = 1%85.7×
649s = 1%86.8×
708s = 1%87.7×
772s = 1%88.6×
841s = 1%89.5×
917s = 1%90.3×
1Ks = 1%91×
1s = 5%1×
1.09s = 5%1.09×
1.19s = 5%1.18×
1.3s = 5%1.28×
1.41s = 5%1.38×
1.54s = 5%1.5×
1.68s = 5%1.62×
1.83s = 5%1.76×
2s = 5%1.9×
2.18s = 5%2.05×
2.37s = 5%2.22×
2.59s = 5%2.4×
2.82s = 5%2.58×
3.07s = 5%2.78×
3.35s = 5%3×
3.65s = 5%3.22×
3.98s = 5%3.46×
4.34s = 5%3.72×
4.73s = 5%3.99×
5.16s = 5%4.27×
5.62s = 5%4.57×
6.13s = 5%4.88×
6.68s = 5%5.2×
7.29s = 5%5.54×
7.94s = 5%5.9×
8.66s = 5%6.26×
9.44s = 5%6.64×
10.3s = 5%7.03×
11.2s = 5%7.43×
12.2s = 5%7.83×
13.3s = 5%8.25×
14.5s = 5%8.67×
15.8s = 5%9.1×
17.3s = 5%9.53×
18.8s = 5%9.96×
20.5s = 5%10.4×
22.4s = 5%10.8×
24.4s = 5%11.2×
26.6s = 5%11.7×
29s = 5%12.1×
31.6s = 5%12.5×
34.5s = 5%12.9×
37.6s = 5%13.3×
41s = 5%13.7×
44.7s = 5%14×
48.7s = 5%14.4×
53.1s = 5%14.7×
57.9s = 5%15.1×
63.1s = 5%15.4×
68.8s = 5%15.7×
75s = 5%16×
81.8s = 5%16.2×
89.1s = 5%16.5×
97.2s = 5%16.7×
106s = 5%17×
115s = 5%17.2×
126s = 5%17.4×
137s = 5%17.6×
150s = 5%17.7×
163s = 5%17.9×
178s = 5%18.1×
194s = 5%18.2×
211s = 5%18.4×
230s = 5%18.5×
251s = 5%18.6×
274s = 5%18.7×
299s = 5%18.8×
325s = 5%18.9×
355s = 5%19×
387s = 5%19.1×
422s = 5%19.1×
460s = 5%19.2×
501s = 5%19.3×
546s = 5%19.3×
596s = 5%19.4×
649s = 5%19.4×
708s = 5%19.5×
772s = 5%19.5×
841s = 5%19.6×
917s = 5%19.6×
1Ks = 5%19.6×
1s = 20%1×
1.09s = 20%1.07×
1.19s = 20%1.15×
1.3s = 20%1.22×
1.41s = 20%1.3×
1.54s = 20%1.39×
1.68s = 20%1.48×
1.83s = 20%1.57×
2s = 20%1.66×
2.18s = 20%1.76×
2.37s = 20%1.86×
2.59s = 20%1.96×
2.82s = 20%2.07×
3.07s = 20%2.17×
3.35s = 20%2.28×
3.65s = 20%2.39×
3.98s = 20%2.49×
4.34s = 20%2.6×
4.73s = 20%2.71×
5.16s = 20%2.82×
5.62s = 20%2.92×
6.13s = 20%3.03×
6.68s = 20%3.13×
7.29s = 20%3.23×
7.94s = 20%3.33×
8.66s = 20%3.42×
9.44s = 20%3.51×
10.3s = 20%3.6×
11.2s = 20%3.69×
12.2s = 20%3.77×
13.3s = 20%3.85×
14.5s = 20%3.92×
15.8s = 20%3.99×
17.3s = 20%4.06×
18.8s = 20%4.12×
20.5s = 20%4.18×
22.4s = 20%4.24×
24.4s = 20%4.3×
26.6s = 20%4.35×
29s = 20%4.39×
31.6s = 20%4.44×
34.5s = 20%4.48×
37.6s = 20%4.52×
41s = 20%4.56×
44.7s = 20%4.59×
48.7s = 20%4.62×
53.1s = 20%4.65×
57.9s = 20%4.68×
63.1s = 20%4.7×
68.8s = 20%4.73×
75s = 20%4.75×
81.8s = 20%4.77×
89.1s = 20%4.79×
97.2s = 20%4.8×
106s = 20%4.82×
115s = 20%4.83×
126s = 20%4.85×
137s = 20%4.86×
150s = 20%4.87×
163s = 20%4.88×
178s = 20%4.89×
194s = 20%4.9×
211s = 20%4.91×
230s = 20%4.91×
251s = 20%4.92×
274s = 20%4.93×
299s = 20%4.93×
325s = 20%4.94×
355s = 20%4.94×
387s = 20%4.95×
422s = 20%4.95×
460s = 20%4.96×
501s = 20%4.96×
546s = 20%4.96×
596s = 20%4.97×
649s = 20%4.97×
708s = 20%4.97×
772s = 20%4.97×
841s = 20%4.98×
917s = 20%4.98×
1Ks = 20%4.98×

Example: with 5% serial work, the maximum is 20×, however many cores you add. At N = 100 you get 1 / (0.05 + 0.95/100) = 16.8×: 17% efficiency, 83% of the hardware wasted. This is the strong-scaling limit.

Gustafson's Law (fixed time). Problems grow with capacity. If the parallel part grows with N, speedup is : linear. This does not contradict Amdahl. It answers a different question.

fraction of a job that is serial
number of processors
s = 5%s = 20%
Data table
Scaled speedup by processors (the parallel part grows with N)
Processors NseriesSpeedup
1s = 5%1×
1.09s = 5%1.09×
1.19s = 5%1.18×
1.3s = 5%1.28×
1.41s = 5%1.39×
1.54s = 5%1.51×
1.68s = 5%1.64×
1.83s = 5%1.79×
2s = 5%1.95×
2.18s = 5%2.12×
2.37s = 5%2.3×
2.59s = 5%2.51×
2.82s = 5%2.73×
3.07s = 5%2.97×
3.35s = 5%3.23×
3.65s = 5%3.52×
3.98s = 5%3.83×
4.34s = 5%4.17×
4.73s = 5%4.54×
5.16s = 5%4.95×
5.62s = 5%5.39×
6.13s = 5%5.87×
6.68s = 5%6.4×
7.29s = 5%6.97×
7.94s = 5%7.6×
8.66s = 5%8.28×
9.44s = 5%9.02×
10.3s = 5%9.83×
11.2s = 5%10.7×
12.2s = 5%11.7×
13.3s = 5%12.7×
14.5s = 5%13.9×
15.8s = 5%15.1×
17.3s = 5%16.5×
18.8s = 5%17.9×
20.5s = 5%19.6×
22.4s = 5%21.3×
24.4s = 5%23.2×
26.6s = 5%25.3×
29s = 5%27.6×
31.6s = 5%30.1×
34.5s = 5%32.8×
37.6s = 5%35.8×
41s = 5%39×
44.7s = 5%42.5×
48.7s = 5%46.3×
53.1s = 5%50.5×
57.9s = 5%55×
63.1s = 5%60×
68.8s = 5%65.4×
75s = 5%71.3×
81.8s = 5%77.7×
89.1s = 5%84.7×
97.2s = 5%92.4×
106s = 5%101×
115s = 5%110×
126s = 5%120×
137s = 5%130×
150s = 5%142×
163s = 5%155×
178s = 5%169×
194s = 5%184×
211s = 5%201×
230s = 5%219×
251s = 5%239×
274s = 5%260×
299s = 5%284×
325s = 5%309×
355s = 5%337×
387s = 5%368×
422s = 5%401×
460s = 5%437×
501s = 5%476×
546s = 5%519×
596s = 5%566×
649s = 5%617×
708s = 5%673×
772s = 5%733×
841s = 5%799×
917s = 5%871×
1Ks = 5%950×
1s = 20%1×
1.09s = 20%1.07×
1.19s = 20%1.15×
1.3s = 20%1.24×
1.41s = 20%1.33×
1.54s = 20%1.43×
1.68s = 20%1.54×
1.83s = 20%1.66×
2s = 20%1.8×
2.18s = 20%1.94×
2.37s = 20%2.1×
2.59s = 20%2.27×
2.82s = 20%2.45×
3.07s = 20%2.66×
3.35s = 20%2.88×
3.65s = 20%3.12×
3.98s = 20%3.38×
4.34s = 20%3.67×
4.73s = 20%3.99×
5.16s = 20%4.33×
5.62s = 20%4.7×
6.13s = 20%5.1×
6.68s = 20%5.55×
7.29s = 20%6.03×
7.94s = 20%6.55×
8.66s = 20%7.13×
9.44s = 20%7.75×
10.3s = 20%8.43×
11.2s = 20%9.18×
12.2s = 20%9.99×
13.3s = 20%10.9×
14.5s = 20%11.8×
15.8s = 20%12.9×
17.3s = 20%14×
18.8s = 20%15.3×
20.5s = 20%16.6×
22.4s = 20%18.1×
24.4s = 20%19.7×
26.6s = 20%21.5×
29s = 20%23.4×
31.6s = 20%25.5×
34.5s = 20%27.8×
37.6s = 20%30.3×
41s = 20%33×
44.7s = 20%35.9×
48.7s = 20%39.2×
53.1s = 20%42.7×
57.9s = 20%46.5×
63.1s = 20%50.7×
68.8s = 20%55.2×
75s = 20%60.2×
81.8s = 20%65.6×
89.1s = 20%71.5×
97.2s = 20%77.9×
106s = 20%84.9×
115s = 20%92.6×
126s = 20%101×
137s = 20%110×
150s = 20%120×
163s = 20%131×
178s = 20%142×
194s = 20%155×
211s = 20%169×
230s = 20%185×
251s = 20%201×
274s = 20%219×
299s = 20%239×
325s = 20%261×
355s = 20%284×
387s = 20%310×
422s = 20%338×
460s = 20%368×
501s = 20%401×
546s = 20%437×
596s = 20%477×
649s = 20%520×
708s = 20%567×
772s = 20%618×
841s = 20%673×
917s = 20%734×
1Ks = 20%800×
  • Amdahl: "How fast can I finish this job?"
  • Gustafson: "How big a job can I finish in the same time?"

This difference matters in data engineering. More Spark executors will not turn a 10-minute job into a 10-second job (Amdahl: planning, final coordination, commit, slow stragglers are serial). They will let you process 10× more data in the same 10 minutes (Gustafson). Many scale-out success stories are Gustafson stories told as Amdahl claims.

In real systems the serial fraction is rarely one visible block. It is planning, metadata operations, coordination barriers, the commit protocol and the boundary. So "find s" is a good diagnostic: measure speedup at N and at 2N, solve for s, and learn the ceiling before you buy the cluster.


Universal Scalability Law (USL)

What Amdahl cannot do: it can only flatten, never fall. But real systems get slower after a point. Amdahl cannot express that, so it cannot describe the most important failure.

the throughput compared with one worker, when using N workers
waiting for shared resources (Amdahl's term)
cost of keeping N participants consistent with each other
beyond it, each new worker reduces throughput
β = 0 (Amdahl: a ceiling)β = 0.0001 (a peak, then a fall)
Data table
Relative throughput by workers (α = 0.03)
Workers NseriesThroughput C(N) (× one worker)
1β = 0 (Amdahl: a ceiling)1×
5.99β = 0 (Amdahl: a ceiling)5.21×
11β = 0 (Amdahl: a ceiling)8.45×
16β = 0 (Amdahl: a ceiling)11×
20.9β = 0 (Amdahl: a ceiling)13.1×
25.9β = 0 (Amdahl: a ceiling)14.8×
30.9β = 0 (Amdahl: a ceiling)16.3×
35.9β = 0 (Amdahl: a ceiling)17.5×
40.9β = 0 (Amdahl: a ceiling)18.6×
45.9β = 0 (Amdahl: a ceiling)19.6×
50.9β = 0 (Amdahl: a ceiling)20.4×
55.9β = 0 (Amdahl: a ceiling)21.1×
60.9β = 0 (Amdahl: a ceiling)21.8×
65.8β = 0 (Amdahl: a ceiling)22.4×
70.8β = 0 (Amdahl: a ceiling)22.9×
75.8β = 0 (Amdahl: a ceiling)23.4×
80.8β = 0 (Amdahl: a ceiling)23.8×
85.8β = 0 (Amdahl: a ceiling)24.2×
90.8β = 0 (Amdahl: a ceiling)24.6×
95.8β = 0 (Amdahl: a ceiling)24.9×
101β = 0 (Amdahl: a ceiling)25.2×
106β = 0 (Amdahl: a ceiling)25.5×
111β = 0 (Amdahl: a ceiling)25.8×
116β = 0 (Amdahl: a ceiling)26.1×
121β = 0 (Amdahl: a ceiling)26.3×
126β = 0 (Amdahl: a ceiling)26.5×
131β = 0 (Amdahl: a ceiling)26.7×
136β = 0 (Amdahl: a ceiling)26.9×
141β = 0 (Amdahl: a ceiling)27.1×
146β = 0 (Amdahl: a ceiling)27.3×
151β = 0 (Amdahl: a ceiling)27.4×
156β = 0 (Amdahl: a ceiling)27.6×
161β = 0 (Amdahl: a ceiling)27.7×
166β = 0 (Amdahl: a ceiling)27.9×
171β = 0 (Amdahl: a ceiling)28×
176β = 0 (Amdahl: a ceiling)28.1×
181β = 0 (Amdahl: a ceiling)28.3×
186β = 0 (Amdahl: a ceiling)28.4×
191β = 0 (Amdahl: a ceiling)28.5×
196β = 0 (Amdahl: a ceiling)28.6×
201β = 0 (Amdahl: a ceiling)28.7×
205β = 0 (Amdahl: a ceiling)28.8×
210β = 0 (Amdahl: a ceiling)28.9×
215β = 0 (Amdahl: a ceiling)29×
220β = 0 (Amdahl: a ceiling)29.1×
225β = 0 (Amdahl: a ceiling)29.2×
230β = 0 (Amdahl: a ceiling)29.2×
235β = 0 (Amdahl: a ceiling)29.3×
240β = 0 (Amdahl: a ceiling)29.4×
245β = 0 (Amdahl: a ceiling)29.5×
250β = 0 (Amdahl: a ceiling)29.5×
255β = 0 (Amdahl: a ceiling)29.6×
260β = 0 (Amdahl: a ceiling)29.7×
265β = 0 (Amdahl: a ceiling)29.7×
270β = 0 (Amdahl: a ceiling)29.8×
275β = 0 (Amdahl: a ceiling)29.8×
280β = 0 (Amdahl: a ceiling)29.9×
285β = 0 (Amdahl: a ceiling)29.9×
290β = 0 (Amdahl: a ceiling)30×
295β = 0 (Amdahl: a ceiling)30×
300β = 0 (Amdahl: a ceiling)30.1×
305β = 0 (Amdahl: a ceiling)30.1×
310β = 0 (Amdahl: a ceiling)30.2×
315β = 0 (Amdahl: a ceiling)30.2×
320β = 0 (Amdahl: a ceiling)30.3×
325β = 0 (Amdahl: a ceiling)30.3×
330β = 0 (Amdahl: a ceiling)30.4×
335β = 0 (Amdahl: a ceiling)30.4×
340β = 0 (Amdahl: a ceiling)30.4×
345β = 0 (Amdahl: a ceiling)30.5×
350β = 0 (Amdahl: a ceiling)30.5×
355β = 0 (Amdahl: a ceiling)30.6×
360β = 0 (Amdahl: a ceiling)30.6×
365β = 0 (Amdahl: a ceiling)30.6×
370β = 0 (Amdahl: a ceiling)30.7×
375β = 0 (Amdahl: a ceiling)30.7×
380β = 0 (Amdahl: a ceiling)30.7×
385β = 0 (Amdahl: a ceiling)30.8×
390β = 0 (Amdahl: a ceiling)30.8×
395β = 0 (Amdahl: a ceiling)30.8×
400β = 0 (Amdahl: a ceiling)30.8×
1β = 0.0001 (a peak, then a fall)1×
5.99β = 0.0001 (a peak, then a fall)5.19×
11β = 0.0001 (a peak, then a fall)8.38×
16β = 0.0001 (a peak, then a fall)10.8×
20.9β = 0.0001 (a peak, then a fall)12.8×
25.9β = 0.0001 (a peak, then a fall)14.3×
30.9β = 0.0001 (a peak, then a fall)15.5×
35.9β = 0.0001 (a peak, then a fall)16.5×
40.9β = 0.0001 (a peak, then a fall)17.3×
45.9β = 0.0001 (a peak, then a fall)18×
50.9β = 0.0001 (a peak, then a fall)18.5×
55.9β = 0.0001 (a peak, then a fall)18.9×
60.9β = 0.0001 (a peak, then a fall)19.3×
65.8β = 0.0001 (a peak, then a fall)19.5×
70.8β = 0.0001 (a peak, then a fall)19.7×
75.8β = 0.0001 (a peak, then a fall)19.9×
80.8β = 0.0001 (a peak, then a fall)20×
85.8β = 0.0001 (a peak, then a fall)20.1×
90.8β = 0.0001 (a peak, then a fall)20.1×
95.8β = 0.0001 (a peak, then a fall)20.2×
101β = 0.0001 (a peak, then a fall)20.2×
106β = 0.0001 (a peak, then a fall)20.1×
111β = 0.0001 (a peak, then a fall)20.1×
116β = 0.0001 (a peak, then a fall)20.1×
121β = 0.0001 (a peak, then a fall)20×
126β = 0.0001 (a peak, then a fall)19.9×
131β = 0.0001 (a peak, then a fall)19.8×
136β = 0.0001 (a peak, then a fall)19.8×
141β = 0.0001 (a peak, then a fall)19.7×
146β = 0.0001 (a peak, then a fall)19.6×
151β = 0.0001 (a peak, then a fall)19.5×
156β = 0.0001 (a peak, then a fall)19.3×
161β = 0.0001 (a peak, then a fall)19.2×
166β = 0.0001 (a peak, then a fall)19.1×
171β = 0.0001 (a peak, then a fall)19×
176β = 0.0001 (a peak, then a fall)18.9×
181β = 0.0001 (a peak, then a fall)18.8×
186β = 0.0001 (a peak, then a fall)18.6×
191β = 0.0001 (a peak, then a fall)18.5×
196β = 0.0001 (a peak, then a fall)18.4×
201β = 0.0001 (a peak, then a fall)18.3×
205β = 0.0001 (a peak, then a fall)18.1×
210β = 0.0001 (a peak, then a fall)18×
215β = 0.0001 (a peak, then a fall)17.9×
220β = 0.0001 (a peak, then a fall)17.7×
225β = 0.0001 (a peak, then a fall)17.6×
230β = 0.0001 (a peak, then a fall)17.5×
235β = 0.0001 (a peak, then a fall)17.4×
240β = 0.0001 (a peak, then a fall)17.2×
245β = 0.0001 (a peak, then a fall)17.1×
250β = 0.0001 (a peak, then a fall)17×
255β = 0.0001 (a peak, then a fall)16.9×
260β = 0.0001 (a peak, then a fall)16.8×
265β = 0.0001 (a peak, then a fall)16.6×
270β = 0.0001 (a peak, then a fall)16.5×
275β = 0.0001 (a peak, then a fall)16.4×
280β = 0.0001 (a peak, then a fall)16.3×
285β = 0.0001 (a peak, then a fall)16.2×
290β = 0.0001 (a peak, then a fall)16.1×
295β = 0.0001 (a peak, then a fall)15.9×
300β = 0.0001 (a peak, then a fall)15.8×
305β = 0.0001 (a peak, then a fall)15.7×
310β = 0.0001 (a peak, then a fall)15.6×
315β = 0.0001 (a peak, then a fall)15.5×
320β = 0.0001 (a peak, then a fall)15.4×
325β = 0.0001 (a peak, then a fall)15.3×
330β = 0.0001 (a peak, then a fall)15.2×
335β = 0.0001 (a peak, then a fall)15.1×
340β = 0.0001 (a peak, then a fall)15×
345β = 0.0001 (a peak, then a fall)14.9×
350β = 0.0001 (a peak, then a fall)14.8×
355β = 0.0001 (a peak, then a fall)14.7×
360β = 0.0001 (a peak, then a fall)14.6×
365β = 0.0001 (a peak, then a fall)14.5×
370β = 0.0001 (a peak, then a fall)14.4×
375β = 0.0001 (a peak, then a fall)14.3×
380β = 0.0001 (a peak, then a fall)14.2×
385β = 0.0001 (a peak, then a fall)14.1×
390β = 0.0001 (a peak, then a fall)14×
395β = 0.0001 (a peak, then a fall)13.9×
400β = 0.0001 (a peak, then a fall)13.8×

C(N) is the compared with one worker, when using N workers. Three terms:

TermNameMeaningGrows with N asEffect
N (top)linear idealperfect scalinglinear
αcontentionwaiting for shared resources (Amdahl's term)lineara ceiling
βcoherencycost of keeping N participants consistent with each otherN²a peak, then a fall

The N² is the key idea. Consistency means every participant may need to agree with every other, and there are N(N − 1)/2 pairs. Beyond N* = √((1 − α)/β), each new worker reduces throughput: the system does more coordination than useful work.

(This is the end of Meera's launch day: her extra 100 servers pushed the cluster past N*.)

β has appeared twice already. (CPU and memory): cores invalidating each other's , negative scaling from hardware alone. (The network): N senders synchronized onto one receiver, collapse past a threshold. Both are β. The is the general form of both.

Practical result: because of β, the fix for a scaling wall is usually "reduce coordination", not "add nodes." Sharding, partitioning, thread-local accumulators, lock-free structures, eventual consistency and execution all attack β. It is also worth fitting the USL to real data: measure throughput at 6–10 values of N, fit α and β, and you get a predicted peak instead of finding it in production.