[Spice-devel] "qxl: add optinal 64bit vram bar" patch significantly slows down Spice

Hans de Goede hdegoede at redhat.com
Mon Apr 16 05:02:14 PDT 2012


Hi,

On 04/16/2012 11:59 AM, Avi Kivity wrote:
> On 04/16/2012 12:39 PM, Gerd Hoffmann wrote:
>> On 04/06/12 15:54, Hans de Goede wrote:
>>> Hi Gerd,
>>>
>>> While cherry picking some spice patches into my own qemu-kvm-1.0 branch,
>>> so that we can add them to Fedora-17 I noticed a significant slowdown
>>> after I was done cherry picking. Investigation has shown your
>>> "qxl: add optinal 64bit vram bar" patch to be the culprit.
>>>
>>> I noticed this using an old Fedora-14 32 bits vm with an xorg-x11-drv-qxl
>>> patched to use the async methods.
>>>
>>> If I scroll through the gnome applications menu with the mouse with
>>> plain qemu-kvm-1.0 all is fine, but once I add your:
>>> "qxl: add optinal 64bit vram bar" the updating of the display
>>> becomes noticably slower, the blue bar highlighting the selected
>>> menu entry becomes lagged compared to the mouse cursor.
>>
>> Avi?  This looks like a memory aliasing issue.
>>
>> Old state:
>>    vram bar, backed by memory
>>
>> New state:
>>    vram bar, 64bit, backed by memory, might not be mapped.
>>    vram bar, 32bit, alias for the first part of the 64bit bar.
>>
>> Full patch:
>>
>> http://git.qemu.org/?p=qemu.git;a=commitdiff;h=6f2b175a090f367c3aab2226c4741b439671307a
>>
>> Any hints?
>
> The patch looks correct.  Hans, please post your git tree and a command
> line.

I've seen this with this git tree + branch:
http://cgit.freedesktop.org/~jwrdegoede/qemu/log/?h=qemu-kvm-1.0-usbredir

With the patch in question back-ported to it (attached), and this cmdline:
exec sudo gdb -ex "handle SIGUSR2 nostop noprint" -ex run --args \
  /usr/bin/qemu-system-x86_64 -enable-kvm \
  -m 1024 -name F14-x86_64 -boot menu=on \
  -drive file=/home/virt-images/f14-i386.qcow2.img,media=disk,index=0 \
  -net nic,macaddr=52:54:00:7a:b4:7e,vlan=0,model=virtio,name=virtio.0 -net tap,
  -vga qxl -spice port=5932,disable-ticketing,streaming-video=off,image-compress
  -device virtio-serial -chardev spicevmc,id=vdagent,debug=1,name=vdagent -devic
  -readconfig /etc/qemu/ich9-ehci-uhci.cfg \
  -chardev spicevmc,name=usbredir,id=usbredirchardev1,debug=0 \
  -device usb-redir,chardev=usbredirchardev1,id=usbredirdev1,debug=3 \
  -chardev spicevmc,name=usbredir,id=usbredirchardev2,debug=0 \
  -device usb-redir,chardev=usbredirchardev2,id=usbredirdev2,debug=3 \
  -chardev spicevmc,name=usbredir,id=usbredirchardev3,debug=0 \
  -device usb-redir,chardev=usbredirchardev3,id=usbredirdev3,debug=3 \
  -monitor stdio -device intel-hda -device hda-duplex

Note I've not actually run any benchmarks, running the vm with versus
without the patch just feels (and looks, in the form of slower updating
display) significantly slower.

Could it be that the patch somehow causes seabios and/or Xorg to
see the region as different wrt being cachable / uncachable or
some such?

Regards,

Hans


More information about the Spice-devel mailing list