Archive: Posts

How to Deploy the Lowest Latency Horizon View and XenDesktop VDI VMs?

For the lowest latency VDI VMs, the VMs should be running from in-host RAM.

The combination of two facts – that RAM is the lowest latency media there is, and it is on the same motherboard as the host CPU, makes this storage architecture for VDI higher performing than any other.

But how do you go about doing this considering that the VM disks (VMDKs) for these virtual desktops are on the backend storage array?

There are two possible ways. One is to move the VM to RAM from backend array, now I don’t know of any technology that will do this, and maintain support for VMware features like HA, vMotion etc. The second option is to ensure that all storage requests for VDI VMs are serviced from host RAM. This can be accomplished by VirtuCache.

Here is how you go about doing this with VirtuCache. The steps are slightly different for persistent and non-persistent VDI.

Terms to note: In VirtuCache, there is a caching policy called ‘Write-Back’ that caches all VM reads and writes to in-host cache media (RAM / SSD). Additionally, with this policy, you can choose to make ‘One Replica’ of the write cache, which will mirror the write cache to cache media in another host. This is to protect against data loss if a host were to fail. Or you can choose to not replicate writes (‘No Replica’ option).

Persistent VDI.

If you are running persistent VDI then you obviously cannot afford to lose data if a host were to fail, so you should apply ‘Write-Back One Replica’ policy to all Datastores.

Non-Persistent VDI.

If you are running non-persistent VDI then you should apply the ‘Write-Back No Replica’ policy to the Datastore that contains the end user VMs. This will result in the lowest latency VDI VMs you can possibly have – lower latency than even NVME SSD based SAN arrays or Hyperconverged (HCI) appliances because none of these other storage technologies can use large amounts of RAM (RAM being the highest performing media there is) in the storage IO path; and secondly, unlike with HCI or SAN Arrays, there is no network overhead with the ‘Write-Back No Replica’ policy. Now there will be data loss if the host fails, but for non-persistent VDI VMs, that should be fine. Note that the VMs used to manage and provision VDI VMs should still be using ‘Write-Back One Replica’ policy because you can’t afford data loss for those VMs.

VM Level Latencies for Persistent and Non-Persistent VDI, with VirtuCache Caching to RAM.

Note that the latency of host RAM for traditional VDI workloads is 0.01 ms and for a 10gbps network is 0.2 – 1 ms. Also, the below latencies are measured at the VM level and not at the storage controller, datastore, or any other point in the IO path, since it is VM level stats that the end-user experiences.

VDI Type

VirtuCache Policy

VM Read Latency

VM Write Latency

Persistent VDI

Write Back One Replica

0.01 ms

0.21 – 1.01 ms (sum of network and RAM latencies)

Non Persistent VDI

Write Back No Replica

0.01 ms

0.01 ms

If you don’t have spare host RAM, then you can use an SSD with VirtuCache. Latencies of a PCIe or NVME SSD are 10x RAM latencies, so not as low as RAM but still very low.