Edison, Einstein and PowerTerm WebConnect Load Balancing
I once heard an interesting story about Thomas Edison: being the consummate practical engineer, Edison enjoyed proving his superiority over theoreticians. He once challenged a mathematician to see who could calculate the volume of a light bulb more quickly. The mathematician proceeded to formulate an approximation of the shape of the bulb and deduced its volume from that shape, a process that required several hours of work. When the mathematician was done, Edison simply filled the light bulb with water and then poured the water into a graduated container. Not only was Edison’s calculation performed more quickly, but also it was significantly more accurate. I like this story because, aside from demonstrating Edison’s great ingenuity, it is also a good example of the KISS principle – “Keep It Simple, …” – showing that a simpler solution is often also a better solution.
At Ericom Software we are great believers in the KISS principle. Whenever we are faced with a problem to solve or a feature to implement, we look for the simplest design that satisfies the requirements, and then we choose the simplest implementation of that design (for those familiar with software development methodologies, this approach is one of the basic tenants of Agile Development),. This approach of keeping things simple has proven to be very beneficial for both our customers and for ourselves. For example, it enables us to maintain fast turnaround times and release a new version with major new features every year for the past three years. In this way, we provide much more bang for our customers’ maintenance bucks. At the same time, we are able to retain a high level of quality and reliability because a simpler design and implementation generally means fewer bugs. In addition, our product is often faster and more scalable than other, more complicated alternatives because it has fewer “moving parts” and places less load on the infrastructure on which it is installed.
And yet, it is also important to remember Einstein’s saying: “everything should be made as simple as possible, but no simpler”. Sometimes, the pursuit of a simple solution can result in a solution that is overly simplistic. This can happen when you don’t think through all aspects of the problem at hand, or come up with a solution that does not satisfy all the requirements. For Server Based Computing, I consider setting Session Counting as the default load evaluator for Load Balancing to be an example of such on overly simplistic approach. Using this evaluator is understandable and acceptable for the Windows Server 2008 Terminal Services Session Broker because its stated goal is to provide a “better entry-level solution”, (and even there it is augmented with server “weight” and logon throttling),. It is less acceptable in products that aim to provide higher-end solutions and support larger installations. Even if this is a default that can be changed, the customer may not have the ability to select a better alternative, and certainly shouldn’t be required to.
For this reason, we have chosen a more sophisticated evaluator as the default for the PowerTerm WebConnect Load Balancer. As you can see on the left-hand side of the configuration dialog (circled in red) our default load evaluator is memory biased, but uses performance data from several additional sources in order to select the least loaded Terminal Server. The load evaluation formula is: 60% memory, 30% CPU and 10% Session Count. On the face of it, this evaluator appears to be a mixture of apples and oranges, but as you will see, it yields a rather tasty fruit salad. The reason we use the amount of available memory as the primary metric is that the lack of sufficient free memory will have a dramatic impact on a Terminal Server’s ability to host sessions. In this context, it is important to note two settings on the right-hand side of the dialog:
- Any server that has less than 40MB of available memory will be totally excluded from the selection process. This means that no users will be directed to that server under any circumstances, regardless of the load on the other servers in the farm. If all the servers have less than this amount of free memory, new users will not be able to logon at all. This avoids server overload, something that would prevent new or existing users from being able to work productively.
- If a server has more than 350MB, that extra memory is ignored. This means, for example, that if server A has 400MB available memory and server B has 600MB, both will receive the same score for this metric.
The second point is particularly important because it means that if the farm contains several servers that have less than 350MB, and several servers that have more than 350MB, the following selection process will take place:
- The servers having less than 350MB will be rejected – that is, none of them will be selected.
- The servers with more than 350MB will all be treated the same regarding this metric, so the selection between them will be based only on the other two metrics: CPU and Sessions.
In an upcoming post I will discuss how these two additional metrics are used by the PowerTerm WebConnect Load Balancer to select the least loaded server, so stay tuned.