We’ve added support for RemoteFX for Windows / Hyper-V Server 2012 R2 back in Kilo, but the highly anticipated Windows / Hyper-V Server 2016 comes with some new nifty features for which we’re excited about!
In case you are not familiar with this feature, it allows you to virtualize your GPUs and share them across virtual machine instances by adding virtual graphics devices. This leads to a richer RDP experience especially for VDI on OpenStack, as well as the benefit of having a GPU on your instances, enhancing GPU-intensive applications (CUDA, OpenCL, etc).
If you are curious, you can take a look at one of our little experiments. We’ve run a few GPU-intensive demos on identical guests with and without RemoteFX. The difference was very obvious between the two. You can see the recording here.
One of the most interesting feature RemoteFX brings in terms of improving the user experience, is device redirection. This allows you to connect your local devices (USBs, smart cards, VoIP devices, webcams, etc.) to RemoteFX enabled VMs through your RDP client. For a detailed list of devices you can redirect through your RDP session can be found here.
Some of the new features for RemoteFX in Windows / Hyper-V Server 2016 are:
- 4K resolution option
- 1GB dedicated VRAM (availble choices: 64MB, 128MB, 256MB, 512MB, 1GB) and up to another 1GB shared VRAM
- Support for Generation 2 VMs
- OpenGL and OpenCL API support
- H.264/AVC codec investment
- Improved performance
One important thing worth mentioning is the fact that RemoteFX allows you to overcommit your GPUs, the same way you can overcommit disk, memory, or vCPUs!
All of this sounds good, but how can you know if you can enable RemoteFX? All you need for this is a compatible GPU that passes the minimum requirements:
- it must support DirectX 11.0 or newer
- it must support WDDM 1.2 or newer,
- Hyper-V feature must installed.
If you pass these simple requirements, all you have to do to enable the feature is to run this PowerShell command:
1 |
Install-WindowsFeature RDS-Virtualization |
Hyper-V has to be configured to use RemoteFX. This can be done by opening the Hyper-V Manager, opening up Hyper-V Settings, and under Physical GPUs, check the Use this GPU with RemoteFX checkbox.
For more information about RemoteFX requirements and recommended RemoteFX-compatible GPUs, read this blog post.
In order to take advantage of all these features, the RDP client must be RemoteFX-enabled (Remote Desktop Connection 7.1 or newer).
Please do note that the instance’s guest OS must support RemoteFX as well. Incompatible guests will not be able to fully benefit from this feature. For example, Windows 10 Home guests are not compatible with RemoteFX, while Windows 10 Enterprise and Pro guests are. This fact can easily be checked by looking up the Video Graphics Adapter in the guest’s Device Manager.
After the RDS-Virtualization feature has been enabled, the nova-compute service running on the Hyper-V compute node will have to be configured as well. The following config option must be set to True in nova-compute‘s nova.conf file:
1 2 |
[hyperv] enable_remotefx = True |
In order to spawn an instance with RemoteFX enabled via OpenStack, all you have to do is provide the instance with a few flavor extra_specs:
- os:resolution: guest VM screen resolution size.
- os:monitors: guest VM number of monitors.
- os:vram: guest VM VRAM amount. Only available on Windows / Hyper-V Server 2016.
There are a few things to take into account:
- Only a subset of resolution sizes are available for RemoteFX. Any other given resolution size will be met with an error.
- The maximum number of monitors allowed is dependent on the requested resolution. Requesting a larger number of monitors than the maximum allowed per requested resolution size will be met with an error.
- Only the following VRAM amounts can be requested: 64, 128, 256, 512, 1024.
- On Windows / Hyper-V Server 2012 R2, RemoteFX can only be enabled on Generation 1 VMs.
The available resolution sizes and maximum number of monitors are:
For Windows / Hyper-V Server 2012 R2:
1 2 3 4 5 |
1024x768: 4 1280x1024: 4 1600x1200: 3 1920x1200: 2 2560x1600: 1 |
For Windows / Hyper-V Server 2016:
1 2 3 4 5 6 |
1024x768: 8 1280x1024: 8 1600x1200: 4 1920x1200: 4 2560x1600: 2 3840x2160: 1 |
Here is an example of a valid flavor for RemoteFX:
1 2 3 4 5 |
# nova flavor-create <name> <id> <ram> <disk> <vcpus> nova flavor-create m1.remotefx 999 4096 40 2 nova flavor-key m1.remotefx set os:resolution=1920x1200 nova flavor-key m1.remotefx set os:monitors=1 nova flavor-key m1.remotefx set os:vram=1024 |
We hope you enjoy this feature as much as we do! What would you use RemoteFX for?