Determining the Universal Scalability Law's coefficient of performance


\[ C(N) = \frac{N}{1 + \sigma(N-1) + \kappa N (N-1)} \]

No, you don’t see it – but it’s actually there, as a hidden 1 multiplied by N in the numerator on the right-hand side. When you’re using the USL to model a system’s scalability, you need to use the C(1), the “capacity at one,” as a multiplier. I call this the coefficient of performance. It’s rarely 1; it’s usually thousands.


coefficient of performance

The green line and the blue line are both linearly scalable systems. Add twice the concurrency, get twice the throughput. But the slope of the lines is different. The blue system can do twice as much work as the green system, even though it’s no more scalable.

To model the USL, you need to determine C(1) by measuring the system under test. In my experience with real systems running in production, mostly MySQL servers, this is not simple. You can’t just say “let’s quiet the web app down, I want to load it with exactly one user for a few minutes and measure how fast it runs.” Instead, you get a bunch of samples from production traffic, and you derive the throughput at concurrency=1 from that.

The result goes into the numerator as a multiplier of N, although it’s usually omitted when the USL formula is shown.

If you’re interested in learning more, I wrote an ebook about the Universal Scalability Law.
