Category Archives: Citrix

Virtualising XenApp – What’s the magic number ?

In the past I have virtualised a number of different applications and types of servers, among these have been several Citrix WinFrame/MetaFrame/Presentation Server or as it is currently known XenApp Servers.

Recently I have been asked about this on a number of occasions and the question is always the same:

How many users can you get on a Virtualised XenApp Server ?

That’s like saying how long is a piece of string ! – The answer to this question is the same to most IT related questions I get asked…. It depends !

To be able to give this subject the full attention that is needed I plan on creating a series of blog posts which will enable us to discuss the different configuration types and I will hopefully aid you in working out what your magic number is, how many users you can get on a virtual XenApp server.

The series of blog posts will probably change as I start to delve into the different subjects but all will eventually link from this post.

Introduction
Why Virtualise XenApp ?
Design Factors
•    Sizing
•    Citrix Desktops
•    Seamless Applications
•    Redundancy
•    Licensing
•    Cost Cutting
Testing
•    Strategy
•    Applications
•    Tweaking
Implementation
•    Templates
•    Deployment
Monitoring
Upgrade strategy

Hopefully this will help with some of the questions I have received recently, if there is anything missing which you would also like me to include then please do let me know via the comments of this post !

If you are also into podcasts then make sure you listen to the recent discussion I had with the Chinwagger himself – Mike Laverick, this can be found on his blog here.

Citrix on VMware, 1vCPU or 2vCPU ?

Following my previous Citrix testing on VMware I thought it best to try a dual vCPU VM to see if I can get double the users of a single vCPU, sounds logically sensible to me !

So just a reminder that a single vCPU with 25 users ran at around 73% average, a nice figure to run at giving plenty of CPU for peaks and troughs.

This test of a dual vCPU was undertaken following the sucesfull test of 25 users on one VM with 1 x vCPU this was run as a baseline to see how it relates to the single vCPU VM.

Virtual Machine Specification

2 x vCPU (Using VMware process affinity to tie the VM to a specific CPU core)
3072 GB RAM (reduced from 4GB as memory was not being used)

1 x 20GB Hard Disk Stored on SAN

1 x vNic (1GB)

Users Logged on: 50

  • Logged 10 users on and working over 5 minutes
  • Logged another 10 users on and working over 5 minutes
  • Logged another 5 users on and working over 3 minutes
  • Kept 25 users logged on and working for 15 minutes
  • Logged all 25 users off over a 5 minute period

clip_image002

As you can see from the above, a 3000Mhz server runs at around 60% which is not a good start bearing in mind the single vCPU VM.

Next Test 50 Users and Dual vCPU

This test was undertaken following the sucesfull test of 25 users on one server with 1xVCPU allowing for a reasonoble amount of capacity for application usage.

Virtual Machine Specification

2 x vCPU (Using VMware process affinity to tie the VM to a specific CPU core)
3072 GB RAM

1 x 20GB Hard Disk Stored on SAN

1 x vNic (1GB)

Users Logged on: 50

  • Logged 20 users on and working over 5 minutes
  • Logged another 20 users on and working over 5 minutes
  • Logged another 10 users on and working over 3 minutes
  • Kept 50 users logged on and working for 15 minutes
  • Logged all 50 users off over a 5 minute period

clip_image002[7]

The peak CPU usage of this graph was reached before 50 users were connected and therefore proves that the best method to get more users per physical server is to scale out rather than increase CPU resources.

This will obviously make sense in some cases where the cost of Operating System, Application software and licenses and management costs may make sense to build a 2 x vCPU and get slightly more users.

 

Virtualising Citrix/XenApp on VMware

As part of some investigation into virtualising Citrix servers I decided to evaluate the use of Windows 2003 32 bit Standard servers running as virtual machines on VMware ESX. The reasoning behind the use of virtual machines is to try and issue more Citrix sessions to a single server therefore reducing the amount of hardware, data center space, power consumption and heat generated by the multiple physical servers.

Moving to VMware should allow for multiple machines to run on a physical server, allowing for a higher user load by adding more smaller loaded servers to the physical server.

This obviously depends on how Citrix is used in your environment, as Citrix applications that are published to users who open the application and minimise it until they need the app, using there desktop applications most of the time will have much a lower utalisation impact than users who use full Citrix desktops.

It will also depend on the kind of applications that you are using and how CPU/Memory intensive these applications are.

Test Platform

In order to test this, and other environments, I have been using Citrix Edgesight for Load Testing. Edgesight for Load Testing allows me to develop “scripts” that simulate a user load. These scripts are made up of various user interactions, such as use of the Office products, and can then be replayed with various time parameters to simulate a real world load. Each script can be run in the context of a user session (separate users for each session) and so allowing us to get somewhere near generating a “real world” load.

The generated script is run against a specified server and the times taken to perform each action can be measured along with the built in Virtual Infrastructure performance statistics and graphs.

Physical Server (ESX Host) Specification

  • DELL PowerEdge 2950 III
  • 2 x Quad Core Intel Xeon X5450, 2X6MB Cache, 3.0GHz, 1333MHz FSB
  • 32GB FB 667MHz Memory (8x4GB dual rank DIMMs)
  • 2 x Intel PRO 1000VT Quad Port Gigabit Network Card, PCI-E
  • Emulex LPe-12002-E, Dual-port 8Gbps Fibre Channel PCI-Express HBA card
  • 2 x 73GB 15.000 rpm 3.5-inch SAS Hard Drives
  • ESX 3.5 Update 1

Virtual Machine Specification

  • 1 x vCPU (Using VMware process affinity to tie the VM to a specific CPU core)
    4GB RAM
  • 1 x 20GB Hard Disk Stored on SAN
  • 1 x vNic (1GB)

Virtual Machine Software Specification

Windows 2003 R2 32 Bit Standard Edition SP1
Citrix Presentation Enterprise 4.0 Rollup pack PSE400W2K3R03 plus additional hotfixes
Office 2003 with latest Service Pack

Other Configuration

The Virtual machines, ESX Hosts and VMTools were configured specifically to adjust the virtual machines for best performance of Citrix using multiple best practice and configuration documents.

Test Script

The test script was made up of 3 core sections that invoked the use of the following software:

  • Outlook 2003
  • Word 2003
  • Excel 2003

For each of the scripts the programs would be opened, used (either opening email or opening documents), and then left open and the next program opened. Once the Excel test had finished the test closed all of the Office applications and started again with Outlook. This was repeated until the allotted test time was completed and the user was then logged off.

Test Load

These tests were carried out with a number of users per virtual machine. The virtual machine was configured with 1 x vCPU to maximise the number of virtual machines that could be hosted on each host, as the host has 8 cores each core could host a virtual machine.


Test 1 – 10 Users

Test

Time Period

Users Logged On

Details

1

20 minutes

10

· Logged 10 users on and working over 5 minutes

· Kept 10 users logged on and working for 15 minutes

· Logged 5 users off over a 5 minute period

clip_image002


Test 2 – 20 Users

Test

Time Period

Users Logged On

Details

2

25 minutes

20

· Logged 10 users on and working over 5 minutes

· Logged another 10 users on and working over 5 minutes

· Kept 20 users logged on and working for 15 minutes

· Logged all 20 users off over a 5 minute period

clip_image004


Test 3 – 25 Users

Test

Time Period

Users Logged On

Details

3

33 minutes

25

· Logged 10 users on and working over 5 minutes

· Logged another 10 users on and working over 5 minutes

· Logged another 5 users on and working over 3 minutes

· Kept 25 users logged on and working for 15 minutes

· Logged all 25 users off over a 5 minute period

clip_image006


Test 4 – 30 Users

Test

Time Period

Users Logged On

Details

4

35 minutes

30

· Logged 10 users on and working over 5 minutes

· Logged another 10 users on and working over 5 minutes

· Logged another 10 users on and working over 5 minutes

· Kept 30 users logged on and working for 15 minutes

· Logged all 30 users off over a 5 minute period

clip_image008


Test 4 – 35 Users

Test

Time Period (Minutes)

Users Logged On

Details

5

38 minutes

35

· Logged 10 users on and working over 5 minutes

· Logged another 10 users on and working over 5 minutes

· Logged another 10 users on and working over 5 minutes

· Logged another 5 users on and working over 3 minutes

· Kept 35 users logged on and working for 15 minutes

· Logged all 35 users off over a 5 minute period

clip_image010


Results

During the tests CPU/Memory/Disk and Network figures were monitored, as the users were added to the virtual machines it was clear the application set used for testing were CPU bound and although all other figures were consistently monitored these would not take as heavy an impact as CPU.

From the above graphs we can see where the users were logging into the virtual machines and where the sessions conducted there test patterns, after an initial spike in the login period the figures averaged out at the following:

  • 10 Users – Averaged at 40% CPU Usage
  • 20 Users – Averaged at 65% CPU Usage
  • 25 Users – Averaged at 73% CPU Usage
  • 30 Users – Averaged at 81% CPU Usage
  • 35 Users – Averaged at 87% CPU Usage

Conclusion

Based on this testing and the environment we used, 25 users per single vCPU guest seems feasible (possibly a few more) but my opinion 30+ users is pushing sensible extended period CPU load due to resources needing to be made available for the tasks which will use the CPU for larger and longer periods of time which may impact the other running users of that particular machine.

If we extrapolate this out, it could mean 200+ (25 * 8) sessions on 8 guest machines across the 8 processor cores of the Dell 2950.

Please note that the current version of ESX at the time of writing this document is ESX 3.5 Update 3. As VMware continue to improve memory and CPU handling techniques it is feasible that further tests on this version may provide more sessions per virtual machine.

Unfortunately I was unable to get anywhere near the numbers that VMware achieved in there scalability document.

If you have any experience in virtualising Citrix or if you have any further tweaking or tuning tips please leave a comment below.

Part 2: Citrix on VMware, 1vCPU or 2vCPU ?

Powershell Citrix License Alerts

We had an issue today where we ran out of Citrix Licenses and therefore some of the users were unable to login, the Citrix License server seems to be a pretty basic app with alerting feature.

After purchasing and installing some licenses so that the users could gain access to there applications again we started thinking about ways to monitor this so it didn’t happen again.

I was sure we could monitor this using powershell and started to look into it, first thing I came across was a BSonPoSH article explaining how to get license information from WMI, that guy has done some impressive stuff with Citrix and powershell, check it out on his site.

Ok, so all looked fine and dandy, until we ran it and found that one of our licenses was not showing in the figures 🙁

Looking into it a bit more and exploring WMI gave us the same results, one of the licenses was missing. Sod’s law says it was the one we were after too !

Looking on the Internet again it would seem this is a “known problem” which there is a private fix for.

Not to be beaten I thought of other ways to get this information, I know I had pulled information from websites before so decided to try and access the information direct from the license web page.

Looking at the html code that was dumped, it was changing, this made it hard to just read the specific lines I wanted, so as you can see from the code I searched for the license type I wanted ‘Enterprise’ and then worked out where the figures are that I needed from there.

If nothing, this is a useful script to see how to retrieve html information and work with it to get the end results.

Run it normally and if the License usage is above 90% it will fire off an email or run it with the send parameter to send an email anyway.

Any comments or quires please leave a comment below.

Download the script here