I have already done some posting about analyzers, optimization and IO offloading (https://pascalswereld.nl/post/72323420934/ram-based-storage-vdi and https://pascalswereld.nl/post/71309552232/reducing-io-at-host), but a question that rises often in VDI projects is what IO(PS) do we expect in what layers of the infrastructure and how can we measure them accordantly?
But first start at the start.
What kind of IO can we expect in VDI?
IO in the case of VDI, and other virtualization workloads, are mainly in the networking and storage. Networking IO is measured in the throughput of the network components and in the time a command takes in traveling through the components (up and downstream) measured in latency.
Storage IO is measured in the amount of operations (input output per second, IOPS), characteristics of the IO (sequential, random, read/write ratio), the time a command takes in traveling through the components (latency) and the throughput of the storage components.
Why is IO important in VDI?
Resources and IO these resources need is key in delivering a good desktop experience. It does not matter that the desktop is a physical or virtual desktop, it is a matter of ensuring that the desktop has sufficient hardware resources (the four horsemen CPU, memory, networking and storage) to run the OS and applications at the right time. Don’t have enough or slower then needed, the desktop experience will suffer immediately as will the users.
With physical desktops each of the resources are local to and dedicated for that desktop, with modern systems this is often not a problem, but here some of your user experience requirements are started. Most of the users are used to working with physical desktop environments and know what to expect in experience of those systems. They want the same or faster in VDI. With resources in VDI, there will be abstracting and pooling of those (hardware) resources. The resources are presented and pooled to the hypervisor host. For example the virtual hard drive is available on the hypervisor local or centralized storage. This storage is shared (or replicated) between hypervisor hosts. IO requirements and consequences of the IO load is spread across the virtual and facilitating resource (storage and network) infrastructures. In order to deliver a consistently high performance, virtual desktops require a constant access to preferably low latency and high throughput resource infrastructures.
What is normal IO in the VDI?
Normal? There is no normal. Every organization will have it’s own workload footprint, this is the case in server virtualization and this is also the case for virtual desktops. A Windows image will have a certain IO footprint that is more or less known out there (in averages), but depending on your build, sizing, own components and usage these differ. The IO footprint of a virtual desktop will be influenced by choices in your deployment, for example the optimization of your image, persistent or stateless, offloading of certain applications (like virus protection to the hypervisor), using application virtualization, optimized in IO characteristics (small random IO to large sequential IO) and de-duplication/compression throughout the infrastructure. With certain techniques you can get your IO down to and handled on the host.
How will you be able the know your specific IO? Well measure, test, baseline, report (or document) and repeat. Preferably start when planning (pilot or poc) for a VDI.
Sure, you can use one of the available calculators out there as a reference point (please do), but you still have to do some of the magic yourself.
How can we measure the IO of the VDI?
It is important here to know what kind of components are in your infrastructure and how to measure the metrics of these components.
Start from within your guest as there the user will feel it’s pain, oh wait….will get his warp speed desktop experience.
Tools as a complete solution:
- vCenter Operations (VCOPS) and for VDI specifically, VCOPS for Horizon view. Complements the vCenter / ESXi monitoring and metrics already in place with excellent views and reporting states of your environment.
- EdgeSight and Desktop Director for XenDesktop VDI.
- XenServer monitoring, depending on your version you will possibly need to add a Performance Monitoring Enhancement pack.
- Planning tools like the VMware View Planner (https://pascalswereld.nl/post/66369941380/vmware-view-planner), or analyzer tools like the VMware fling vBenchmark (https://pascalswereld.nl/post/62991166022/flings-vbenchmark) / IO Analyzer (https://pascalswereld.nl/post/58225706990/vmware-io-analyzer-fling) or for Citrix the XenServer PerformanceVM.
- Login VSI an industry standard load testing tool for virtualized desktop environments. Login VSI can be used to test the performance and scalability of every Windows based virtual desktop solution. Can be used for VDI Horizon View, XenDesktop as well as heterogeneous solutions where SBC or RDS are in place. ( there is going to be a blog post on this subject a little later on).
- Nagios / Cacti and the like. You will have to add your counters and checks to the configuration, which can be a little gruesome if you don’t have any experience. But these are excellent products to have your whole infrastructure monitored with all sorts of counters and have a chains with parents and child objects in there.
Tools at the layers:
This really depends on the solution in place. Know your infrastructure and how traffic flows is key here. The monitoring needs to be planned so that you get your counters in the same time window and with the same metrics. Get the disk and network counters from the guest OS itself thoughout the infrastructure. Keep an eye on the CPU and memory on all layers, and check for paging/swapping. Averages on layer x and downstream in real time can be a bother. Also like written in a previous post, time (and time zone) needs to be set correctly and synchronized with the same source.
But to give some pointers
- Perfmon / Resource monitor.
- iostat/vmstat/top and other Linux tools.
- Hypervisor monitoring, like from vSphere webclient /vCenter/ESXi host or XenCenter.
- Esxtop / XenTop / vscsistats. See some standards in my post (https://pascalswereld.nl/post/69976450322/vphere-monitoring-metrics)
- Networking SNMP tools, or the own supplied tools.
- Storage SNMP tools, or the own supplied tools. When you have switches and controllers in your storage infrastructure monitor them all the way.
- Benchmarking tools like IOMeter, IOzone, Passmark or specific to a kind of workload (be ware, there are a lot out there).
– Happy IO’in in the VDI world (and cue Neil Young)