Bug 854528 - spice: fix vga mode performance
Summary: spice: fix vga mode performance
Alias: None
Product: Red Hat Enterprise Linux 6
Classification: Red Hat
Component: qemu-kvm
Version: 6.3
Hardware: Unspecified
OS: Unspecified
Target Milestone: rc
: ---
Assignee: Gerd Hoffmann
QA Contact: Virtualization Bugs
Depends On:
TreeView+ depends on / blocked
Reported: 2012-09-05 09:30 UTC by Gerd Hoffmann
Modified: 2013-02-21 07:39 UTC (History)
10 users (show)

Fixed In Version: qemu-kvm-
Doc Type: Bug Fix
Doc Text:
Cause: spice used page dirty tracking only to figure which screen areas need updating (with qxl in vga mode). Consequence: update areas are basically tracked with scanline granularity, resulting in bulky screen updates being sent even in case only a small portion of the screen has been updated. Fix: Keep a copy of the most recent screen content send to the spice client, use it to figure which screen areas need updating instead if just sending the whole scanline. Result: Required bandwith goes down, interactive performance goes up. Especially noticable with win8 guests which have no qxl drivers (yet) and thus run in vga mode all the time.
Clone Of:
Last Closed: 2013-02-21 07:39:38 UTC
Target Upstream Version:

Attachments (Terms of Use)

System ID Private Priority Status Summary Last Updated
Red Hat Product Errata RHBA-2013:0527 0 normal SHIPPED_LIVE qemu-kvm bug fix and enhancement update 2013-02-20 21:51:08 UTC

Description Gerd Hoffmann 2012-09-05 09:30:35 UTC
Description of problem:
The performance of spice is pretty bad in vga mode (i.e. without qxl driver loaded in the guest).  With no qxl driver being available for win8 for the time being, thus vga mode being used for everyday work and not only for install+boot we should better fix that ...

Comment 6 mazhang 2012-09-10 05:46:32 UTC
Hi Gerd,

Try to reproduce this bug in:

1 boot win8 guest
2 enter "Startup Settings" screen and click "Restart"
3 Windows 8 then reveals its brand new Startup Settings screen. Press F3 key to Enable low-resolution video.

the mouse pointer on the desktop move smooth

plus: Could not fould win8 in winPcap supported platform.

Comment 7 Gerd Hoffmann 2012-09-10 07:24:42 UTC
> Results:
> the mouse pointer on the desktop move smooth

Maybe it isn't noticable when running qemu-kvm and spice client on the same machine.  I have a ethernet connection (100 mbit) between them where it is noticable.

Comment 8 mazhang 2012-09-11 09:22:08 UTC
(In reply to comment #7)
> > Results:
> > the mouse pointer on the desktop move smooth
> Maybe it isn't noticable when running qemu-kvm and spice client on the same
> machine.  I have a ethernet connection (100 mbit) between them where it is
> noticable.

yes, it was affected with network environment, It isn't noticable on my host, but reproduced on another mechine.

btw, How do you run wireshark on win8 platform, I try run it, but install winPcap failed. could you give me a detail steps? thanks.

Comment 9 Gerd Hoffmann 2012-09-11 11:16:13 UTC
I run wireshark on the linux machine where the spice client runs on.

 (1) start capture on the ethernet interface,
 (2) go to menu -> statistics -> io graph.
 (3) filter by spice port @ host, I'm using this for my setup:
     ip.host == "xeni" && tcp.port == 5906

Gives a nice real-time graph of the network load created by spice.
Then start using the win8 guest & watch the graph.

Comment 11 Gerd Hoffmann 2012-09-21 08:27:43 UTC
patches posted.

Comment 14 Qunfang Zhang 2012-10-15 12:46:47 UTC
Reproduced this issue with the same steps in Comment 10 on qemu-kvm-

1. Boot a guest with spice+vga on host A.

 /usr/libexec/qemu-kvm -M rhel6.4.0 -cpu Conroe -m 2048 -smp 2,sockets=2,cores=1,threads=1 -enable-kvm -name win7 -uuid feebc8fd-f8b0-4e75-abc3-e63fcdb67170 -smbios type=1,manufacturer='Red Hat',product='RHEV Hypervisor',version=el6,serial=koTUXQrb,uuid=feebc8fd-f8b0-4e75-abc3-e63fcdb67170 -k en-us -rtc base=utc,clock=host,driftfix=slew -no-kvm-pit-reinjection -device piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1.0x2 -device usb-tablet,id=input0 -drive file=/home/win7-64-virtio.qcow2,format=qcow2,if=none,cache=none,werror=stop,rerror=stop,id=test -device ide-drive,bus=ide.0,unit=1,drive=test,id=ide0 -drive if=none,media=cdrom,id=drive-ide0-1-0,readonly=on,format=raw -device ide-drive,bus=ide.1,unit=0,drive=drive-ide0-1-0,id=ide0-1-0 -netdev tap,id=hostnet0,vhost=on -device virtio-net-pci,netdev=hostnet0,id=net0,mac=00:23:AE:7A:6E:10,bus=pci.0,addr=0x5  -monitor stdio -qmp tcp:0:6666,server,nowait -boot c -bios /usr/share/seabios/bios-pm.bin -chardev socket,path=/tmp/isa-serial,server,nowait,id=isa1 -device isa-serial,chardev=isa1,id=isa-serial1 -drive if=none,id=drive-fdc0-0-0,readonly=on,format=raw -global isa-fdc.driveA=drive-fdc0-0-0 -spice port=5930,disable-ticketing -vga std

2. Open guest desktop on host B
#spicec -h $host_A_IP -p 5930

3.install and run wireshark on host B, start capture on the ethernet interface
#yum install wireshark && wireshark-gnome

4.go to menu -> statistics -> io graph.
filter by spice port @ host
     ip.host == "ip.host_A" && tcp.port == 5930

5.move the mouse pointer on desktop

1. Mouse pointer on the desktop moves are snappier.
2. Produce spikes in the graph by moving around the mouse pointer
and bandwidth is nearly 5000.

Verified on qemu-kvm- with the same steps.


1. Mouse pointer moves are smooth.
2. Wireshark graph shows the bandwidth lower than 1000,curve were running smoothly.

So, this bug is verified pass.

Comment 17 errata-xmlrpc 2013-02-21 07:39:38 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.


Note You need to log in before you can comment on or make changes to this bug.