Information Technology Reference
In-Depth Information
Appendix C. Scaling Terminology and Concepts
The essence of life is statistical improbability on a colossal scale.
—Richard Dawkins
You've probably experienced software that works well with a small amount of data but gets
slower and slower as more data is added. Some systems get a little slower with more data.
With others, the slow-down is much bigger, often dramatically so.
When discussing scalability, there is terminology that describes this phenomenon. This
enables us to communicate with each other with great specificity.
Thisappendixdescribessomebasicterminology,amoremathematicalwayofdescribing
thesameconcepts,andfinallysomecaveatsforhowmodernsystemsdoordonotactasone
would expect.
C.1 Constant, Linear, and Exponential Scaling
There is a lot of terminology related to describing how systems perform and scale. Three
terms are used so commonly that to be a professional system administrator you should be
able to use these terms conversationally. They describe how a system performs as data size
grows: the system is unaffected, gets slower, or gets much slower.
Constant Scaling: No matter the scale of the input, performance does not change.
For example, a hash-table lookup in RAM can always be done in constant time
whether the table contains 100 items or 100 million items. It would be nice if all
systems were so fast, but such algorithms are rare. In fact, even a hash-table lookup
is limited to situations where the data fits in RAM.
Linear Scaling: As input size grows, the system slows down proportionately. For
example, twice as much data will require twice as much processing time. Suppose
an authentication system for a service with 10,000 users takes 10 ms to authenticate
each request. When there are 20,000 users, the system might take 60 ms. With
30,000 users, the system might take 110 ms. Each unit of growth resulted in a slow-
down that was the same size (50 ms slower per 10,000 users added). Therefore we
can classify this as a system with linear performance with respect to the size of the
user database.
Exponential Scaling: As input size grows, the system slows down disproportion-
ately. Continuing our authentication system example, if adding more users resulted
in response times of 10 ms, 100 ms, and 1000 ms, this would be exponential scal-
Search WWH ::




Custom Search