[Spice-devel] Delay in Gimp when using qxl driver

Alon Levy alevy at redhat.com
Sun Jan 22 13:03:47 PST 2012


On Sun, Jan 22, 2012 at 06:33:59PM +0100, Dominique Rodrigues wrote:
> 
> Le 22/01/2012 18:28, Alon Levy a écrit :
> >On Sun, Jan 22, 2012 at 05:15:42PM +0200, Alon Levy wrote:
> >>On Sun, Jan 22, 2012 at 03:53:40PM +0100, Dominique Rodrigues wrote:
> >>>Le 22/01/2012 16:00, Alon Levy a écrit :
> >>>>On Fri, Jan 20, 2012 at 02:04:47PM -0500, Yaniv Kaul wrote:
> >>>>>----- Original Message -----
> >>>>>>On Wed, Jan 18, 2012 at 11:59:45AM +0100, Dominique Rodrigues wrote:
> >>>>>>>Le 18/01/2012 11:48, Alon Levy a écrit :
> >>>>>>>>On Wed, Jan 18, 2012 at 11:39:13AM +0100, Dominique Rodrigues
> >>>>>>>>wrote:
> >>>>>>>>>Le 18/01/2012 11:32, Alon Levy a écrit :
> >>>>>>>>>>On Wed, Jan 18, 2012 at 11:27:14AM +0100, Dominique Rodrigues
> >>>>>>>>>>wrote:
> >>>>>>>>>>>Le 18/01/2012 11:18, Alon Levy a écrit :
> >>>>>>>>>>>>On Wed, Jan 18, 2012 at 09:54:49AM +0100, Dominique Rodrigues
> >>>>>>>>>>>>wrote:
> >>>>>>>>>>>>>Le 18/01/2012 09:44, Alon Levy a écrit :
> >>>>>>>>>>>>>>On Wed, Jan 18, 2012 at 08:06:40AM +0100, Dominique
> >>>>>>>>>>>>>>Rodrigues wrote:
> >>>>>>>>>>>>>>>Hi,
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>Since I use qxl driver in virtual desktop powered by
> >>>>>>>>>>>>>>>qemu-kvm, I
> >>>>>>>>>>>>>>>found a strange problem with Gimp.
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>After launching Gimp, open a new windows, and then try to
> >>>>>>>>>>>>>>>draw
> >>>>>>>>>>>>>>>something. It appears that the drawing is very slow and
> >>>>>>>>>>>>>>>does not
> >>>>>>>>>>>>>>>follow the mouse at all.
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>It is the same if I use spicy, spicec or vnc to connect to
> >>>>>>>>>>>>>>>my
> >>>>>>>>>>>>>>>virtual desktop.
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>This problem does not appear with cirrus or vmware graphic
> >>>>>>>>>>>>>>>drivers.
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>I found that on any Linux distribution (CentOS, RHEL,
> >>>>>>>>>>>>>>>Scientific
> >>>>>>>>>>>>>>>Linux, Debian, Ubuntu).
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>I currently use :
> >>>>>>>>>>>>>>>- qemu-kvm 1.0 compiled with spice support
> >>>>>>>>>>>>>>>- spice-protocol 0.10.1
> >>>>>>>>>>>>>>>- spice 0.10
> >>>>>>>>>>>>>>>- spice-gtk 0.7
> >>>>>>>>>>>>>>>- xorg-qxl driver 0.16
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>Is there any explanation for that ?
> >>>>>>>>>>>>>>I would assume it is qxl driver cpu bound on something,
> >>>>>>>>>>>>>>probably busy
> >>>>>>>>>>>>>>waiting on the command ring. Can you run perf top on the
> >>>>>>>>>>>>>>guest?
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>Indeed, during the drawing in Gimp, Xorg takes between 55%
> >>>>>>>>>>>>>and 66% of CPU.
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>After, Xorg goes down to 0.3%.
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>(Test done on CentOS 6.2 guest, with 1280 Mb vRAM)
> >>>>>>>>>>>>ok, can you drill down - you should be able to install the
> >>>>>>>>>>>>debug symbols
> >>>>>>>>>>>>for the qxl driver (xorg-x11-drv-qxl package) and see the
> >>>>>>>>>>>>specific
> >>>>>>>>>>>>functions that are taking the most time.
> >>>>>>>>>>>>
> >>>>>>>>>>>I installed qxl driver from freedesktop.org :
> >>>>>>>>>>>
> >>>>>>>>>>># wget -c
> >>>>>>>>>>>http://xorg.freedesktop.org/releases/individual/driver/xf86-video-qxl-0.0.16.tar.bz2
> >>>>>>>>>>># tar xvfj xf86-video-qxl-0.0.16.tar.bz2
> >>>>>>>>>>># cd xf86-video-qxl-0.0.16
> >>>>>>>>>>># ./configure --libdir=/usr/lib64 --prefix=/usr CFLAGS='-O3'
> >>>>>>>>>>># make
> >>>>>>>>>>># make install
> >>>>>>>>>>>
> >>>>>>>>>>>Do you mean that I should use CFLAGS with "-g" ?
> >>>>>>>>>>I think that's it, yes.
> >>>>>>>>>>
> >>>>>>>>>Ok. So how do you profile debug messages afterwhile ?
> >>>>>>>>>
> >>>>>>>>>If I "tail -f /var/log/Xorg.0.log", the only message I got is :
> >>>>>>>>>
> >>>>>>>>>  Bad bpp: 1 (1)
> >>>>>>>>>
> >>>>>>>>>Other messages look standard.
> >>>>>>>>>
> >>>>>>>>Right, that's not interesting. What I meant was:
> >>>>>>>>
> >>>>>>>># yum install perf
> >>>>>>>># perf top
> >>>>>>>>copy paste the top entries.
> >>>>>>>>
> >>>>>>>Ok, that's it (from a screenshot of the VM):
> >>>>>>Try ssh'ing to the vm, you can then use copy-paste.
> >>>>>>
> >>>>>>>samples    pcnt    function        DSO
> >>>>>>>
> >>>>>>>3796.00        60.4%    hashlittle
> >>>>>>This sucks, unfortunately I don't have any quick fix for it. It's the
> >>>>>>hash computation done on each image. Needless to say it needs to be
> >>>>>>optimized - either made more efficient or reduce the number of calls.
> >>>>>>
> >>>>>>Soren, FYI.
> >>>>>You could move to murmur2, like Windows' QXL driver (https://bugs.freedesktop.org/show_bug.cgi?id=37465) or murmur3 or other faster ones (https://bugs.freedesktop.org/show_bug.cgi?id=35775).
> >>>>>At least it's not hashed twice now(https://bugs.freedesktop.org/show_bug.cgi?id=37977 - worth updating bug status?!), but I'm not sure it should be hashed at all, if it's not cached.
> >>>>>Y.
> >>>>Looks like this could be x6 performance gain when compared to hashlittle
> >>>>(lookup3 at http://code.google.com/p/smhasher/). So it would still be
> >>>>better not to run it at all but it might stop being the bottleneck. I'll
> >>>>try to do a patch.
> >>>>
> >>>Sounds promising.
> >>Actually only 2x since we use a 32bit hash anyway (x86/x64). Still worth
> >>a patch.
> >>
> >Since the hash is not in use right now at all, but commented out, you
> >could get an even more remarkable performance improvement by disabling
> >it. If you can check the branch at
> >
> >  git://people.freedesktop.org/~alon/xf86-video-qxl murmur3
> >
> >You can tell us how much it actually improves for you. I didn't disable
> >the hashing, just replaced lookup3 with MurmurHash3 from
> >http://code.google.com/p/smhasher/wiki/MurmurHash3.
> >
> 
> I guess I missed something, because I don't manage to launch the
> X-server now in my CentOS guest.
> 
> This what I have done :
> 
> # git clone git://people.freedesktop.org/~alon/xf86-video-qxl
> xf86-video-qxl-alon-git
> # cd xf86-video-qxl-alon-git
> # git checkout murmur3
> # git branch
> * murmur3
>   surface-fixes
> # export
> PKG_CONFIG_PATH=/usr/local//share/pkgconfig/:/usr/local/lib/pkgconfig
> # ./autogen.sh --libdir=/usr/lib64 --prefix=/usr CFLAGS='-O3'
> # make
> # make install
> 
> Where is my mistake ?

Not yours, mine. Should have tested that it at least runs (missing
symbol)

> 
> 
> >>>>>>>/usr/lib64/xorg/modules/drivers/qxl_drv.so
> >>>>>>>2014.00        32.1%    __memcpy_ssse3      /lib64/libc-2.12.so
> >>>>>>>341.00            5.4%    download_box
> >>>>>>>/usr/lib64/xorg/modules/drivers/qxl_drv.so
> >>>>>>>61.00               1.0%    __memset_sse2
> >>>>>>>        /lib64/libc-2.12.so
> >>>>>>>11.00               0.2%    qxl_ring_push
> >>>>>>>/usr/lib64/xorg/modules/drivers/qxl_drv.so
> >>>>>>>10.00               0.2%    finish_task_switch    [kernel.kallsyms]
> >>>>>>>8.00                 0.1%    qxl_allocnf
> >>>>>>>/usr/lib64/xorg/modules/drivers/qxl_drv.so
> >>>>>>>8.00                 0.1%    retint_careful
> >>>>>>>            [kernel.kallsyms]
> >>>>>>>6.00                 0.1%    hash_and_copy
> >>>>>>>/usr/lib64/xorg/modules/drivers/qxl_drv.so
> >>>>>>>>>>>>>>>Regards,
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>--
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>        Dominique Rodrigues
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>nanoClouD<http://www.nanocloud.com>
> >>>>>>>>>>>>>>>8, rue Lemercier
> >>>>>>>>>>>>>>>75017 Paris
> >>>>>>>>>>>>>>>France
> >>>>>>>>>>>>>>>standard : +33 1 77 69 64 38
> >>>>>>>>>>>>>>>529 002 743 R.C.S. Paris
> >>>>>>>>>>>>>>>begin:vcard
> >>>>>>>>>>>>>>>fn:Dominique Rodrigues
> >>>>>>>>>>>>>>>n:Rodrigues;Dominique
> >>>>>>>>>>>>>>>org:nanoClouD
> >>>>>>>>>>>>>>>adr:;;8, rue Lemercier;Paris;;75017;France
> >>>>>>>>>>>>>>>email;internet:dominique.rodrigues at nanocloud.com
> >>>>>>>>>>>>>>>title:Directeur Technique
> >>>>>>>>>>>>>>>tel;work:+33 (0) 1 77 69 64 38
> >>>>>>>>>>>>>>>tel;cell:+33 (0) 6 28 52 37 70
> >>>>>>>>>>>>>>>url:www.nanocloud.com
> >>>>>>>>>>>>>>>version:2.1
> >>>>>>>>>>>>>>>end:vcard
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>_______________________________________________
> >>>>>>>>>>>>>>>Spice-devel mailing list
> >>>>>>>>>>>>>>>Spice-devel at lists.freedesktop.org
> >>>>>>>>>>>>>>>http://lists.freedesktop.org/mailman/listinfo/spice-devel
> >>>>>>>>>>>>>begin:vcard
> >>>>>>>>>>>>>fn:Dominique Rodrigues
> >>>>>>>>>>>>>n:Rodrigues;Dominique
> >>>>>>>>>>>>>org:nanoClouD
> >>>>>>>>>>>>>adr:;;8, rue Lemercier;Paris;;75017;France
> >>>>>>>>>>>>>email;internet:dominique.rodrigues at nanocloud.com
> >>>>>>>>>>>>>title:Directeur Technique
> >>>>>>>>>>>>>tel;work:+33 (0) 1 77 69 64 38
> >>>>>>>>>>>>>tel;cell:+33 (0) 6 28 52 37 70
> >>>>>>>>>>>>>url:www.nanocloud.com
> >>>>>>>>>>>>>version:2.1
> >>>>>>>>>>>>>end:vcard
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>_______________________________________________
> >>>>>>>>>>>>>Spice-devel mailing list
> >>>>>>>>>>>>>Spice-devel at lists.freedesktop.org
> >>>>>>>>>>>>>http://lists.freedesktop.org/mailman/listinfo/spice-devel
> >>>>>>>>>>>begin:vcard
> >>>>>>>>>>>fn:Dominique Rodrigues
> >>>>>>>>>>>n:Rodrigues;Dominique
> >>>>>>>>>>>org:nanoClouD
> >>>>>>>>>>>adr:;;8, rue Lemercier;Paris;;75017;France
> >>>>>>>>>>>email;internet:dominique.rodrigues at nanocloud.com
> >>>>>>>>>>>title:Directeur Technique
> >>>>>>>>>>>tel;work:+33 (0) 1 77 69 64 38
> >>>>>>>>>>>tel;cell:+33 (0) 6 28 52 37 70
> >>>>>>>>>>>url:www.nanocloud.com
> >>>>>>>>>>>version:2.1
> >>>>>>>>>>>end:vcard
> >>>>>>>>>>>
> >>>>>>>>>begin:vcard
> >>>>>>>>>fn:Dominique Rodrigues
> >>>>>>>>>n:Rodrigues;Dominique
> >>>>>>>>>org:nanoClouD
> >>>>>>>>>adr:;;8, rue Lemercier;Paris;;75017;France
> >>>>>>>>>email;internet:dominique.rodrigues at nanocloud.com
> >>>>>>>>>title:Directeur Technique
> >>>>>>>>>tel;work:+33 (0) 1 77 69 64 38
> >>>>>>>>>tel;cell:+33 (0) 6 28 52 37 70
> >>>>>>>>>url:www.nanocloud.com
> >>>>>>>>>version:2.1
> >>>>>>>>>end:vcard
> >>>>>>>>>
> >>>>>>>>
> >>>>>>>>>_______________________________________________
> >>>>>>>>>Spice-devel mailing list
> >>>>>>>>>Spice-devel at lists.freedesktop.org
> >>>>>>>>>http://lists.freedesktop.org/mailman/listinfo/spice-devel
> >>>>>>>begin:vcard
> >>>>>>>fn:Dominique Rodrigues
> >>>>>>>n:Rodrigues;Dominique
> >>>>>>>org:nanoClouD
> >>>>>>>adr:;;8, rue Lemercier;Paris;;75017;France
> >>>>>>>email;internet:dominique.rodrigues at nanocloud.com
> >>>>>>>title:Directeur Technique
> >>>>>>>tel;work:+33 (0) 1 77 69 64 38
> >>>>>>>tel;cell:+33 (0) 6 28 52 37 70
> >>>>>>>url:www.nanocloud.com
> >>>>>>>version:2.1
> >>>>>>>end:vcard
> >>>>>>>
> >>>>>>
> >>>>>>_______________________________________________
> >>>>>>Spice-devel mailing list
> >>>>>>Spice-devel at lists.freedesktop.org
> >>>>>>http://lists.freedesktop.org/mailman/listinfo/spice-devel
> >>>>>>
> >>>begin:vcard
> >>>fn:Dominique Rodrigues
> >>>n:Rodrigues;Dominique
> >>>org:nanoClouD
> >>>adr:;;8, rue Lemercier;Paris;;75017;France
> >>>email;internet:dominique.rodrigues at nanocloud.com
> >>>title:Directeur Technique
> >>>tel;work:+33 (0) 1 77 69 64 38
> >>>tel;cell:+33 (0) 6 28 52 37 70
> >>>url:www.nanocloud.com
> >>>version:2.1
> >>>end:vcard
> >>>
> >>
> >>
> >>
> >>>_______________________________________________
> >>>Spice-devel mailing list
> >>>Spice-devel at lists.freedesktop.org
> >>>http://lists.freedesktop.org/mailman/listinfo/spice-devel
> >>_______________________________________________
> >>Spice-devel mailing list
> >>Spice-devel at lists.freedesktop.org
> >>http://lists.freedesktop.org/mailman/listinfo/spice-devel

> begin:vcard
> fn:Dominique Rodrigues
> n:Rodrigues;Dominique
> org:nanoClouD
> adr:;;8, rue Lemercier;Paris;;75017;France
> email;internet:dominique.rodrigues at nanocloud.com
> title:Directeur Technique
> tel;work:+33 (0) 1 77 69 64 38
> tel;cell:+33 (0) 6 28 52 37 70
> url:www.nanocloud.com
> version:2.1
> end:vcard
> 




> _______________________________________________
> Spice-devel mailing list
> Spice-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/spice-devel



More information about the Spice-devel mailing list