Table of Contents
Runing Xspice in a container is straightforward, here's the docker file used for this example:
FROM fedora:latest
RUN dnf install -y xorg-x11-server-Xspice
EXPOSE 5900/tcp
ENV DISPLAY=:1.0
CMD Xspice --port 5900 --disable-ticketing $DISPLAY > /dev/null 2>&1 & /usr/bin/bash
Steps:
podman run -p 5900:5900 -it quay.io/spice/xspice:latest
dnf install -y tuxmath && tuxmath
remote-viewer spice://localhost:5900
The idea is to use (any) host GPU to accelerate guest graphics (similar to other host processes).
Guest GPU is a paravirtual device (virtio-vga) that is used to pass graphics commands to be executed on the host GPU (via qemu and virgl-renderer)
Guest framebuffer information is then passed by qemu-kvm to spice-server (library) which sends it to spice client.
Local spice means that the spice client is running on the same machine on which the VM is running (the client machine is the host).
In the local spice case, unix-domain-socket is used and the guest framebuffer stays on the GPU.
For more information about configuration check out Spice User Manual
What is shown in the demo:
As part of the SPICE Adaptive Streaming project, we developed a toolbox for studying the performance of real-time video streaming. The toolbox consists in:
In the current step, we are working on a mathematical modelisation of the resource usage (CPU, GPU, etc.)
Repository: https://gitlab.com/kpouget_spice/streaming_stats Full version of the recording (35min): https://youtu.be/vdcFiyhFvUw
This is remote host-guest setup that is configured with spice-streaming-agent and Intel's GVTg technology.
The video demonstrates how the guest can utilizes its GPU in order to run graphics-intensive loads and to accelerate the encoding process of the video stream that is sent to the client.
For more information about configuration check out GVTg.
This video shows a proof of concept implementing watermarking in SPICE server.