Hi, I am Prasanna Padmanabhan. I am a software developer in Citrix Engineering. This is my first blog entry in the Citrix Community blogs, so I am a newbie.
I am working with a small engineering team looking into some ideas for enhancing Load Balancing (LB) in Citrix Presentation Server (CPS), something we are investigating as part of the Constellation set of technologies here at Citrix. The reason why I am writing this blog is not only to get your thoughts on these new ideas, but also to understand from you about how you typically configure LB in CPS .
Before I start to describe the new ideas, let me tell you this. I or another one of our team members be able to write a separate blog post describing in detail how LB works in CPS today. If you like me to do that, do let me know since LB is a somewhat complex subject for most of us.
There are a couple of ideas that we are exploring.
- User Experience (EUE) based load balancing
- preferential load balancing.
The first has to do with load balancing based on the experience. That is loadbalancing to the server that at instance gives the best user experience. is a separate topic in itself and it discussion.
In this post, I talk User-Application preferential load balancing, which is certain applications and users to others. Often times, administrators want to provide a certain level of service to certain users based on their job functions, their position within the company etc. the same way published applications may want to be assigned a level of importance based on how critical that application is to their business. This could also change during different times of the year. Accounting and finance applications become all the more mission critical during the end of each quarter!
Today, administrators can do this in several ways, but we think they are not too straightforward.
- 1. Manual isolation or siloing – manually assigning mission critical applications to their own servers and grouping many normal applications together on other servers.
This is acceptable but could sometimes be an administrative hassle- if you by mistake publish an important application along with other important applications on the same server, users will begin to notice performance issues.
- 2. CPU priority levels – You can assign CPU priority levels for published applications (via the Access Management Console). This uses the operating systems CPU scheduler, which could potentially starve a lower priority application if a higher priority application does not relinquish the CPU for a long time (does not happen very often, but when it does users might start to notice slowness). Another problem is that you might publish the same application twice, with a different importance level setting, and end up with Outloook_2 and Outlook_3.
- 3. Using the CPS policy mechanism to set limits on virtual channels such as bandwidth. But unfortunately, these are hard limits. Even if someone is not using that much bandwidth, a needy user cannot get it.
I am looking at this from a designer/developer point of view. As our customers you use the admin tools much more than I do. Do you
- a) Agree that these are indeed problems? If so how do you currently work around it or
- b) Think that it not a huge problem but would make your life easier things if there was a better solution to this or
- c) Feel that this is not an issue at all?
We heard of (a) and (b), but not many (c) But if you feel that this is not a problem I like to hear why you think so.
User Application preferential load balancing is an idea that we believe will solve a good portion of these issues and that what I am going to talk about.
Central to the idea of User Application preferential load balancing, is the idea of resource shares. shares are simply numbers or quantifiers that denote how important a user or application will be treated. The more resource shares you have, the more CPU you get. The more resource shares an application gets, the more CPU it gets. example, assume that there are two ICA sessions, S1 and S2, currently running on a server, and they had 4 shares and 8 shares respectively. Then, if they were at any point competing for CPU at the same time, then they would get 33% and 66% of the CPU respectively.
The clause, in italics is important to understand – they were at any point competing for CPU at the same time These are soft-caps. So if the S2 wasn doing anything (i.e., in an idle state), then S1 could get more than its share of 1/3rd of the CPU if it needed it. But the moment S2 started to do something CPU intensive that would make it grab much of the CPU (eg: doing a search operation), then the CPU share enforcer would kick in, would take away the extra CPU cycles that S1 was temporarily enjoying, and hand those off to S2, the more important session.
Typically applications never consume large portions of the CPU for very long periods of time. They usually do so in short bursts (eg: a macro is being run in an application like Word, a search is being performed on a document etc). Without the CPU rebalancing feature, users might suddenly see longer response times or general slowness when other users perform these CPU intensive tasks. Thus, the CPU rebalancer effectively shields important users and application from these kinds of situations.
Some readers of this might be able to relate and connect this feature to the fair-share CPU scheduling feature ( CPU and the user Server User load rule.
border=”4″ cellpadding=”0″ cellspacing=”0″ style=”width: 681px; height: 289px”>| |
CPS 4.5 Enterprise valign=”top” width=”145″>
CPU scheduling feature| Codenamed CPU this allowed administrators to ensure fair share (equal share) CPU usage amongst user sessions on a server. | Instead of each user session getting equal importance, sessions are given a numerical importance level based on who the user is and what applications they run within that session. Sessions with more get more importance within a server. this denotes inter session competition within a CPS server. | Server User load rule | This load rule tries to load balance sessions such that each server would approximately have equal number of sessions running on them at any given point. | Uses the notion of shares described above (session importance levels) to load balance between servers, so that important sessions are made to occupy more on a server thus prohibiting other important sessions to run on the same server . this denotes inter server competition within a CPS farm. | many shares a session gets is a function of the user and the applications that he or she is running. It is a product of your importance and the max of all the apps running in your session. Here is an example with a matrix to explain this better.
In a hospital, doctors and nurses may want to be assigned more shares for mission critical applications such as medical imaging applications (X-rays, CAT scans etc) or patient records since they deal with people lives; plus doctors in a hospital have several patients to visit during ward-rounds that patient record information must be quickly available to them when they are by the patient side, without any delays or bottlenecks in launching or using the application.
Compare this with that of a clinical lab technician or an administrative assistant at the same hospital. He/she might also have to pull up the same patient records once in a while but small delays might be acceptable in this case. So they could be simply considered normal users, which is of course the default setting. In the same way, a normal application could be something like a standard home grown which gets the default number of shares (2).
Thus, the User-Application preferential load balancing gives users a more predictable and consistent user experience. This workload management that I described comes from Aurema, a company that Citrix recently acquired.
That about all I have to say in this article. I shall talk about EUE based load balancing in a separate post. In the meantime, I am looking for actionable feedback on this idea. Also don forget to tell me whether you want to see another post on how load balancing, in general, works in Citrix Presentation Server.