Troubleshooting performance issues in virtual desktop environments is challenging. It requires a solid grasp of the deployment architecture and an understanding of how the various system components interact with each other. Poor or inconsistent performance is the single biggest reason for an end-user to be unhappy with their virtual desktop and is by far the most common reason for failures of virtual desktop projects.
In this series, we will explore a practical, methodical approach to identifying and resolving common performance issues that arise in WVD environments deployed in Azure. This is not meant to be an exhaustive guide for every possible deployment scenario, but rather an easy-to-follow, practical approach. We will not use fancy monitoring and reporting tools and will leverage only free, built-in tools for performance monitoring such as the Task Manager, Resource Monitor, and Azure Monitor.
There are four likely areas that should be investigated when users report poor performance and this write-up will be organized in the following order:
Reproducible vs. Sporadic Windows Virtual Desktop Performance Problems
Just like when you bring your car to a mechanic and the problem “goes away” by itself, pinning down performance problems can be difficult. However, understanding specifically what the user means by “it’s slow” and being able to reproduce it at will decreases the difficulty of performance troubleshooting by an order of magnitude.
For this discussion, let’s assume that performance issues are constant or reproducible. Once we have a good grasp on how to troubleshoot these “easier” problems we’ll be able to tackle the more challenging “sporadic” performance issues. The approach to troubleshooting reproducible issues is different from sporadic ones. When the issue is happening in real-time, we want to watch various real-time metrics and identify the one constraint that’s the bottleneck. When issues occur sporadically without a way to “make it happen” we have to rely on good quality reporting tools that can monitor many metrics at a granular level and help us correlate the occurrence of the issue with a historical view of the system metrics at that time.
There is never more than ONE constraint at a time
It is critical to remember that there is one, and only one, bottleneck that is constraining the system at any one time. The goal should be identifying that one constraint and eliminating it. Once that’s done, the bottleneck will shift elsewhere and that will become the new constraint of the system. It is very possible that as soon as the current constraint is alleviated, the system performance improves only marginally until the bottleneck shifts elsewhere but that doesn’t negate the fact that our focus should always be on finding the one bottleneck that’s constraining the system right now. Such focus will make our job significantly easier – solving for one variable – even if soon after we’ll have to solve for another.
In this guide we are going to rely on a handful of free monitoring and troubleshooting tools.
- Task Manager – will be used to monitor and troubleshoot CPU-based system constraints
- Right-click task bar and select Task Manager OR
- Press CTRL-ALT-DEL and click on Task Manager OR
- From Run box or command prompt type taskmgr
- Resource Monitor – will be used to monitor and troubleshoot RAM and DISK related constraints
- From Task Manager>Performance tab click “Open Resource Monitor” link on the bottom left OR
- From Run box or command prompt type resmon
- Ping – will be used to monitor and troubleshoot NETWORK latency and packet loss
- PingPlotter – can be used to correlate packet loss and latency with poor user experience and determine where along the path the issue occurred
- PingPlotter Free can be downloaded here
- Speedtest.net – will be used to measure internet bandwidth on local connection and within virtual desktop session
- Iperf – can be used for advanced throughput measurement between two network nodes
- Iperf can be downloaded here
- Azure Monitor is a very powerful tool that can be used to monitor many different metrics for any Azure resource. Monitoring and graphing Standard Metrics available on Azure resources is free. Azure Monitor can be used to configure monitoring of CPU, RAM, DISK and NETWORK metrics on one or more Azure desktop VMs and use the data collected overtime to correlate user-reported performance issues with actual system behavior. It is a great way to figure out what’s causing sporadic performance issue if they cannot be easily reproduced and monitored with the other tools mentioned above.
- Azure Monitor can be accessed in the Azure Portal>Monitor
- Detailed information about the capabilities can be found here
Now that we understand the objective and have our tools in hand, we’re ready to begin the process of troubleshooting performance and implementing best practices.
Stay tuned for parts 2, 3, 4, and 5 coming soon. We'll link them within this article for easy access.
To be sure you never miss out on any future Nerdio content, subscribe to our newsletter.