VNC session very slow in 12.04 compared to older versions

I have a 12.04 X64 Desktop install on a machine where I previously had 10.10. Previously I've used both the built-in vino and tightvncserver to provide the VNC session. I connect to them using Chicken of the VNC on my Mac.

With the older version, VNC performance was pretty good. Now with 12.04, it is abysmal using vino. Updates are sluggish, menus flicker and vanish, lots of extra screen redraws, etc.

Any pointers on recovering some performance? Thanks.


Solution 1:

By default 12.04 takes advantage of hardware acceleration. The graphical interface is so on the graphics card instead of on the CPU. This should grant overall better performance and augmented visual effects on decently spec'd desktop/laptop computers.

All that comes to a cost though. Apart from the fact that complex visual effects require more bandwidth, Vino doesn't seem ready for hardware compositing (GPU acceleration) anyway.

If you have a very good connection to the computer (ie. local wired connection), you can try to disable what is called "xdamage". Open the terminal and issue the following command (as standard user, not root):

gsettings set org.gnome.Vino disable-xdamage true

This will force the server to re-send the whole screen at each refresh and not just the changed areas. It is extremely stressful for your network of course.

As an alternative to entering this command in a terminal window, you may use the dconf-editor which can be installed using the Ubuntu Software Center.

If you feel adventurous you may also try to install "CompizConfig Settings Manager" (package compizconfig-settings-manager) and carefully reduce the number of effects (especially those related to windows and menus placement). The fewer the better for VNC.

Otherwise you can try to disable compositing altogether and login into Unity 2d you can follow these instructions, but you are of course disabling 3d effects and HW acceleration.

Solution 2:

you also could compiz replace with the command: metacity --replace&

This gives much better results using vnc and is easy to use. You could use it while having a vnc session.