[Spice-devel] SPICE Fedora 15 guest X running at 100%

John A. Sullivan III jsullivan at opensourcedevel.com
Thu Jun 16 14:55:41 PDT 2011


On Thu, 2011-06-16 at 11:26 -0400, Marian Krcmarik wrote:
> 
> ----- Original Message -----
> > From: "John A. Sullivan III" <jsullivan at opensourcedevel.com>
> > To: "Alon Levy" <alevy at redhat.com>
> > Cc: spice-devel at lists.freedesktop.org
> > Sent: Wednesday, June 15, 2011 11:54:17 PM
> > Subject: Re: [Spice-devel] SPICE Fedora 15 guest X running at 100%
> > On Thu, 2011-06-16 at 01:41 +0200, Alon Levy wrote:
> > > On Wed, Jun 15, 2011 at 04:58:21PM -0400, John A. Sullivan III
> > > wrote:
> > > > On Wed, 2011-06-15 at 16:08 -0400, John A. Sullivan III wrote:
> > > <snip>>
> > > > I checked my Xorg.0.log file and noticed that I was getting
> > > > persistent
> > > > messages about cache failures and out of memory. It looks like the
> > > > vram
> > > > parameter was set to something like 9216.
> > > >
> > > > So I changed it to 256000. To my surprise, the SPICE client
> > > > connected
> > > > but I had no mouse and no keyboard. I stopped the VM and redefined
> > > > it
> > > > with 128000 and I now had keyboard and video but still had the
> > > > same
> > > > excessive X utilization - John
> > >
> > > hmm.. yes, this is a well known problem - I thought libvirt fixed
> > > it. What
> > > version of libvirt are you using? The default memory is 64MB btw.
> > 
> > 0.8.8-4.fc15 Thanks - John
> 
> Try newer libvirt. Changing attribute vram in element model (i.e. <model type='qxl' vram='65536' heads='1'/>) seems to have no impact on qemu instance when I use 0.8.8-4 libvirt. When I use libvirt-0.9.2-1 I can see that option -global qxl-vga.vram_size is passed to qemu.
<snip>
It has been an interesting afternoon working on this one.  We dumped the
libvirt configuration with domxml-to-native.  The original configuration
translates into:

LC_ALL=C PATH=/sbin:/usr/sbin:/bin:/usr/bin
QEMU_AUDIO_DRV=spice /usr/bin/qemu-kvm -S -M pc-0.14 -enable-kvm -m 2048
-smp 2,sockets=2,cores=1,threads=1 -name lindesk01.pacifera.com -uuid
6beff77b-efef-41ab-5e3f-0206c94a3e84 -nodefconfig -nodefaults -chardev
socket,id=charmonitor,path=/var/lib/libvirt/qemu/lindesk01.pacifera.com.monitor,server,nowait -mon chardev=charmonitor,id=monitor,mode=readline -rtc base=utc -boot c -device virtio-serial-pci,id=virtio-serial0,bus=pci.0,addr=0x5 -drive file=/dev/mapper/ilindesk01,if=none,id=drive-virtio-disk0,boot=on,format=raw -device virtio-blk-pci,bus=pci.0,addr=0x6,drive=drive-virtio-disk0,id=virtio-disk0 -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,script=/etc/qemu/br0/qemu-ifup,id=hostnet0 -device rtl8139,netdev=hostnet0,id=net0,mac=00:00:00:00:00:00 -chardev pty,id=charserial0 -device isa-serial,chardev=charserial0,id=serial0 -chardev spicevmc,id=charchannel0,name=vdagent -device virtserialport,bus=virtio-serial0.0,nr=1,chardev=charchannel0,id=channel0,name=com.redhat.spice.0 -usb -device usb-tablet,id=input0 -spice port=5700,addr=0.0.0.0,disable-ticketing -vga qxl -device intel-hda,id=sound0,bus=pci.0,addr=0x4 -device hda-duplex,id=sound0-codec0,bus=sound0.0,cad=0 -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x7

I then edited it by removing the -S, a couple of the early parameters
like uuid and nodefconfig and added -global qxl-vga.vram_size=131072.
The new command line was:

QEMU_AUDIO_DRV=spice /usr/bin/qemu-kvm -M pc-0.14 -enable-kvm -m 2048
-smp 2,sockets=2,cores=1,threads=1 -name lindesk01.pacifera.com -device
virtio-serial-pci,id=virtio-serial0,bus=pci.0,addr=0x5 -drive
file=/dev/mapper/ilindesk01,if=none,id=drive-virtio-disk0,boot=on,format=raw -device virtio-blk-pci,bus=pci.0,addr=0x6,drive=drive-virtio-disk0,id=virtio-disk0 -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,script=/etc/qemu/br0/qemu-ifup,id=hostnet0 -device rtl8139,netdev=hostnet0,id=net0,mac=00:00:00:00:00:00 -chardev pty,id=charserial0 -device isa-serial,chardev=charserial0,id=serial0 -chardev spicevmc,id=charchannel0,name=vdagent -device virtserialport,bus=virtio-serial0.0,nr=1,chardev=charchannel0,id=channel0,name=com.redhat.spice.0 -usb -device usb-tablet,id=input0 -spice port=5700,addr=0.0.0.0,disable-ticketing -vga qxl -global qxl-vga.vram_size=131072 -device intel-hda,id=sound0,bus=pci.0,addr=0x4 -device hda-duplex,id=sound0-codec0,bus=sound0.0,cad=0 -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x7

The result was much better.  Still slower than Windows it seemed and X
still ran hot but not impossibly hot.

I then wanted to see if the only difference was adding the vga.ram
parameter so I added it to the old command line (and stripped the -S).
Performance seemed somewhere in between.  X was running a little hotter
but it was still usable though slow.  I then wondered if it was just
KDE4 bloat, e.g., when I click on Klipper, I get a corrupted block of
screen until it sorts out a second or two later.  So I exited KDE4 and
started twm.  To my great surprise, X shot to 100%.

I then rebooted into the earlier modified, better behaving command line
and started twm.  Lo and behold, 100% CPU on X again.

I'm not sure what that means but I thought I'd pass it along.  I'll let
you know what else I find.  Thanks - John



More information about the Spice-devel mailing list