Citrix in A VM Whitepaper
Citrix in A VM Whitepaper
Of www.virtualizeplanet.com
Citrix
I have personally been Citrix certified in some way for the past 8 years. I fell in love with the Citrix
Presentation Server technology from the first day I was introduced to it which was called Metaframe
back then and Winframe previous to that. The main reason I’m so heavily involved with VMware was
because I saw a compelling ideology in VMware that I remembered seeing in Citrix those years ago.
So naturally when I started abusing ESX in version 2 my first interest was the virtualisation of a Citrix.
I quickly realised something and had to pay attention to all the negative blogs that I had shunned
because they had claimed that the virtualisation of Citrix Presentation Server using ESX in a
production environment was a no go. I had read reports that the performance of a virtualised Citrix
server was so degraded that even the act of logging on without running any applications was
painfully slow. These blogs had stated that it was near impossible to logon any more than about 10
users per virtualised Citrix server. So I tried it for myself thinking surely it wasn’t true, surely my
master question about the differences between physical and virtual apply to any 32bit operating
system/application. I was aware about the potential minimal overheads of the VMkernel and other
resource consumption from parallel virtual machines but this was the only virtual machine running
on my ESX server. The discussion forums were right; I could only get about 10 users logged in and
not even running any applications. The strange thing was that when I inspected task manager inside
the virtual machine CPU utilisation was low. The clue to debugging this problem was monitoring CPU
Ready time as mentioned in the Resource management chapter. As I gained more knowledge about
ESX I learned that there was more to it than meets the eye. The backbone of Citrix is Microsoft
Terminal Services which was originally developed by Citrix and a Terminal Server environment tends
to be CPU intensive that coupled with how the 2.x VMkernel handled networking was major
stumbling block when it comes to the virtualisation of Citrix Presentation Server. In addition any
environment that is prone to produce a lot of context switches also adds load to the CPU which Citrix
is.
Context switching When a CPU switches between processes or threads i.e. in a multitasking OS the state of the active thread
must be stored while the new thread is activated on the CPU. When the CPU is instructed to process the first thread again the
state of the now active thread must be stored while the first thread is restored. This process is known a context switching.
Context switches are usually CPU intensive and are often caused by applications as most current operating systems are
optimized to reduce context switching. Context switching should be avoided as performance degradation is a given while a
switch occurs. Context switching can take between 100 and 1000 instructions and happen as frequently as 400 times a
second. With that many instructions happening that frequently context switching can be a performance killer.
So with the release of ESX 3.0 in June of 2006 VMware had obviously put a lot of effort in fixing
issues in virtual machines that may produce a lot of context switches. This was obvious because
instantly the blogs started reporting a difference in experience when Citrix was virtualised in an ESX
3.0 virtual machine. The user count went from a measly unusable 10+ users to 50+ users that could
actually run applications. So the goal of this section is to discuss the best way to achieve an
installation of Citrix Presentation Server running in an ESX 3.x virtual machine. The flavour of Citrix
Assumptions: You understand the workings of a VI3.x environment and are able to proficiently
manage the development of a virtual machine. In addition you must have some knowledge of Citrix
and understand the technologies introduced by Citrix Presentation Server.
Considerations: I go back to the master question “What’s the difference between a physical
machine and virtual machine to the operating system and applications residing on that operating
system?” And if this was a physical Citrix server one of the recommendations I make to all potential
Citrix clients is perform a proof of concept. This will help you understand how many users can be
homed on a Citrix server dependant on the applications required by the users. Performing a proof of
concept should be the same in the virtual as in the physical. Citrix Presentation Server Enterprise
has a built in tool called Resource Manager to help you conclude these parameters and can also
show you which applications produce CPU load and even context switching.
Tips to a successful virtual Citrix Server:
1. Do not convert your server from a physical server (P2V). This may potentially bring with it
unwanted hardware drivers and agents.
2. When it comes to vCPUs scale across not up, do not exceed 2 vCPUs. Have more virtual
machines with single vCPUs. You may argue this equates to more software licenses but has
the added benefit of resilience. The more vCPUs the more CPU scheduling the VMkernel has
to do so you may even see a detrimental effect by increasing the amount of vCPUs. Also
make sure you use the correct HAL version for the amount of vCPUs – Single or Multi
Processor HAL. Not doing so may result in vCPUs spiking.
3. Disable Hyperthreading for this virtual machine and use multi core systems instead.
Hyperthreading has no benefit in a CPU intensive environment. Feedback from discussion
forums suggests that you may consider restricting use of a 2 x vCPUs virtual machine in a
system that only has 2 x pCPUs.
4. Disable com ports, virtual CDroms and virtual floppy drives – basically disable any virtual
hardware if it’s not needed. The less ESX has to manage the better.
5. When installing the VMware tools disable the Balloon driver also known as vmmemctl
memory driver.
6. Remember the master question. You should treat this server no different than if it was
installed on a physical server. So all the tweaks you used to make a Citrix server perform
before still apply.
• Use registry tweaks as demonstrated on www.dabcc.com or install the freeware
TStweaker application downloaded from www.virtaulizeplanet.com.
• Use the Citrix speedscreen feature
• Reduce visual effects
• Disable sound on published applications where possible
• Use the built‐in CPU/Memory optimiser or better still purchase Appsense
performance manager to optimise and control performance
• Use 2 virtual hard drives ‐ one for the operating system the other for Program files
• Also use the second drive to home a page file
• Download and install UPH Cleanup services from Microsoft (see below)
7. On lower specification ESX host servers attempt to keep virtualised Citrix Servers located on
different physical hosts. VMware DRS can be used to ensure this happens by creating a DRS
anti‐affinity rule.
The User Profile Hive Cleanup service helps to ensure user sessions are completely terminated when a user logs
off. System processes and applications occasionally maintain connections to registry keys in the user profile after a
user logs off. In those cases the user session is prevented from completely ending. This can result in problems when
using Roaming User Profiles in a server environment or when using locked profiles as implemented through the
Shared Computer Toolkit for Windows XP.
On Windows 2000 you can benefit from this service if the application event log shows event id 1000 where the
message text indicates that the profile is not unloading and that the error is "Access is denied". On Windows XP and
Windows Server 2003 either event ids 1517 and 1524 indicate the same profile unload problem.
To accomplish this, the service monitors for logged off users that still have registry hives loaded. When that happens
the service determines which applications have handles opened to the hives and releases them. It logs the
application name and what registry keys were left open. After this the system finishes unloading the profile.
www.microsoft.com
Provisioning: A feature of VMware Virtual Centre is the rapid provisioning of servers from template.
The best approach to provision a virtualised Citrix server is to follow the following steps:
1. Use Virtual Centre to deploy a Citrix Server VM from a template which should include
only the base operating system configured with Terminal Services, Microsoft Service
Packs and Microsoft Hotfixes. Citrix Presentation Server should not be included at this
point.
2. Use Active Directory software deployment GPO and install Citrix Presentation Server
from the MSI package included with the install media. You will have to create an MST file
to answer setup questions. Information about configuring a remote deployment is
usually found at the rear of the Citrix Presentation Server Admin Guide. This will ensure
that you get a clean install of Presentation Server on every server. If you prefer to use
tools like Altiris instead of Active Directory to deploy the MSI that’s also fine.
• Citrix Install Manager
• Active Directory software deployment GPO
• Altiris
This also ensures clean installations of the applications.
Advantages of virtualising Citrix
• 32bit Terminal server doesn’t scale on hardware that supports much more than 4 CPUs and
more than 4GB of ram. Using it in ESX means you can make use of bigger hardware
therefore consolidating the amount of physical servers needed to run a Citrix farm
• VMware VI 3.x provides data centres with features that allow Citrix to be highly available like
HA and DRS.
• A Citrix Farm is usually made up of separate component servers like a Database server, a
License Server, a Secure Gateway server, a Web Interface server and a dedicated Zone data
collector. These applications would benefit from what virtualisation has to offer in the way
of consolidation.
• Provisioning a Citrix server has always been on the mind of a Citrix Administrator and
VMware has some cool tricks up its sleeve in regards to server provisioning.
Disadvantages of virtualising Citrix
• Never expect to get as many users on a virtualised Citrix server as you would on physical
one. Even at best case you still have some performance overhead consumed by the
VMkernel
• Due to the above more software licenses are required because of scaling virtual Citrix
servers across not up.