I am trying to establish an RDP connection from a Linux device via FreeRDP, into the host computer running on Windows 10 with RTX A4000 GPU (driver version 474.44). So, in this setup the client is the Linux computer and the host is the Windows 10 computer. RDP is used to take a remote control of the Windows 10 computer, there is no virtualization of anything.
I have managed to successfully establish the RDP connection from the client, and made the connection smooth and very responsive via some group policy modifications on the host side. This includes things like enabling “Use hardware graphics adapters for all Remote Desktop Services Sessions” and enabling the use of RemoteFX and AVC444 hardware encoding.
The connection works well in most cases, but once something graphical is being rendered on the host computer via RDP, the frame rate drops. This does not happen when using the Windows 10 directly, without an RDP connection. I noticed that using a graphical application directly on the Windows 10 computer utilizes the “3D” resource seen on the Task Managers “Performance” tab. This does not happen during the RDP connection though. I also noticed that the workstation options seen on NVIDIA control panel are visible during using the Windows 10 computer physically, but the options are not seen during a RDP connection.
One of the possible reasons might be that OpenGL is not utilized over RDP connection, but I have no idea on how to enable such things, nor do I know is it even the actual problem. I am quite puzzled on how to move forward with this. I know that RTX A4000 supports OpenGL over RDP, but I am not seeing this currently.
How should I proceed, what would be the optimal settings to setup the RDP connection between the devices? I am looking for the best frame rate and the performance, and expect RTX A4000 can perform better than this. Using other connections than RDP is not viable for my situation.
So, what RDP is hopefully doing is encoding live video of the images rendered on the Windows machine and streaming them over the network to the FreeRDP client.
This can be bandwidth and CPU intensive; if you’re having problems with frame-rate, I’d check to see if you’ve got enough network bandwidth available?
However, it sounds like that you are already using GPU video hardware encoding features on the server; I expect that the reason you’re seeing more GPU hardware usage when using RDP — the GPU is encoding the video using dedicated H.264 encoding hardware.
I am currently seeing a similar CPU usage between using the Windows 10 machine directly, compared to using it via RDP. I would assume there is enough network bandwidth available, there is a 1 GigE connection. Furthermore, I have disabled bandwidth throttling via the Registry Editor.
There is a difference in the “3D” resource seen in the task manager’s performance tab, when inspecting the GPU - When using the Windows 10 directly, the resource usage is 10%, while using the Windows over the RDP, it is only 2%.
This has at least lead me to believe the problem lies mostly on server side. Could this still be an issue from client side, ie. the freeRDP not utilizing AVC444 properly? Would the bandwidth really be the issue here, I haven’t seen the Windows machine sending over 60 Mbps of data over RDP.
Ah, GPU utilisation is much lower when using RDP? I’d want to check to make sure the GPU hardware is actually being used for the RDP session; if it were using e.g. CPU OpenGL/DirectX/etc. rendering rather than dedicated hardware, that could explain a lot, especially if CPU usage is much higher on the server.
I have still not found a solution to my problem. But I am pretty sure it is not because RDP using too much bandwidth, as there is a lot of network left to use even with bandwidth throttling disabled and large MTU packets enabled.
I have noticed that the application I try to run are not using GPU properly, but some GPU is still being used through out the RDP session. Via Windows task manager, I noticed that the GPU Engine used for applications locally is “GPU 0 - 3D”. However, this changes to “GPU 0 - Copy” when running the same application over RDP. I have forced the applications to use GPU through Windows Graphics Settings, but that had no effect.
After trial and error with multiple Group Policy and Registry Editor settings, I have not found anything to fix this. What can I still do?