Home
Blog
Training
Books
Papers
PDQ
Graphorisms
Scalability
Contact
How to Quantify Scalability
How to Quantify Scalability
The Universal Scalability Law (USL)
The purpose of models is not to fit the data but to sharpen the questions.<br>—Sam Karlin
This page is intended to supplement the following Chapters in my Guerrilla Capacity Planning book [Gunther 2007]:
Chap. 4: Scalability: A Quantitative Approach
Chap. 5: Evaluating Scalability Parameters
Chap. 6: Software Scalability
as well as the notes associated with my training class on
Guerrilla Capacity and Performance: From Counters to Containers and Clouds<br>(see Schedule page).
It's also an attempt to provide a quick overview of the USL methodology ,<br>including the latest developments since the book was published.<br>This includes such developments as:
applying the USL to<br>distributed systems
the three-parameter version<br>of the USL
superlinear scaling<br>in Hadoop
My original 1993 paper<br>introduced the USL under the name "super serial" model because, at that time, I viewed it as an extension of the<br>serial fraction concept contained in Amdahl's law.<br>The idea of applying it as a statistical regression model and extending it to three parameters came much later.
Contents<br>1 Universal Scalability Law (USL)
1.1 The Scalability Model
1.2 The Three Cs: Concurrency, Contention and Coherency
1.3 Theoretical Justification
1.3.1 Theorem (Amdahl's Law)
1.3.2 Theorem (Universal Scalability Law)
1.4 Applicability
2 How to Use It
2.1 Virtual load testing
2.2 Detecting bad measurements
2.3 Performance heuristics
2.4 Performance diagnostics
2.5 Production environments
2.6 Scalability Zones
2.7 My Blog
3 Tools for Using USL
3.1 Excel Spreadsheet
3.2 OpenOffice Spreadsheet
3.3 R Packages and Scripts
4 Presentations
4.1 DSconf 2019
4.2 ACM 2018
4.3 ACM 2015
4.4 Usenix LISA 2014
4.5 Hotsos 2011
4.6 Surge 2010
4.7 Velocity 2010
4.8 Ignite! 2009
5 Bibliography
1 Universal Scalability Law (USL)
The original derivation of the Universal Scalability Law, or USL, was presented at the 1993 CMG conference [Gunther 1993].<br>A brief account of its application to parallel processing performance<br>(under the name super-serial model) was presented in Chaps. 6 and 14 of my first book [Gunther 1998].<br>A more complete derivation with example applications is presented in Chaps. 4-6 of<br>my GCaP book [Gunther 2007]. The supporting mathematical theorems (see Section 1.3) are presented in<br>papers cited in the Bibliography (see Section 5).
Some reasons why you should understand the USL include:
A lot of people use the term "scalability" without clearly defining<br>it, let alone defining it quantitatively. Computer system scalability<br>must be quantified. If you can't quantify it, you can't guarantee it.<br>The universal law of computational scaling provides that<br>quantification.
One of the greatest impediments to applying queueing-theory models (whether<br>analytic or simulation) is the inscrutibility of service times within an<br>application. Every queueing facility in a performance model requires a<br>service time as an input parameter.<br>Without the appropriate queues in the model,<br>system performance metrics like throughtput and response time,<br>cannot be predicted. The USL leapfrogs this entire problem by NOT requiring ANY low-level service time<br>measurements as inputs.
1.1 The Scalability Model
Defining the system throughput X(N) at a given load, N, the fundamental scaling effects<br>contained in the USL (Universal Scalability Law) can be depicted schematically as
A. Equal bang for the buck B. Cost of sharing resources C. Diminishing returns from contention<br>D. Negative returns from incoherency
α = 0, β = 0 α > 0, β = 0 α >> 0, β = 0 α >> 0, β > 0
Each of these contributions can be combined into an equation that represents a scalability model , viz., the USL.<br>The version of the USL that appears in my<br>Guerrilla Capacity Planning book<br>is
C(N) =
1 + α(N − 1) + βN(N − 1)
(1)
where C(N) = X(N) / X(1) is the relative capacity or the normalized throughput<br>at each successive applied load, N.<br>Conversely, any throughput value, including those that have not been measured,<br>can be expressed in terms of C(N) as
X(N) = C(N) · X(1) .<br>(2)
One slight drawback of equation (1) is that it requires knowing the value of X(1) to do the normalization.<br>Very often, however, we don't know the value of X(1) because it wasn't measured or it can't be measured,<br>for some reason. In that case, the value of X(1) has to be estimated by interpolating the existing data.
A generalization of equation (1) introduces a third modeling parameter , γ, into the<br>numerator of (1), so that
X(N) =<br>γ N
1 + α(N − 1) + βN(N − 1)
(3)
Note that the left side of equation (3) is now X(N) (the absolute throughput),<br>not C(N) (the relative capacity).<br>The reasoning behind this modification can be found in my blog post [Gunther 2018].<br>The virtue of this approach is that it makes it easier to apply the USL to the...