Microsoft Windows comes with some interesting features to help manage how computer resources are shared among users using Remote Desktop Services. I first came across this feature on Windows Server 2012 R2 when I noticed that one of my users’ session was, pretty much out of the blue and quite often, disrupted by the server.
Most of the time it takes resetting their connection to the server for them to be able to reconnect and use the server resources–network, storage, or processor, but sometimes just a fresh attempt to reconnect the usual way just works.
To figure out what this was happening, I looked no farther than the log files to find the log message “Remote Desktop Services Network Fair Share was disabled for the user account DOMAIN_NAME\username” in the Event Viewer under Microsoft/Windows/TerminalServices-Remote Connection Manager/Admin.
A solution is suggested by a technet article, but the description is for Windows Server 2008. One has to find the equivalent for Windows Server 2012. The article suggests the following under Fair Share CPU Scheduling.
Fair Share CPU Scheduling is a new feature included with Remote Desktop Services in Windows Server 2008 R2. Fair Share CPU Scheduling dynamically distributes processor time across sessions based on the number of active sessions and load on those sessions by using the kernel-level scheduling mechanism included with Windows Server 2008 R2. On an RD Session Host server, one user will not affect the performance of another user’s session, even if the RD Session Host server is under a high load.
Fair Share CPU Scheduling is enabled by default. You can disable this feature by configuring the following registry entry to 0:
Finally, trying to solve this led me to an even more interesting article describing Resource Sharing in Windows Remote Desktop Services:
From the Server 2012 RC Whitepaper, the 2012 fair share experience:
- Network Fair Share. Dynamically distributes available bandwidth across sessions based on the number of active sessions to enable equal bandwidth usage.
- Disk Fair Share. Prevents sessions from excessive disk usage by equal distribution of disk I/O among sessions.
- CPU Fair Share. Dynamically distributes processor time across sessions based on the number of active sessions and load on these sessions.
The latter article also includes cool screenshots you should check out.