The key factors that we need to be sure to optimize in Remote Desktop Session Host are CPU, memory, disk, and graphics.
- CPU Configuration - CPU configuration is conceptually determined by multiplying the required CPU to support a session by the number of sessions that the system is expected to support, while maintaining a buffer zone to handle temporary spikes.
- Processor Architecture - The 64-bit processor architecture provides a significantly higher kernel virtual address space, which makes it more suitable for systems that need large amounts of memory.
- Memory Configuration - It makes sense that the memory configuration depends on the applications that remote users employ, but you can estimate the required amount of memory by using the following formula: TotalMem = OSMem + SessionMem * NS. OSMem is how much memory the operating system requires to run (such as system binary images, data structures, and so on), SessionMem is how much memory processes running in one session require, and NS is the target number of active sessions.
- Disk - Using striped RAID configurations or other types of high-performance storage further improves performance. Controllers with disk write caching offer improved support for synchronous write operations. Because all users have a separate hive, synchronous write operations are significantly more common on an RD Session Host system.
Below are some considerations and suggestions when configuring applications that are to be used on an RD Session Host system:
- Minimize background idle loop processing – Typical examples are disabling background grammar and spell check, data indexing for search, and background saves.
- Minimize how often an application performs a state check or update – Disabling such behaviors or increasing the interval between polling iterations and timer firing significantly benefits CPU usage because the effect of such activities is quickly amplified for many active sessions. Typical examples are connection status icons and status bar information updates.
- Minimize resource contention between applications by reducing their synchronization frequency - examples of such resources include registry keys and configuration files. Examples of application components and features are status indicator (like shell notifications), background indexing or change monitoring, and offline synchronization.
- Disable unnecessary processes that are registered to start with user sign-in or a session startup – These processes can significantly contribute to the cost of CPU usage when creating a new user session, which generally is a CPU-intensive process, and it can be very expensive in morning scenarios. Use MsConfig.exe or MsInfo32.exe to obtain a list of processes that are started at user sign-in.
- Performance Tuning for Remote Desktop Session Hosts https://msdn.microsoft.com/en-us/library/dn567648.aspx
- Tuning Windows 2012 – Remote Desktop Session Host – Part 1 https://www.monitis.com/blog/2014/01/08/tuning-windows-2012-remote-desktop-session-host-part-1/
- Tuning Windows 2012 – Remote Desktop Session Host – Part 2 https://www.monitis.com/blog/2014/01/13/tuning-windows-2012-remote-desktop-session-host-part-2/