Here is one of the slides from "The Sizer Advisor, part II", at ibm.biz/sizadv02. Let us discuss about it by means of a thought experiment, a cheap and always convenient way to improve our knowledge.
Let us consider three servers, sized XS, M and XL. The XS capacity is 1 unit of work (UOW) per unit time (UOW/T). M is 10 times bigger than XS, and XL is 10 times bigger than M. So the M capacity is 10 UOW/T, and the XL capacity is 100 UOW/T.
Let's assign workloads scaled according to the capacities: XS will support 1 user, M 10 users, and XL 100 users. To simplify, the type of user is the same for the three servers. One single user is modeled in the following way, to account for the individual random behaviour: she/he throws a fair coin for deciding what to do in the time slot:
- If H(ead) then the user requests one UOW to the server,
- If T(ail) then the user remains idle.
Here is the graph resulting from running our experiment once for each server, with the sized workload (1 user for XS, 10 users for M, and 100 users for XL):
If we analyze the above samples we see the following:
- The average demand in the XS server is very close to 0.5 UOW/T, in the M server 5 UOW/T and in the XL server 50 UOW/T. Those numbers represent the 50% of the server capacity in all cases. This is as expected because the probability of Heads and Tails is the same and equal to 1/2.
- The absolute variability is the biggest in the XL. This is also expected, because its workload corresponds to the sum of 100 individual decisions! In the XL server the range of possible values goes from 0 UOW/T to 100 UOW/T, in the M server from 0 UOW/T to 10 UOW/T, and in the XS it varies from 0 UOW/T to 1 OUW/T.
- On the contrary, the relative variability, meaning the variation relative to the server capacity (or to the average demand), is the least in the bigger server. You could easily see this in the following graphs, featuring the same samples than above but scaled to the capacities of the servers.
What is the reason for this reduced relative variability in the bigger servers? The reason has a statistical / probabilistic nature: when more users add their "random" behaviour it is more improbable to reach "extreme" values. In particular, we have:
- XS server: the probability of 1 Head is 1/2.
- M server: the probability of 10 simultaneous Heads is 1/(2^10).
- XL server: the probability of 100 simultaneous Heads is 1/(2^100).
That naturally means or implies:
- The XS server will reach 100% usage about 50% of time (1 of every 2 time slots),
- The M server will reach 100% usage about the 0,098% of the time (1 of every 1024=2^10 time slots),
- The XL server will reach 100% usage about the 7.9*10^(-29)% of the time (approx 1 of every 1000000000000000000000000000000 time slots). That is practically never!
Extremely simple, but very illustrative facts!!!!! Do you see by yourself the necessary next conclusion? Think! It's inevitable. As in the bigger server is much less probable to reach 100% usage, we could increase the number of users it services without risking to reach the server saturation too frequently! Use the sentence you like best to express it:
- The big server can be more filled (relative to the server capacity) than the smaller ones.
- The big server can be more utilized than the smaller ones.
- The bigger the server, the bigger the usage it may run at.
In our particular experiment, maths and/or further experimentation allow us to conclude that to reach 100% usage only the 10% of the time:
- The M (x10) capacity server can be loaded with 15 users, that is 5 more than the sized value of 10. This means that it may run at an average usage of 75%.
- The XL (x100) capacity server can be loaded with 182 users, that is 82 more than the sized value of 100. This means that it may run at an average usage of 82%.
Let's go back from our thought experiment to the real world. We do meet all the aforementioned in two different ways.
First and more important is the fact that bigger servers do usually have more utilization than smaller ones. How many times have you heard that a small server average utilization is around 5%, medium server around 20%, and big servers around 80%? I deliberately avoid to put names to the servers, because I'd like to stress that I'm not comparing different server architectures or brands. I'm simply comparing a big XYZ server with small XYZ server, and under the same workload type. The relative variability in the workload is one of the reasons to explain these differences. But it is not the sole reason.
Second is that you probably have already seen the clear differences in the relative variability. Look at the two real workloads below, the first one corresponding to a small workload, and the second one to a big one. The relative variability, seen as the size of the "noise", is less in the big workload, being the graph smoother.
By now it should be clear the meaning of the title I've chosen for this blog entry. Better 1x10 than 10x1 simply means 1 server of 10x size can support more users than 10 servers 1x size. And, and least regarding the supported workload, this make it better.
Of course, pricing is another matter.
One final word: I think that existing sizing guidelines generally don't reflect the big servers ability to run at an increased usage.
I hope you enjoy this post.
Jorge L. Navarro
PS: I have decided not to use maths expressions here, but we could express all the above in a more rigurous mathematical way, using binomial probability distribution or its limiting normal probability when the number of users is large. It can easily be shown that when the number of users increase from N to N', the workload average value increases according to the factor (N'/N), but its standard deviation (a mesure of the relative variability) grows with sqrt(N'/N), much slower.