VDI-in-a-Box is an interesting desktop virtualisation solution from Citrix because it utilises local storage; its aim is to simplify and reduce the cost of entry to desktop virtualisation for small and medium businesses. The main premise is that each piece of hardware acts as a single entity in a grid, as capacity is reached additional servers can be added, enabling the solution to be scaled out block-by-block.
When sizing VDI-in-a-Box there are four main considerations; disk space, disk speed, RAM and CPU. I will look at each and discuss its potential impact. All calculations come from Citrix eDocs guide; VDI-in-a-Box > VDI-in-a-Box 5.0.x > System Requirements for VDI-in-a-Box 5.0.2 or are referenced via link.
Calculating disk space requirements will depend upon your hypervisor and the number of images you intend to utilise. In the calculations below I have assumed that XenServer 6.0 with Thin Provisioning is utilised and that 2 images will be required for 2 desktop types, power users and normal users.
Fixed items will be the storage required for the hypervisor and the vdiMGR appliance, plus Citrix recommends reserving an amount for swap and transient activity. In the Dell and Kaviza reference architecture they recommend 100 GB. Therefore, in this instance, fixed storage will be:
8 GB for the hypervisor + 74 GB for the vdiMGR appliance + 100 GB for swap and transient activity
For the desktops images, templates and virtual desktops, we will assume we are using non-persistent desktops, that we require 2 images and that the base image size is 20 GB for both desktop types. VDI-in-a-Box uses 2 times the image size, to maintain multiple images, and the cloning technology uses 15% of the original size of the desktop image for each desktop created. Therefore if we require 100 desktops the desktop storage requirement per host will be:
2 * image size * number of images + # required desktops *(15% of image size)
= 2 * 20 GB * 2 + 100*(15% of 20GB)
= 80 GB + 100 * 3 GB
= 80 GB + 300 GB
= 380 GB
I recommend adding addition space for growth; in this instance I will assume 30%. Therefore total disk capacity requirements will be:
Fixed items + desktops + growth
= (182 GB + 380 GB) + 30%
= 562 GB + 167 GB
= 729 GB
Disk speed is all about IOPS, understanding desktop IOPS is an art in itself. There are a number of main areas of consideration; boot IOPS, login IOPS, average use or normal operation IOPS, application launch IOPS and log off IOPS for the user type (e.g. normal or power user). A good guide to IOPS considerations and measurements has been written by Jim Moyle titled “Windows 7 IOPS for VDI a Deep Dive 1.0”
In my example IOPS numbers should be seen as a guide only to assist you in determining the disk speed required for your deployment. The fastest disk is not always the most economical, therefore once you have determined the IOPS required it is worth looking at different options for your hardware based on capacity versus unit cost.
In this guide I have referenced the Citrix blog article “Finding a Better Way to Estimate IOPS for VDI”. This is by no means a definitive guide however the section I have utilised “Calculating Workload IOPS” has a useful sub-section on user definitions and a recommended “ballpark guesstimates” figure for IOPS per workload. By utilising these numbers I have been able to simplify my calculations and focus just on this number and not the boot and login numbers. The user definitions are listed below:
Light user: ~6 IOPS per concurrent user. This user is working in a single application and is not browsing the web.
Normal user: ~10 IOPS per concurrent user. This user is probably working in a few applications with minimal web browsing.
Power user: ~25 IOPS per concurrent user. This user usually runs multiple applications concurrently and spends considerable time browsing the web.
Heavy user: ~ 50 IOPS per concurrent user. This user is busy doing tasks that have high I/O requirements like compiling code or working with images or video.
Therefore in this example if we require 100 desktops, made up of 25 power users and 75 normal users our “guesstimate number” for IOPS will be:
(# of power users * 25 IOPS) + (# of normal users * 10 IOPS)
= (25 * 25) + (75 * 10)
= 625 + 750
= 1375 IOPS
Please note: to gauge a true reflection of required IOPS I would suggest monitoring the current usage patterns and workloads in your environment. To bring the peak IOPS requirement down consider the start-up and login patterns and how these can be managed; e.g. allowing for a longer boot time and starting the boot process overnight or early in the day or by only allowing users to log off desktop not reboot and decide what you want to happen to desktops when a user does log off.
RAM requirements are an easier calculation to make however we still have to make a number of assumptions. Total RAM required will be the RAM required for the hypervisor, plus the RAM required for the vdiMGR appliance, plus overhead, plus the RAM required for the virtual desktops.
Citrix recommends at least 1.5 GB for Windows 7 and at least 0.5 GB for XP, with 1 GB for the hypervisor, 1 GB for the vdiMGR appliance and a 10% overhead.
I have made the assumption that all my desktops are Windows 7 and that a normal user requires 1.5 GB RAM and a power user 2 GB RAM. Therefore in this example the total RAM required is:
RAM for Hypervisor + RAM for vdiMGR appliance + (#power users * 2) + (#normal users *1.5) + 10%
= 1 GB + 1 GB + (25 * 2) + (75*1.5) + 10%
= 2 GB + 50 + 112.5 + 10%
= 164.5 + 16.45
= 181 GB RAM
CPU is similar in terms of RAM requirement in that we need CPU for the hypervisor, the vdiMGR appliance, overhead and virtual desktops. The amount of CPU required per user type will vary, in my example I will only be assigning 1 vCPU per desktop however I will make the assumption that I will get less power users per core. Definitions vary; Citrix eDocs states 10 for task workers, 8 for knowledge workers, and 6 desktops per core for heavy users and the Dell reference architecture states 5 for basic users and 6 desktops per core for standard users.
In my example I have picked an average and will assign 8 desktop per core for normal users and 6 desktops per core for power users. Therefore the total CPU requirement is:
1 CPU core for hypervisor + 1 CPU core for vdiMGR appliance + (# power users/6) + (# normal users/8)
=1 + 1 + (25/6) + (75/8)
= 2 + 4.1 + 9.3
=17 CPU cores (Rounded up)
Total Recourses Required
In my example I have 100 users in total of which 25 are classed power users and 75 normal users.
Each user will be supplied with a Windows 7 virtual desktop with 1vCPU, however normal users will receive 1.5 GB RAM and power users 2 GB RAM.
In total I will require:
- 792 GB of disk space
- 1375 IOPS
- 181 GB RAM
- 17 CPU cores
Choosing your Hardware Configuration
There are a number of considerations we need to take into account when selecting hardware.
The first we need to discuss is availability. Server class hardware is great however I do not like the idea of 100 desktops not being available, therefore for my example I am going to suggest an N+1 strategy. This will always depend upon risk vs. expenditure and ultimately needs to be a business decision.
Secondly we need to think about type of hardware, disk type speeds and RAID configuration. As all resources are on a single appliance and we need IOPS and disk space, in most instances blade configurations will be out of the question, as we will only have two disks. Therefore we are often looking at a 2 – 4 U server.
In regards to RAID configuration, RAID 0 will give us maximum disk capacity and IOPS availability but may make us nervous about availability, leaving RAID 1 + 0 as the option that gives us disk space and availability without too much penalty.
Finally we need to consider disk seep as IOPS availability is important. Citrix’s VDI-in-a-Box sizing guide states the following disk speeds
- SSD = 6000 IOPS
- 15K = 145 IOPS
- 10K = 125 IOPS
And Wikipedia states the following:
- SSD = 5,000 – 60,000 IOPS (SATA)
- 15k = 175 -210 IOPS (SAS)
- 10K = 140 IOPS (SAS)
In my calculations I have selected a middle ground and used the following:
- SSD = 6,000 IOPS
- 15K = 175 IOPS
- 10K = 125 IOPS
The two figures that stand out for me in total resources required are IOPS and RAM. See example below for a basic server configuration (Host Specifications):
In the example above, Table 1, a server with 16 cores, 96 GB of RAM and 8 x 15K SAS spindles in a RAID 1 + 0 configuration can support 25 power users and 56 normal users based on my previous calculations and assumptions. And as you can see it is the IOPS that restricts the number of power users and RAM that restricts the number of normal users.
In Table 2 below if we increase the RAM to 128 GB the number of power user desktops is still limited by IOPS however the number of normal user desktops is now also limited by IOPS. Therefore if we had purchased a server in this configuration we would have been wasting money on RAM. To take advantage of this amount of RAM we would either need to change the disk type or increase the number of spindles.
At no point in the two hardware examples has CPU cores or disk capacity been an issue.
The spreadsheet developed for these calculations can be found in the post on this site titled Citrix VDI-in-a-Box: Sizing Calculator.
Getting the hardware right is important and your number of servers will depend upon your appetite for risk plus your understanding of your environment.
Analysing your environment before you start to gauge IOPS is an important step. The numbers here will help but can only be used as a guide. Partners familiar with VDI-in-a-Box will have a good understanding of resources required and may be able to speed up this process based on their history of work.
Finally if you have completed some analysis just using some list price numbers on hardware you’ll see that by understanding your limit points, you can make sure you get the best return on hardware investment and reduce the overall cost per desktop.