Some people are saying that PVS is complex. I personally don’t think that PVS is complex looking from an infrastructure endpoint, but it can be complex to understand the concept of PVS and the new way of working. When people get that part, the complexity is not a bottleneck anymore. But when people understand the way of working understand new questions are often raised. How many bandwidth does this solution requires, which hardware resources requires these PVS server to serve their role. In this article series I’m diving into this topic. First I will discuss the theory of the resource usage by Citrix, followed by real life figures. The real life figures are divided in two parts: daily usage and boot (storm) usage. As just mentioned we are starting with the theory.
If you take a look at hardware resources the following components can be recognized: CPU, Memory, Disk and Network. Let’s take a look what Citrix is describing about these components.
Physical v Virtual
This discussion is actually outdated nowadays, but to be accurate I will mention it shortly. Hypervisors are currently that powerful, they are capable of processing heavy workload without any problems. PVS servers are often seen as heavy workload servers, so were discussed to set-up physically for a long time. However nowadays PVS servers can be easily virtualized. As in many organizations the starting point is that servers should be virtualized, I currently see only virtualized PVS servers.
Theory – CPU
The first component we are going to discuss in more detail is the (v)CPU. As this is the theory of Citrix I’m going to use as much as much possible referrals and quotes, as this is not my opinion or theory but those of Citrix. According the CPU Citrix says that the CPU is not that important, read this as other components have more impact on a PVS infrastructure.
In the Citrix Virtual Desktop Handbook 7.x the following statement is made:
Small environments (up to approximately 500 virtual machines)
2 vCPUs are recommended.
• Larger environments
4 vCPUs are recommended.
Organizations hosting Citrix XenApp/RDS based environment will probably don’t have more than 500 virtual machines, so two CPUs are enough. VDI environments normally have more virtual machines, so they could be running with 4 CPUs.
Theory – Memory
Most important about memory is the usage of x64 versions of the operating systems. Luckily current server versions are only available in x64 versions. With an x64 version of the operating system you can use the large system cache. With the large system cache data available data from the disk are loaded into memory (and stays in memory) on first time access. For PVS servers this is wonderful features, as the same data is streamed to several target devices. For the second Target Device the data can be pulled out of memory instead of the disk. This can be a big performance gain if the data is loaded out of memory. Logically you need to have the “space” to store the data in memory, so the amount of memory is important for PVS servers. Citrix has provided a formula for calculating the required amount of RAM for PVS server.
RAM = Commited Bytes under load + System Cache RAM [Base Cache RAM + # active disks * avg. Read data from disk]
The challenge with this formula is that you need to know the base cache RAM and average read data from disk, information you only can determine if you are running live in production. While normally the sizing of a server is done in the design phase.
This is recognized in the Citrix Virtual Desktop Handbook 7.x where the following note is provided:
Note: A good starting point for determining the minimum amount of
server memory is to allocate 2GB of RAM per active desktop vDisk and 10GB of RAM per active server vDisk.
For most Provisioning Services implementations, the amount of RAM allocated to each provisioning server will fall between 8 and 32GB.
Determine the amount of RAM based on the amount of vDisks is the way to go in the design phase, use the formula during the build phase in production to check if the sizing is accurate with the production data.
Theory – Disk
If the memory sizing is done properly the disk is not that important anymore according Citrix. That is logical as with the large system cache the data is only read once from the disk and stored in memory. As long there is space within memory the data is reread out of memory and the disk is not used frequently. Logically the disk does not have to be state of the art, because it does not handle much load.
If we check the Citrix Virtual Desktop Handbook it does not contain any requirements for the disk like type of disk, RPM of the disks and so on. Only the size of the disk (for hosting the vDisk) is discussed.
Theory – Network
Network is a very important component within a PVS infrastructure. As PVS streams on demand the network should be reliable; although PVS can resend information for performance reasons you would like that the stream is fast and with interruptions.
In the past Citrix advised to create a separated network for the PVS streaming traffic. Nowadays this is not a best practice anymore and Citrix prefers to use the normal production network for PVS streaming as well. With the fact that 10 Gb networks are getting commodity the earlier bandwidth constrains are gone. In the article Virtual Provisioning Server a successful real world example Dan Allen shows an environment of 1500 XP Virtual Machines consuming 700 Mbit on the network. However Citrix advices to use 10 GB network cards or when the network is 1 GB to consider link aggregation.
If we take a look at the Virtual Desktop Handbook 7.x the same information is showed. I picked the important parts, to provide the overview of the vision in the handbook.
It is imperative that sufficient bandwidth is available for Provisioning
Services to prevent network bottlenecks from affecting virtual desktop performance.
Network utilization is most significant when target devices are booting.
A 10Gbps network is recommended for use with Provisioning
Services. If a 10Gbps network is not available, consider link
aggregation to provide additional bandwidth to the provisioning
servers, or a dedicated physical streaming network.
As the handbook is stating network utilization is most significant when target devices are booting. Each OS needs to stream a specific amount of data so it’s in start state. The Virtual Desktop Handbook uses the following table.
Out of practical experiences I see that the amount of data is a bit higher. For Windows 2008R2 machines with only XenApp 6.5 installed I see at initial boot a data usage between 300 and 325 MB per device.
The Virtual Desktop Handbook the (theorical) throughput is defined including a formula to determine the time required to start-up the machines.
If you use this formula for example with 92 devices with an initial stream of 300 MB over 10 Gbit, the boot time will be around 23 seconds.
In this article series I will go into detail about resource usage of PVS servers. In this first part I described the theory values Citrix is using/advising for the components CPU, Memory, Disk and Network. Also physical versus virtual is touched briefly. In upcoming part 2 article I will discuss the figures based on daily usage.