With the release of GEM Automation 220.127.116.11 came a new set of capabilities to monitor core network statistics that directly affects the user experience in Remote Desktop Services Virtual Desktop Infrastructure (VDI). As we have quite a few users who are either working from home or from another country (on another continent), it became obvious we needed some extra information to assess and diagnose the experience of our users.
The core of this new functionality resides in the Windows\libWindowsRDS.psm1 module. The function that performs the grunt of the work is called Get-RDSPerfmonStatistics. An easy way to monitor your RDS infrastructure is to put the name of your brokers in RDSServers.txt and then you can simply call Monitor-RDSPerformance.ps1 without any parameters assuming you have configured your environment properly in the configuration database using ConfigurationDatabase\libConfigurationDatabase.psm1. Only the credentials of the user performing the monitoring need to be added as a configuration setting. For example, you could do this by calling the New-ConfigurationSetting function
New-ConfigurationSetting -scope Global -name AutomationCredentialUserName -value <user name>
New-ConfigurationSetting -scope Global -name AutomationCredentialPassword -value <user password>
Doing it this way allows you to easily schedule the Monitoring-RDSPerformance.ps1 script in Task Scheduler.
Once the script has been properly configured and is running, it will collect the following metrics:
- \RemoteFX Network(*)\Current TCP RTT
- \RemoteFX Network(*)\Current UDP RTT
- \RemoteFX Network(*)\Total Sent Rate
- \RemoteFX Network(*)\Total Received Rate
The script will also collect the following user information to facilitate the reconciliation of the performance data with actual users:
- Broker computer name
- Collection name
- Host server name (i.e. Hyper-V host running the VM)
- User company
- User title
A caveat of this script to note is that session information is only refreshed a specific interval. The refresh process lists the currently active sessions in order to setup the perfmon monitoring required (i.e. target the right VDI computer). By default this is done every 30 minutes. This means if a user connects and has a session shorter than 30 minutes, there’s a potential it won’t show up in the statistics.
Here’s and idea what the data looks like in the Excel spreadsheet:
As you can see, I can slice and dice the user statistics in multiple ways in order to get to what I’m looking for. One graph that’s particularly interesting to help you assess the situation is the one in the bottom left. It shows you how many samples were within certain RTT buckets. It gives you a nice an easy way to see if the user experience is generally good or bad. It’s also important to keep an eye on the Average TCP RTT (if you are not using UDP) and the TCP RTT Jitter. They show you the average connection latency and the amount of latency variations happening.
Right now the Excel spreadsheet is not available. Once I clean our confidential data from it, I’ll publish it to CodePlex.
If you have any questions about this, feel free to leave me a comment!