7

I have Windows XP SP3, and Windows 7 machines acting as a server in my LAN. (it's only 100mbit LAN there is no WAN).

The client is Linux with the latest FreeRDP 1.x just compiled.

Here is the problem. When you, say, open large MS Office document (Excel, Word whatever) you can scroll normally and it works very smooth!

But in the browsers, it's kinda jerky. So what I mean is that, it's not a connection issue.

Why this is happening? Btw, I tried to create a simple HTML file with a lot of text and it's still jerky. So it's not about "heavy" html pages with images.

Also I tried to use 800x600 resolution with no help. I am missing something.

I tried to use a lot of settings. I tried to use 16bit, 24 bit, enabling/disabling themes etc.

Any idea?

P.S: On a powerful machine with the same client (FreeRDP) it all works very smooth.

6
  • Sorry, for the question being not precise. I just think I am missing something little
    – Ha Ne
    Feb 9, 2012 at 15:12
  • Does it make a difference what browser you're using? I'm wondering if some hardware accelerated rendering might be an issue. Feb 9, 2012 at 18:09
  • @OliverSalzburg no, I checked on all browsers. Chrome, IE, Firefox - no difference. In Chrome, umm, probably a little bit faster.
    – Ha Ne
    Feb 10, 2012 at 5:09
  • 1
    I think the problem is with font smoothing try to enable/disable them. This could help. Like using xfreerdp with "-x 80" flag
    – bakytn
    Feb 12, 2012 at 14:39
  • 1
    Elaborate on what "powerful machine" in "P.S: On a powerful machine with the same client (FreeRDP) it all works very smooth." How is the machine different? If on this different machine you are not experiencing jerkiness then the solution is there.
    – LawrenceC
    Feb 12, 2012 at 20:21

5 Answers 5

8

Your problem is likely caused by the use of hardware acceleration in modern browsers. While this is usually faster on local systems it can become really slow when used on remote sessions, as there are no high level drawing routines, that could be captured by the server component of the remote software. So the remote software must fall back to sending bitmaps instead of GDI drawing commands.

Disable hardware acceleration in your browsers and you should be fine.

  • In Firefox
    1. go to Options->Advanced->General
    2. untick Use hardware acceleration when available
  • In Internet Explorer
    1. go to Internet Options->Advanced
    2. tick Use software rendering instead of GPU rendering
4

What I used for my Windows 7 Professional and Ultimate hosts (I used Windows 7 as an RDP client, but they should work):

Changing the compression algorithm

Type in the search bar at the start menu: gpedit.msc
Computer Configuration > Administrative Templates > Windows Components > Remote Desktop Services > Remote Desktop Session Host > Remote Session Environment

Source

Disabling the TCP auto-tuning (for Windows Vista+ host)

  1. Open up cmd.exe as administrator.
  2. Type in: netsh interface tcp set global autotuning=disabled
  3. To check if it worked: netsh interface tcp show global

To re-enable it: netsh interface tcp set global autotuning=normal

Source

3
  • Also.. if you wouldn't succeed: You may want to try TeamViewer with DirectIn (you can find that in the advanced options of the server) OR UltraVNC with it's MirrorDriver. Both works very well. UltraVNC is "more free" though. But a bit of a hassle to set it up. :)
    – Apache
    Feb 12, 2012 at 10:25
  • Thanks, but it didn't work.
    – Ha Ne
    Feb 12, 2012 at 11:05
  • Sorry then. :) Hope you will get it working.
    – Apache
    Feb 12, 2012 at 13:59
3

I believe the reason browsers are different from eg MS Office or applications using native widgets is that the toolkit sends higher-level events over RDP. For example, if you scroll, the toolkit sends a scrolling event telling the client to move one rectangle, and only sends the new content that the client does not have.

Browsers on the other hand do their rendering to a bitmap in order to get precise control over the output, so every time there is any update the entire rectangle needs to be re-sent. It is compressed, so non-image-heavy pages will be better, but it's still far less efficient.

You can see other evidence of this by looking at the fonts: if you have anti-aliasing enabled on your server, but disabled in your RDP client options, any application which still shows anti-aliased text is likely to have this problem since that implies it's doing its own rendering.

I only have a reference for this WRT Chrome: http://code.google.com/p/chromium/issues/detail?id=805#c1, but I believe it to be true of others; maybe somebody else can confirm/deny?

(Notably, Opera appears to honour the RDP client's anti-aliasing option and does indeed seem to be faster over RDP in my completely unscientific testing, so perhaps is not doing its own rendering to a backing bitmap. On the other hand it's still a lot slower than scrolling in Thunderbird, for example, so I'm not sure there.)

3
+100

As a first step, you should download and install the latest drivers for the Network Interface cards from the manufacturer's site on both sides of the connection.

Yours is a Linux client, and apparently there are performance problems with the FreeRDP client. You could always try the old and true rdesktop to see if it can do better.

One thread advises to use instead the Remmina Project (which includes FreeRDP). Please read the thread for more details.

You could also switch to one of the VNC variants, although this may take some tuning. See thread1 and thread2 for advice on speeding it up.

TeamViewer is another excellent possibility.

For a Windows client, the article Top RDP Enhancement Tweak – MinSendInterval suggests in the registry key HKEY_CURRENT_USER\SOFTWARE\Microsoft\Terminal Server Client, to create a new DWORD called, Min Send Interval (with spaces) and set its value to 10.

4
  • my client is FreeRDP do you think that I could use this setting from the server side somehow?
    – Ha Ne
    Feb 12, 2012 at 18:10
  • @HaNe I don't think so, as client "decides" how often it sends it's mouse events. So, your option is to either hack the FreeRDP code or ask developers to add that option.
    – bakytn
    Feb 12, 2012 at 18:23
  • Sorry, my answer was oriented for a Windows client. I have now added more information for Linux.
    – harrymc
    Feb 12, 2012 at 19:31
  • @HaNe: Thanks for the bounty. It would help others if you indicated which solution worked for you, and also accepted my answer.
    – harrymc
    Feb 16, 2012 at 8:45
2

There is a good Technet article which discusses increasing performance in RDP for graphical intensive applications.

NOTE: The technet article stresses testing this before rolling these changes out.

The following registry changes were recommended for optimal performance:

[HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client]
"Min Send Interval"=dword:00000001
"Keep Alive Interval"=dword:00000001
"BitmapCacheSize"=dword:0000ffff
"Order Draw Threshold"=dword:00000001 

Along with the above registry changes, my testing has resulted in the best performance using specific RDP configurable options:

  1. Font smoothing
  2. Desktop Composition
  3. Persistent bitmap caching

Other experience options turned off.

Testing was performed between two Windows 10 desktops. The settings where only applied to the computer I was RDPing from.

1
  • These registry entries worked for me on Win10. Much smoother animations now.
    – adigostin
    Aug 25, 2020 at 7:55

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .