Windows System Resource Manager (WSRM) is an optional component that is available in Windows Server 2012. WSRM supports an “equal per session” built-in policy that keeps CPU usage equally distributed among all active sessions on the system. Although enabling WSRM adds some CPU usage overhead to the system, we recommend that you enable it because it helps limit the effect that high CPU usage in one session has on the other sessions on the system. This helps improve the user’s experience, and it also lets you run more users on the system because of a reduced need for a large cushion in CPU capacity to accommodate random CPU usage spikes.
Performance Tuning for Remote Desktop Virtualization Host
Remote Desktop Virtualization Host (RD Virtualization Host) is a role service that supports Virtual Desktop Infrastructure (VDI) scenarios and lets multiple concurrent users run Windows-based applications in virtual machines that are hosted on a server running Windows Server 2012 and Hyper-V.
Storage is the most likely performance bottleneck, and it is important to size your storage to properly handle the I/O load that is generated by virtual machine state changes. If a pilot or simulation is not feasible, a good guideline is to provision one disk spindle for four active virtual machines. Use disk configurations that have good write performance (such as RAID 1 0).
When appropriate, use SAN-based disk deduplication and caching to reduce the disk read load and to enable your storage solution to speed up performance by caching a significant portion of the image.
The server memory usage is driven by three main factors:
For a typical knowledge worker workload, guest virtual machines running Window 8 should be given 512 MB of memory as the baseline. However, dynamic Memory will likely increase the guest virtual machine’s memory to about 800 MB, depending on the workload.
Therefore, it is important to provide enough server memory to satisfy the memory that is required by the expected number of guest virtual machines, plus allow a sufficient amount of memory for the server.
When you plan server capacity for an RD Virtualization Host, the number of virtual machines per physical core will depend on the nature of the workload. As a starting point, it is reasonable to plan 12 virtual machines per physical core, and then run the appropriate scenarios to validate performance and density. Higher density may be achievable depending on the specifics of the workload.
We recommend enabling hyperthreading, but be sure to calculate the oversubscription ratio based on the number of physical cores and not the number of logical processors. This ensures the expected level of performance on a per CPU basis.
Note It is critical to use virtual machines that have Second Level Address Translation (SLAT) support. Most servers running Windows Server 2012 will have SLAT.
Microsoft RemoteFX for RD Virtualization Host delivers a rich graphics experience for Virtual Desktop Infrastructure (VDI) through host-side remoting, a render-capture-encode pipeline, a highly efficient GPU-based encode, throttling based on client activity, and a DirectX-enabled virtual GPU. RemoteFX for RD Virtualization Host upgrades the virtual GPU from DirectX9 to DirectX11. It also improves the user experience by supporting more monitors at higher resolutions.
The RemoteFX DirectX11 experience is available without a hardware GPU, through a software-emulated driver. Although this software GPU provides a good experience, the RemoteFX virtual graphics processing unit (VGPU) adds a hardware accelerated experience to virtual desktops.
To take advantage of the RemoteFX VGPU experience on a server running Windows Server 2012, you need a GPU driver (such as DirectX11.1 or WDDM 1.2) on the host server. For more information about GPU offerings to use with RemoteFX for RD Virtualization Host, please refer to your GPU provider.
If you use the RemoteFX VGPU in your VDI deployment, the deployment capacity will vary based on usage scenarios and hardware configuration. When you plan your deployment, consider the following:
For every virtual desktop that is enabled with a VGPU, RemoteFX uses system memory in the guest operating system and in the RemoteFX server. The hypervisor guarantees the availability of system memory for a guest operating system. On the server, each VGPU-enabled virtual desktop needs to advertise its system memory requirement to the hypervisor. When the VGPU-enabled virtual desktop is starting, the hypervisor reserves additional system memory in the RemoteFX server for the VGPU-enabled virtual desktop.
The memory requirement for RemoteFX server is dynamic because the amount of memory consumed on the RemoteFX server is dependent on the number of monitors that are associated with the VGPU-enabled virtual desktops and the maximum resolution for those monitors.
RemoteFX Server GPU Video Memory
Every VGPU-enabled virtual desktop uses the video memory in the GPU hardwareon the host server to render the desktop. In addition to rendering, the video memory is used by a codec to compress the rendered screen. The amount of memory needed is directly based on the amount of monitors that are provisioned to the virtual machine.
The video memory that is reserved varies based on the number of monitors and the system screen resolution. Some users may require a higher screen resolution for specific tasks. There is greater scalability with lower resolution settings if all other settings remain constant.
The hypervisor schedules the RemoteFX server and the VGPU-enabled virtual desktops on the CPU. Unlike the system memory, there isn’t information that is related to additional resources that RemoteFX needs to share with the hypervisor. The additional CPU overhead that RemoteFX brings into the VGPU-enabled virtual desktop is related to running the VGPU driver and a user-mode Remote Desktop Protocol stack.
In the RemoteFX server, the overhead is increased, because the system runs an additional process (rdvgm.exe) per VGPU-enabled virtual desktop. This process uses the graphics device driver to run commands on the GPU. The codec also uses the CPUs for compressing the screen data that needs to be sent back to the client.
More virtual processors mean a better user experience. We recommend allocating at least two virtual CPUs per VGPU-enabled virtual desktop. We also recommend using the x64 architecture for VGPU-enabled virtual desktops because the performance on x64 virtual machines is better compared to x86 virtual machines.
For every VGPU-enabled virtual desktop, there is a corresponding DirectX process running on the RemoteFX server. This process replays all the graphics commands that it receives from the RemoteFX virtual desktop onto the physical GPU. For the physical GPU, it is equivalent to simultaneously running multiple DirectX applications.
Typically, graphics devices and drivers are tuned to run a few applications on the desktop. RemoteFX stretches the GPUs to be used in a unique manner. To measure how the GPU is performing on a RemoteFX server, performance counters have been added to measure the GPU response to RemoteFX requests.
Usually when a GPU resource is low on resources, Read and Write operations to the GPU take a long time to complete. By using performance counters, administrators can take preventative action, eliminating the possibility of any downtime for their end users.
The following performance counters are available on the RemoteFX server to measure the virtual GPU performance: