Most of the CPU usage on an RD Session Host system is driven by applications. Desktop applications are usually optimized toward responsiveness with the goal of minimizing how long it takes an application to respond to a user request. However in a server environment, it is equally important to minimize the total amount of CPU usage that is needed to complete an action to avoid adversely affecting other sessions.
Consider the following suggestions when you configure 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.
For memory consumption, consider the following suggestions:
Verify that the DLLs that applications load are not relocated.
If DLLs are relocated, it is impossible to share their code across sessions, which significantly increases the footprint of a session. This is one of the most common memory-related performance issues in RD Session Host.
For common language runtime (CLR) applications, use Native Image Generator (Ngen.exe) to increase page sharing and reduce CPU overhead.
When possible, apply similar techniques to other similar execution engines.
Insufficient page file size can cause memory allocation failures in applications or in system components. A general guideline is that the combined size of the page files should be two to three times larger than the physical memory size. You can use the memory-to-committed bytes performance counter to monitor how much committed virtual memory is on the system.
When the value of this counter reaches close to the total combined size of physical memory and page files, memory allocation begins to fail. Because of significant disk I/O activity that page file access generates, consider using a dedicated storage device for the page file, ideally a high-performance storage device such as a striped RAID array.
For more specific storage tuning guidelines, see Performance Tuning for the Storage Subsystem earlier in this guide.
Antivirus and Antispyware
Installing antivirus and antispyware software on an RD Session Host server greatly affects overall system performance, especially CPU usage. We highly recommend that you exclude from the active monitoring list all the folders that hold temporary files, especially those that services and other system components generate.
Task Scheduler (which can be accessed under All Programs > Accessories > System Tools) lets you examine the list of tasks that are scheduled for different events. For RD Session Host, it is useful to focus specifically on the tasks that are configured to run on idle, at user sign-in, or on session connect and disconnect. Because of the specifics of the deployment, many of these tasks might be unnecessary.
Desktop Notification Icons
Notification icons on the desktop can have fairly expensive refreshing mechanisms. You can use Customize Notifications Icons to examine the list of notifications that are available in the system. Generally, it is best to disable unnecessary notifications by removing the component that registers them from the startup list or by changing the configuration on applications and system components to disable them.
RemoteFX® compression can be configured under Remote Session Environment > Configure compression for RemoteFX data. Three values are possible:
Optimized to use less memory. Consumes the least amount of memory per session but has the lowest compression ratio and therefore the highest bandwidth consumption.
Balances memory and network bandwidth. Reduced bandwidth consumption while marginally increasing memory consumption (approximately 200 KB per session).
Optimized to use less network bandwidth. Further reduces network bandwidth usage at a cost of approximately 2 MB per session. If you want to use this setting, you should assess the maximum number of sessions and test to that level with this setting before you place the server in production.
You can also choose to not use an RemoteFX compression algorithm. Choosing to not use an RemoteFX compression algorithm will use more network bandwidth, and it is only recommended if you are using a hardware device that is designed to optimize network traffic. Even if you choose to not use an RemoteFX compression algorithm, some graphics data will be compressed.
Device redirection can be configured under Device and Resource Redirection. Or, it can be configured through Server Manager -> Remote Desktop Services -> Session Collection Properties.
Generally, device redirection increases how much network bandwidth RD Session Host connections use because data is exchanged between devices on the client computers and processes that are running in the server session. The extent of the increase is a function of the frequency of operations that are performed by the applications that are running on the server against the redirected devices.
Printer redirection and Plug and Play device redirection also increase CPU usage at sign-in. You can redirect printers in two ways:
Matching printer driver-based redirection when a driver for the printer must be installed on the server. Earlier releases of Windows Server used this method.
Easy Print printer driver redirection (introduced in Windows Server 2008) uses a common printer driver for all printers.
We recommend the Easy Print method because it causes less CPU usage for printer installation at connection time. The matching driver method causes increased CPU usage because it requires the spooler service to load different drivers. For bandwidth usage, the Easy Print method causes slightly increased network bandwidth usage, but not significant enough to offset the other performance, manageability, and reliability benefits.
Audio redirection, when used,causes a steady stream of network traffic. Audio redirection also enables users to run multimedia applications that typically have high CPU consumption.
By default, Remote Desktop Connection (RDC) automatically chooses the right experience setting based on the suitability of the network connection between the server and client computers. We recommend that the RDC configuration remain at “Detect connection quality automatically.”
For advanced users, RDC provides control over a range of settings that influence network bandwidth performance for the Remote Desktop Services connection. You can access the following settings through the RDC user interface on the Experience tab or as settings in the RDP File:
Settings that apply when connecting to any computer:
Disable wallpaper (RDP file setting: Disable wallpaper:i:0): Suppresses the display of desktop wallpaper on redirected connections. This setting can significantly reduce bandwidth usage if desktop wallpaper consists of an image or other content with significant costs for drawing.
Bitmap cache (RDP file setting: Bitmapcachepersistenable:i:1): When this setting is enabled, it creates a client-side cache of bitmaps that are rendered in the session. It provides a significant improvement on bandwidth usage, and it should always be enabled (unless there are other security considerations).
Menu and window animation (represented by two RDP file settings: Disable menu anims:i:1 and Disable cursor setting:i:1): When this setting is disabled, it reduces bandwidth by disabling animation on menus (such as fading) and cursors.
Font smoothing (RDPfile setting: Allow font smoothing:i:0): Controls ClearType font-rendering support. When connecting to computers running Windows 8 or Windows Server 2012, enabling or disabling this setting does not have a siginificant impact on bandwidth usage. However, for computers running versions earlier than Windows 7 and Windows 2008 R2, enabling this setting affects network bandwidth consumption significantly.
Settings that apply only when connecting to computers running Windows 7 and earlier operating system versions:
Desktop composition: This setting is supported only for a remote session to a computer running Windows 7 or Windows Server 2008 R2.
Visual styles (RDP file setting: disable themes:i:1): When this setting is disabled, it reduces bandwidth by simplifying theme drawings that use the classic theme.
By using the Experience tab within Remote Desktop Connection, you can choose your connection speed to influence network bandwidth performance. The following list indicates which options are chosen if you change the connection speed within the Experience tab of Remote Desktop Connection:
Detect connection quality automatically. When this setting is enabled, Remote Desktop Connection automatically chooses settings that will result in optimal user experience based on connection quality. (This configuration is recommended when connecting to computers running Windows 8 or Windows Server 2012) .
Modem (56 Kbps): When this setting is selected, it allows persistent bitmap caching.
Desktop composition; show contents of windows while dragging; menu and window animation; persistent bitmap caching; visual styles; desktop background
WAN (10 Mbps or higher with high latency)
Desktop composition; show contents of windows while dragging; menu and window animation; persistent bitmap caching; visual styles; desktop background (all)
LAN (10 Mbps or higher)
Desktop composition; show contents of windows while dragging; menu and window animation; persistent bitmap caching; themes; desktop background
When the RDP connection profile is saved, it creates an xxx.rdp file, where xxx is the friendly name chosen by the user (the default name is default.rdp). The speed optimization settings in the xxx.rdp configuration file are attributed as follows:
Modem = 1
LowSpeedBroadband = 2
Cellular with latency = 3
HighSpeedBroadband = 4
WAN with latency = 5
LAN = 6
Detect connection quality automatically = 7
Desktop size for remote sessions can be controlled through the RDC client user interface (on the Display tab under the Remote desktop size setting) or through the RDP file (desktopwidth:i:1152 and desktopheight:i:864). The larger the desktop size, the greater the memory and bandwidth consumption that is associated with that session. The current maximum desktop size that a server accepts is 4096 x 2048.