A couple of weeks back Michael Kleef posted an article on “increasing user density within a Citrix XenDesktop environment” utilizing AppSense Performance Manager.
The testing, which was carried out in conjunction with Microsoft and Citrix, demonstrated that the patented AppSense Performance Manager technology, which controls CPU at both a process and thread level, was able to increase user capacity and ensure a quality of service in a virtual desktop environment.
The benefits of running Performance Manager can also be seen on a native desktop, and in fact some of our customers now include a default configuration of Performance Manager in their standard build to ensure the desktop remains “snappy” (responsive) and prevent run away processes from consuming 100% of the CPU. (We all use it here at AppSense!)
The recent launch of the AppSense Exchange has also provided our customers and partners alike with a number of tools and utilities to help administer, configure and demonstrate our products.
The “Performance Profiler” is one of the tools available on the AppSense Exchange and although a little out of date when it comes to the branding, (an older Blue AppSense logo back from 2007), it still today provides an excellent way to demonstrate the benefit and technology included in Performance Manager.
Over the last 9 years at AppSense I have demonstrated and assisted customers in understanding the even greater value Performance Manager (“PM”) offers XenApp environments; in the majority of cases increasing user capacity between 20 and 40% - in some cases doubling the user density!
Whilst performance manager can also manage both physical and virtual memory, (perhaps a blog for another time?); the CPU management elements of performance manager are able to control and dynamically assign CPU resource at both a process and thread level.
Thread Control
At a thread level, PM utilizes a technology called Intelligent Process Management (IPM) to clamp run away processes when the CPU hits 100%. By clamping these runaway processes, (typically by 10% or 20%), other processes can continue to run effectively without impacting other user processes. When enabled the effects can be seen in task manager…. We call this the “clamping envelope.”

A simple configuration allows the offending process to be clamped when the CPU hits 100%. The clamp is removed after 10 seconds and the reapplied if the process is still threatening performance.

Performance Manager can also be configured from within the console to place either hard or soft limits on certain users, groups or processes; Ideal for limiting Internet explorer for instance to 90% on a XenApp server to ensure that flash based websites don’t freeze the sessions.
Process Control and the "Performance Profiler"
At a process level, AppSense PM uses a technology called “Smart Scheduling.” This technology ensures that each process gets given a fair share of CPU time and works by dynamically changing the base priorities.
To help demonstrate “fair sharing” the AppSense Exchange provides customers and partners to download the Performance Profiler tool.
The performance profiler graphically represents how much CPU time 3 executable’s (workitems) consume vs what they actually request. By enabling and disabling Performance Manager, a very simple test demonstrates the benefits of Smart Scheduling both “before and after.”

By setting the red process to consume 100% CPU, the green - 60% and Blue only 20%, it is very easy to demonstrate how executable’s do not receive an equal share of CPU without a technology like Performance Manager. With all else being equal, each of the 3 processes should receive 33.3% of the available 100%. Before PM is enabled you can see that the Blue worker processes doesn’t even get the 20% it actually requests.
Once PM is enabled, smart scheduling actively monitors the processes and ensures there is a fair share. This makes the box feel more “snappy” and in many cases reduces CPU queue lengths therefore getting more done in a shorter space of time!
Other features within Performance Manager include the ability to control performance based on session state. This allows granular management of performance based whether an application or session is disconnected, in the foreground, background, idle etc – ideal for saving memory and CPU cycles in XenApp / XenDesktop environments which experience a large number of disconnected sessions!
Both technologies can be used together to ensure a quality of service, increase user capacity and ensure a consistent performance in any windows desktop environment – a key part of managing the user more effectively and hence an important element of User Virtualization.
Feel free to download and enjoy!