XenApp farm is designed to load balance users accros multiple machines but how to determine which user goes where ?
As I described in my previous post XenApp 6.5 load values explained – the load evaluator is a thread in the IMA Service on a XenApp Server that calculates the load index for that server. The load evaluators and load evaluator rules are the most overlooked components in the load management subsystem. Very often administrators leave a XenApp farm with “Default” load evaluator and often administrators don’t even realize this load evaluator is in use. If no load evaluators are specifically assigned to a XenApp Server, the “Default” load evaluator will be applied to that particular server automatically.
Is the “Default” load evaluator satisfactory for most XenApp Server environments?
In most cases the answer to this question is “NO”, but let me explore load evaloators in more details.
Load Evaluator Summary
A fresh XenApp 6.5 installation comes with 2 preconfigured load evaluators supplied by Citrix:
- Default – XenApp assigns the Default load evaluator to each server after you add your license to the server farm. It contains two rules:
- Server User, which reports a full load when 100 users log on to the attached server
- Load Throttling, which specifies the impact that logging on has on load and limits the number of concurrent connection attempts the server is expected to handle.
- Advanced – This load evaluator contains four rules
- CPU Utilization Load
- Memory Usage
- Page Swaps
- Load Throttling
Both built-in evaluators have some downsides and often a new custom load evaluator is created. I would say more – if IT department in the organization actively monitor existing XenApp environment, a customized advanced load evaluators are the must.
Working with Load Evaluators
To access the load evaluators in XenApp, you select the Load Evaluators node in the left pane of the AppCenter. The following tabs are displayed:
- Load Evaluators displays all the load evaluators created for the farm in a list. Beneath this list, the Current Settings tab displays at-a-glance the state of all the available load evaluator rules.
- Usage by Application displays the load evaluators that are attached to the farm’s published applications.
- Usage by Server displays the load evaluators that are attached to each server in the farm.
Figure 1: Load evaluators – list and available display views
When using load evaluators, keep in mind the following:
- You cannot modify or delete any of the built-in evaluators.
- Each server or application participating in load management can have only one load evaluator assigned.
- Load evaluator is assigned to servers via Group Policy.
- To assign load evaluator to individual applications on the server follow the manual process:
Figure 2: Attach application to load evaluator
Custom Load Evaluator
As it was mentioned above builin-in evaluators have some downsides and in most cases load evaluator with custom rules is required. Every environment, application and every workload is different, so whichever load evaluator is implemented may vary, but they should be customized and monitored. To efectivly monitor your environment you have to create custom load evaluator. Based on my experience the best is the combination of the rules User Load, Memory Usage, CPU Utilization and Load Throttling – the same set of rules as advanced load evaluator but the values for each rule should be determined by performance tests. Because CPU Utilization and Memory Usage have a dynamic character and may be specific to installed/used application those rules will be used when the utilization is pretty high. See the example of custom load evaluator below.
Figure 3: Custom Load Evaluator
You can build a customized load management environment by creating load evaluators with multiple rules applied. You can also create unique Load Evaluators based on completely different rules and apply them to different servers. You don’t have to configure each Load Evaluator to calculate its load index in the same way. The most important thing is to understand the logic of load management subsystem and know your environment to choose the most accurate rules and real values to keep your server accessible for your users.