Amdahl’s Law vs. Gustafson’s Law: Two Competing Theories of Why Parallelism Doesn’t Scale Linearly
The two classic laws engineers conflate, and why the right one depends on whether your problem size is fixed or grows with your hardware.
Most engineers meet Amdahl’s Law once, usually in a systems course, learn that adding cores has diminishing returns, and never hear about its rebuttal. That’s a shame, because the rebuttal, published twenty one years later by a Sandia researcher who had just watched a 1024 processor machine do something Amdahl’s own math said shouldn’t happen, tells you something the first law can’t: whether throwing more hardware at a problem is actually a good idea depends entirely on what you’re holding fixed while you do it.
Amdahl’s Fixed Pie
In 1967, Gene Amdahl made an argument against massively parallel computing that still gets taught as gospel. Take any program, split its execution time into a fraction that has to run serially and a fraction that can be parallelized, and no matter how many processors you throw at the parallel portion, the serial fraction sets a hard ceiling on total speedup. A program that’s ninety five percent parallelizable can never run more than twenty times faster, regardless of whether you use one hundred cores or one hundred thousand, because that stubborn five percent has to happen one instruction at a time no matter what. The formula is simple enough to do in your head: speedup equals one divided by the serial fraction plus the parallel fraction divided by the number of processors. As the processor count grows without bound, that expression converges on one over the serial fraction and stops moving.
Gustafson’s Growing Pie
John Gustafson’s objection, worked out at Sandia National Laboratories alongside Edwin Barsis and published in Communications of the ACM in May 1988, wasn’t a rebuttal to Amdahl’s arithmetic so much as a rebuttal to Amdahl’s premise. Amdahl assumed the problem stays exactly the same size while you add processors. Gustafson had just watched a 1024 processor hypercube run real scientific simulations, and in practice nobody who gets access to a bigger machine keeps solving the same fixed size problem faster. They solve a bigger problem in the same amount of time instead, running the simulation at higher resolution, processing more data, extending the model further. Reframe speedup that way, as a fixed time budget rather than a fixed problem, and the ceiling disappears. Gustafson’s formula, scaled speedup equals the serial fraction plus the parallel fraction times the number of processors, grows essentially linearly with N, and it matched what his team was actually measuring on real hardware rather than what the fixed size model predicted they should see.
The Reason People Conflate Them
Here’s the part that trips people up in an argument. The letters look the same in both formulas, a serial fraction and a parallel fraction, but they’re not measuring the same thing. Amdahl’s serial fraction is measured against the original single processor run. Gustafson’s is measured against the parallel run itself, on the bigger, scaled up problem. Treat those two fractions as interchangeable and the laws look like they contradict each other, one predicting a hard ceiling and the other predicting none. Work through the algebra of translating one definition into the other, as later analyses of both papers have done, and the contradiction mostly evaporates. They’re two different lenses on the same underlying tradeoff, not two competing physical laws, and most of the decades old arguments about which one is “right” turn out to be arguments about which lens someone had in mind without saying so.
| Amdahl’s Law | Gustafson’s Law | |
|---|---|---|
| Problem size | Fixed as processor count grows | Grows along with processor count |
| Question being asked | How much faster can this same job finish | How much bigger a job fits in the same wall clock time |
| Speedup as N grows | Converges to a ceiling set by the serial fraction | Grows close to linearly with N |
| Origin | 1967, argument against massively parallel machines | 1988, argument for them, backed by a 1024 processor benchmark |
Which One Actually Applies to Your Workload
The honest answer is that both laws are correct descriptions of two different situations, and the useful question is which situation you’re actually in. A request handler with a fixed serial critical path, a session lookup, a lock acquisition, a single round trip to a database that can’t be parallelized away, lives in Amdahl’s world. Adding threads helps up to a point and then stops helping, because that serial sliver doesn’t shrink no matter how much parallel capacity surrounds it. A batch analytics job or a distributed training run over a dataset that keeps growing lives closer to Gustafson’s world instead. Add more nodes and the natural response isn’t to finish the same fixed dataset faster, it’s to process more data, run more epochs, or simulate at finer resolution in the same overnight window you always had. Neither law is more true than the other. The mistake is applying Amdahl’s ceiling to a workload that would actually behave like Gustafson’s if you let the problem size grow with the hardware, or the reverse, assuming linear scaling for a workload that has a genuinely fixed, unshrinkable serial core.
What We Learned
Amdahl’s Law and Gustafson’s Law aren’t rival theories so much as two honest answers to two different questions, one that fixes the problem and asks how much faster it finishes, and one that fixes the time budget and asks how much bigger a problem fits inside it. The ceiling Amdahl describes is real for workloads with a genuinely fixed, unavoidable serial portion, and the near linear scaling Gustafson describes is just as real for workloads where more hardware naturally means more work rather than the same work done faster. Knowing which one your workload actually resembles, before you buy the extra hardware or add the extra threads, is worth more than knowing either formula by heart.


