Troubleshooting the performance issues you may encounter while running a Windows virtual desktop can often leave you scratching your head in puzzlement, as there is a wide range of things to inspect and fine-tune. Some of the potential solutions are really quite simple “a-ha!” moments, while others require a deeper investigation. If only it was as simple as rebooting your machine, right? Although, just to be sure, have you actually tried that?

In any case, while we can’t write an entire handbook here on troubleshooting Windows VM performance, we will try to condense some of the most frequently encountered solutions into a sort of checklist you can follow.

Common causes of Windows VM performance issues

  • Real-time antivirus scanning your VM directories while you’re using the VM.
  • Fragmented disks (more common with HDDs rather than SSDs).
  • Not enough RAM allocated to the VM environment.
  • Your virtual client is an outdated version.
  • Low system specs for your VM software, or outdated GPU drivers.
  • AMD-v or Intel VT technology disabled in your BIOS, or they are enabled but disabled in VMware.
  • A low amount of virtual disk space.
  • Your operating system needs an optimization checkup.
  • The VM process needs to be assigned a higher CPU priority.

Additional performance optimization tips

  • Use fixed VHD files to avoid corruption.
  • Avoid using Hyper-V snapshots as a backup alternative to Hyper-V.
  • Take advantage of wait states and performance measuring tools.
  • Avoid having too many virtual network switches.
  • Make sure the management OS is not being overloaded.
  • Install Hyper-V on the Windows Server Core, and enable Dynamic Memory.
  • Try enabling MPIO (multipath I/O).
  • Enable VLAN tagging.

Concise VM performance troubleshooting

In this section, we will give some more concise information and steps on troubleshooting specific VM performance issues.

CPU performance issues

When it comes to session-based desktops, CPU constraints can be quite a problem for various reasons. For example, a large culprit could be hardware acceleration being enabled within your browser – Chrome is notorious for massive CPU cycles, especially if you have multiple extensions running or tabs open.

It’s important to establish what a normal baseline of CPU consumption is for your environment, without any other processes running. If the CPU is flat-lining or showing high spikes over 70%, it’s likely that the CPU is bottlenecking your VM.

But if your CPU is performing fine without any additional processes, monitor what processes are consuming CPU resources in your Task Manager or Sysinternals Process Explorer, so you can identify the culprit, whether it’s a service or too many users on a single host.

It’s important to know that not enough RAM will cause the CPU to work harder, as well as increase disk activity due to paging RAM. Also, even though we mentioned having hardware acceleration enabled could be a culprit, having it disabled could also be an issue, especially if you’re streaming HD videos in the web browser.

Disk performance issues

For troubleshooting disk performance, there are two areas to investigate.

The first will be the OS disk of your VM. If you’ve been focusing on compute sizing, it’s worth knowing that incorrect sizing can create issues with overall stability. This is because smaller disk sizes equate to lower throughput and IOP availability, which will hamper the performance of multi-session deployments. For this reason, you should size the OS disk accordingly with users-to-host ratio in mind.

Choosing the wrong sized virtual machine could result in limiting the potential throughput allowed by the disk. A good way of identifying disk performance issues is to monitor the disk queues within your resource monitor.

Some additional tips:

  • Avoid using standard disks, aim for SSD (preferably P-type) – here’s a handy guide on different types of SSD drives.
  • Allow your I/O to be spread across several disks.

RAM performance issues

RAM can be a bit of a problem to troubleshoot, even if you have a lot of RAM installed in the core machine. A very common issue is just having a lot of core programs that consume high amounts of RAM, although high memory consumption is not the exact issue, but rather the applications storing their data into the RAM.

When the RAM becomes exhausted, your page file starts making up for it, which inevitably degrades the performance of the session host. So for example, let’s say you’re using an SSD. The pagefile has a write speed of around 456MBps, whereas RAM can write at around 12,800MBps. So when the RAM becomes exhausted, the performance gets shouldered onto the SSD, which causes the performance issues.

What you’ll want to check are the hard faults, and keep an eye open for users connected to the core host that are using resource-intensive applications. In this case, you’ll want to try and balance the users across hosts, such as asking some users to connect to a different host.

Another thing that helps is automatically logging off users, and regularly rebooting the VM.