[Spice-devel] Stuttering video playback on LAN

Felix Leimbach felix.leimbach at gmail.com
Sat May 2 07:39:52 UTC 2020


Hi,

I experience stuttering video playback in remote-viewer despite connecting via GBit/s LAN, using fast hardware and the QXL driver.
Up until a video size of roughly 800x600 the playback is smooth. But on anything bigger, like my native resolution of 2540x1440, video playback is stuttering annoyingly.
After lots of unsuccessful tinkering with spice parameters and qxl parameters I'm asking you guys for help.

Client:
Windows 10 1909
Remote Viewer 8.0-256
Quadcore i7-7820HQ 2.9GHz
16GB DDR4 RAM

Host of the VM:
Gentoo Linux
Kernel 4.14.172
Qemu 4.2.0
Quadcore i7-7700K 4.2GHz
64GB DDR4 RAM
Server is headless, has no dedicated graphics card, only the Intel HD 630 from the CPU

Guest VM:
Debian Bullseye
I don't think it's guest related, because the same problem happens with a Windows 10 Guest with latest QXL drivers and spice-tools installed.

Network performance client<=>host:
Ping 0.2ms
Throughput benchmarked at 960MBit/s

Qemu invocation on host:
#qemu-system-x86_64
-spice port=5906,addr=10.42.2.250,password=changed
-vga none -device qxl-vga,ram_size_mb=128,vgamem_mb=32,vram_size_mb=128,vram64_size_mb=256,max_outputs=1
-M q35 -smp 2 -cpu host --enable-kvm
-drive file=vmfllin.raw,if=virtio,format=raw,index=0,cache=none,aio=native -m 24576
-net nic,model=virtio,macaddr=52:54:00:74:01:06 -net tap,ifname=vmfllin,script=no,downscript=no -k de
-monitor tcp:127.0.0.1:5956,server,nowait
-device virtio-serial,id=virtio-serial1
-chardev spicevmc,id=vdagent,debug=0,name=vdagent
-device virtserialport,bus=virtio-serial1.0,chardev=vdagent,name=com.redhat.spice.0
-rtc base=utc,clock=host -daemonize --device virtio-balloon -boot c -nodefaults -soundhw hda

Spice parameters I tried:
-spice streaming-video=all,image-compression=off,jpeg-wan-compression=never,zlib-glz-wan-compression=never,playback-compression=off
-spice streaming-video=off,image-compression=off,jpeg-wan-compression=never,zlib-glz-wan-compression=never,playback-compression=off

Guest kernel:
Linux guest 5.4.0-4-amd64 #1 SMP Debian 5.4.19-1 (2020-02-13) x86_64 GNU/Linux
guest kernel: qxl 0000:00:03.0: remove_conflicting_pci_framebuffers: bar 0: 0xe8000000 -> 0xefffffff
guest kernel: qxl 0000:00:03.0: remove_conflicting_pci_framebuffers: bar 1: 0xf0000000 -> 0xf7ffffff
guest kernel: qxl 0000:00:03.0: remove_conflicting_pci_framebuffers: bar 2: 0xf8054000 -> 0xf8055fff
guest kernel: qxl 0000:00:03.0: remove_conflicting_pci_framebuffers: bar 4: 0xd0000000 -> 0xdfffffff
guest kernel: qxl 0000:00:03.0: vgaarb: deactivate vga console
guest kernel: [drm] Device Version 0.0
guest kernel: [drm] Compression level 0 log level 0
guest kernel: [drm] 24574 io pages at offset 0x2000000
guest kernel: [drm] 33554432 byte draw area at offset 0x0
guest kernel: [drm] RAM header offset: 0x7ffe000
guest kernel: [drm] qxl: 32M of VRAM memory size
guest kernel: [drm] qxl: 127M of IO pages memory ready (VRAM domain)
guest kernel: [drm] qxl: 256M of Surface memory size
guest kernel: [drm] slot 0 (main): base 0xe8000000, size 0x07ffe000, gpu_offset 0x20000000000
guest kernel: [drm] slot 1 (surfaces): base 0xd0000000, size 0x10000000, gpu_offset 0x30000000000
guest kernel: [drm] Initialized qxl 0.1.0 20120117 for 0000:00:03.0 on minor 0
guest kernel: fbcon: qxldrmfb (fb0) is primary device
guest kernel: qxl 0000:00:03.0: fb0: qxldrmfb frame buffer device

Guest X-Org:
X.Org X Server 1.20.8
[   205.516] (II) LoadModule: "qxl"
[   205.516] (II) Loading /usr/lib/xorg/modules/drivers/qxl_drv.so
[   205.518] (II) Module qxl: vendor="X.Org Foundation"
[   205.520] (II) qxl: Driver for QXL virtual graphics: QXL 1
[   205.525] (II) qxl(0): Creating default Display subsection in Screen section
[   205.525] (==) qxl(0): Depth 24, (--) framebuffer bpp 32
[   205.525] (==) qxl(0): RGB weight 888
[   205.525] (==) qxl(0): Default visual is TrueColor
[   205.525] (==) qxl(0): Using gamma correction (1.0, 1.0, 1.0)
[   205.525] (II) qxl(0): Deferred Frames: Disabled
[   205.525] (II) qxl(0): Offscreen Surfaces: Enabled
[   205.525] (II) qxl(0): Image Cache: Enabled
[   205.525] (II) qxl(0): Fallback Cache: Enabled
[   205.525] (==) qxl(0): DPI set to (96, 96)
# glxgears
9709 frames in 5.0 seconds = 1941.675 FPS
11719 frames in 5.0 seconds = 2343.780 FPS

Remote-Viewer console output on Windows client:
"C:\Program Files\VirtViewer v8.0-256\bin\remote-viewer.exe" --hotkeys=toggle-fullscreen=shift+f11 spice://10.42.2.250:5906
(remote-viewer.exe:16324): GSpice-CRITICAL **: 08:00:32.467: _usbdk_hider_update: assertion 'priv->usbdk_api != NULL' failed
(remote-viewer.exe:16324): GSpice-CRITICAL **: 08:00:32.526: file ../../src/usb-device-manager.c: line 1815 (probe_isochronous_endpoint): should not be reached
(remote-viewer.exe:16324): Gtk-WARNING **: 08:00:32.950: Theme directory 256x256 at 2/animations of theme hicolor has no size field
(remote-viewer.exe:16324): Spice-WARNING **: 08:00:50.804: ../../src/channel-display-gst.c:715:gstvideo_has_codec: No video decoders from GStreamer were found
(remote-viewer.exe:16324): GSpice-CRITICAL **: 08:00:50.912: _usbdk_hider_update: assertion 'priv->usbdk_api != NULL' failed
(remote-viewer.exe:16324): GSpice-WARNING **: 08:00:50.919: Warning no automount-inhibiting implementation available

Thanks,
Felix




More information about the Spice-devel mailing list