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:
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:
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.