So I have a number of VMs running under quemu on Ubuntu 18.04. Everything works fine except accessing the VMs remotely: the slower the connection, the worse it gets. Running them on 4K monitor. Using remmina or virt-viewer, makes no difference.
- on local machine, everything is next to perfect, the only noticeable quality degradation is video full-screen.
- 1gbit LAN: noticeable delays rendering stuff, video becomes grainy even when in a small window
- 100 mbit LAN / internet: a full screen refresh can take a couple of seconds
- 20/4 mbit internet: when a full screen refresh is needed, I can observe the 64x64 squares being rendered across the screen and it takes multiple seconds. Scrolling an editor window is an operation that takes patience. Connection useless but for the most urgent tasks where patience is not an issue. Even X over ssh seems the better option here.
I compare this to Win10 RDP, which - over the same 20/4 connection - behaves as if I were at the machine in question, even for full-screen video.
The VMs are all setup thus:
- Display spice: Spice server with everything on default, no OpenGL
- Video VirtIO: model VirtIO, 3D acceleration: yes, heads:2, RAM 128MB
I tried video: QXL, but that one completely hogged my LAN, even at gbit, delivering little for the bandwidth taken (it was less performant than VirtIO).
So I've been searching for a solution to this problem finding little of import. But I did stumble on some commits into the spice master (quite a while ago). As far as I could see, the patch was merged, so this should be available, but video support is currently clearly still MJPEG for me.
So how can I enable this gstreamer support giving me a more advanced codec, like VP8 or even H264? Or am I doing something wrong and that's what's giving me pain?
This is an old question but there's a meaningful speed increase if you setup your SPICE server to listen on all interfaces and connect that way instead of Virt-Viewer. Virt-Viewer is tunneling over SSH which adds a lot of latency.
Once you have the VM setup to listen on all interfaces, you can connect remotely using: