Dear DRI folks,
using Debian Sid/unstable with the awesome 3.4.13-1 window manager and Evolution 3.4.3-1, htop shows X to constantly use 10 % of the CPU. Closing Evolution the usage goes back to more or less 0 %.
I am contacting this list because of the output of OProfile. After figuring out what is the culprit I would submit the appropriate bug report.
$ opcontrol --version opcontrol: oprofile 0.9.6 compiled on Jul 11 2011 15:32:06 $ sudo opcontrol --separate=lib,kernel $ sudo opcontrol --start-daemon $ opreport CPU: AMD64 processors, speed 1000 MHz (estimated) Counted CPU_CLK_UNHALTED events (Cycles outside of halt state) with a unit mask of 0x00 (No unit mask) count 100000 CPU_CLK_UNHALT...| samples| %| ------------------ 200635 24.9294 Xorg CPU_CLK_UNHALT...| samples| %| ------------------ 102707 51.1910 no-vmlinux 20261 10.0984 radeon_drv.so 19241 9.5901 Xorg 15254 7.6029 libdrm_radeon.so.1.0.0 13290 6.6240 libpixman-1.so.0.26.0 12887 6.4231 libc-2.13.so 11086 5.5255 libexa.so 2299 1.1459 libfb.so 1409 0.7023 libdrm.so.2.4.0 717 0.3574 [vdso] (tgid:2764 range:0xb7586000-0xb7587000) 645 0.3215 libextmod.so 505 0.2517 librt-2.13.so 151 0.0753 libpthread-2.13.so 145 0.0723 evdev_drv.so 37 0.0184 libudev.so.0.13.0 1 5.0e-04 ld-2.13.so 127271 15.8137 perl CPU_CLK_UNHALT...| samples| %| ------------------ 84842 66.6625 perl 21993 17.2804 libc-2.13.so 17668 13.8822 no-vmlinux 1858 1.4599 ld-2.13.so 413 0.3245 libsqlite3.so.0.8.6 268 0.2106 libpthread-2.13.so 70 0.0550 DBI.so 25 0.0196 libm-2.13.so 23 0.0181 libdl-2.13.so 20 0.0157 POSIX.so 14 0.0110 Socket.so 14 0.0110 SQLite.so 13 0.0102 libnss_compat-2.13.so 11 0.0086 Syslog.so 9 0.0071 Fcntl.so 6 0.0047 Cwd.so 5 0.0039 libcrypt-2.13.so 5 0.0039 libnsl-2.13.so 4 0.0031 libnss_nis-2.13.so 3 0.0024 [vdso] (tgid:3287 range:0xb77de000-0xb77df000) 3 0.0024 Util.so 1 7.9e-04 [vdso] (tgid:7099 range:0xb773c000-0xb773d000) 1 7.9e-04 [vdso] (tgid:7186 range:0xb76e4000-0xb76e5000) 1 7.9e-04 [vdso] (tgid:7270 range:0xb7792000-0xb7793000) 1 7.9e-04 libnss_files-2.13.so 118502 14.7241 evolution CPU_CLK_UNHALT...| samples| %| ------------------ 32194 27.1675 libcairo.so.2.11200.2 24613 20.7701 libglib-2.0.so.0.3200.3 14060 11.8648 libgtk-3.so.0.400.2 11814 9.9695 libgobject-2.0.so.0.3200.3 8400 7.0885 libc-2.13.so 7502 6.3307 libpthread-2.13.so 7387 6.2337 no-vmlinux 3161 2.6675 libgdk-3.so.0.400.2 2108 1.7789 libpango-1.0.so.0.3000.0 1632 1.3772 libpixman-1.so.0.26.0 1133 0.9561 libX11.so.6.3.0 853 0.7198 libXrender.so.1.3.0 821 0.6928 libdbus-1.so.3.7.2 582 0.4911 libm-2.13.so 499 0.4211 libxcb.so.1.1.0 451 0.3806 libpangocairo-1.0.so.0.3000.0 395 0.3333 libcogl.so.9.1.1 261 0.2202 libcamel-1.2.so.33.0.0 169 0.1426 librt-2.13.so 82 0.0692 [vdso] (tgid:5438 range:0xb771c000-0xb771d000) 77 0.0650 libgio-2.0.so.0.3200.3 65 0.0549 libgnome-keyring.so.0.2.0 62 0.0523 libgvfscommon.so 55 0.0464 libpangoft2-1.0.so.0.3000.0 36 0.0304 libfreetype.so.6.8.1 33 0.0278 libdbus-glib-1.so.2.2.2 10 0.0084 libsqlite3.so.0.8.6 8 0.0068 pango-basic-fc.so 7 0.0059 libeutil.so.0.0.0 6 0.0051 libcamellocal.so 5 0.0042 libfontconfig.so.1.5.0 4 0.0034 libgdk_pixbuf-2.0.so.0.2600.1 3 0.0025 libcamelimap.so 3 0.0025 libemail-engine.so.0.0.0 2 0.0017 libemiscwidgets.so.0.0.0 2 0.0017 libeshell.so.0.0.0 2 0.0017 libevolution-mail.so.0.0.0 1 8.4e-04 libcamelsmtp.so 1 8.4e-04 libevolution-utils.so.0.0.0 1 8.4e-04 libatk-1.0.so.0.20409.1 1 8.4e-04 libnspr4.so 1 8.4e-04 libedataserver-1.2.so.16.0.0 100885 12.5352 pulseaudio CPU_CLK_UNHALT...| samples| %| ------------------ 43817 43.4326 no-vmlinux 16451 16.3067 libpulsecommon-2.0.so 12801 12.6887 libspeexdsp.so.1.5.0 11348 11.2485 libpulsecore-2.0.so 3897 3.8628 libpulse.so.0.14.2 3080 3.0530 libc-2.13.so 2844 2.8191 libasound.so.2.0.0 2000 1.9825 libpthread-2.13.so 1622 1.6078 libprotocol-native.so 1563 1.5493 libalsa-util.so 602 0.5967 ld-2.13.so 542 0.5372 [vdso] (tgid:13180 range:0xb77a6000-0xb77a7000) 318 0.3152 librt-2.13.so 82317 10.2281 no-vmlinux 81141 10.0820 python2.7 CPU_CLK_UNHALT...| samples| %| ------------------ 28004 34.5128 no-vmlinux 6449 7.9479 libvorbis.so.0.4.5 6322 7.7914 libgstreamer-0.10.so.0.30.0 6109 7.5289 libpulsecommon-2.0.so 5993 7.3859 libpthread-2.13.so 4524 5.5755 libglib-2.0.so.0.3200.3 4276 5.2698 libpulse.so.0.14.2 3965 4.8866 libc-2.13.so 3255 4.0115 libgstbase-0.10.so.0.30.0 3069 3.7823 libgobject-2.0.so.0.3200.3 2407 2.9664 libgstcoreelements.so 1797 2.2147 libogg.so.0.8.0 1765 2.1752 libgstaudio-0.10.so.0.25.0 885 1.0907 libgstogg.so 867 1.0685 libgstpulse.so 418 0.5152 librt-2.13.so 406 0.5004 [vdso] (tgid:13956 range:0xb76fa000-0xb76fb000) 253 0.3118 libgstvorbis.so 194 0.2391 libgstplaybin.so 83 0.1023 libsoup-2.4.so.1.5.0 44 0.0542 libgio-2.0.so.0.3200.3 35 0.0431 libgstaudioconvert.so 12 0.0148 libgstsouphttpsrc.so 3 0.0037 libX11.so.6.3.0 2 0.0025 libgdk-x11-2.0.so.0.2400.10 2 0.0025 libgtk-x11-2.0.so.0.2400.10 1 0.0012 libdbus-1.so.3.7.2 1 0.0012 libpyglib-2.0-python2.7.so.0.0.0 […]
The following packages are installed.
libdrm2:i386 2.4.33-3 xserver-xorg-video-radeon 1:6.14.4-5 linux-image-3.2.0-3-686-pae 3.2.23-1
Could somebody please tell me what component (X driver, DRM, Evolution, Cairo, …) to investigate and how?
Thanks,
Paul
On Die, 2012-09-11 at 14:42 +0200, Paul Menzel wrote:
using Debian Sid/unstable with the awesome 3.4.13-1 window manager and Evolution 3.4.3-1, htop shows X to constantly use 10 % of the CPU. Closing Evolution the usage goes back to more or less 0 %.
I'm not seeing this. Is there something in your Evolution window(s) that is constantly repainting, e.g. a spinner in the status bar, a blinking cursor, ... ?
Could somebody please tell me what component (X driver, DRM, Evolution, Cairo, …) to investigate and how?
I'd focus on profiling the X server, making sure the profiles show symbols, ideally with call graphs. sysprof or perf might work better for this than oprofile.
Am Dienstag, den 11.09.2012, 14:55 +0200 schrieb Michel Dänzer:
On Die, 2012-09-11 at 14:42 +0200, Paul Menzel wrote:
using Debian Sid/unstable with the awesome 3.4.13-1 window manager and Evolution 3.4.3-1, htop shows X to constantly use 10 % of the CPU. Closing Evolution the usage goes back to more or less 0 %.
I'm not seeing this. Is there something in your Evolution window(s) that is constantly repainting, e.g. a spinner in the status bar, a blinking cursor, ... ?
Now that you are mentioning it, in the bottom there is the message »Checking for New Messages« and next to it there is an animation where something goes around a circle. Canceling that removes X’s CPU usage.
Thanks a lot.
Should I recommend something to the Evolution folks on how to due such animations? Or is the only way to avoid animations?
Could somebody please tell me what component (X driver, DRM, Evolution, Cairo, …) to investigate and how?
I'd focus on profiling the X server, making sure the profiles show symbols, ideally with call graphs. sysprof or perf might work better for this than oprofile.
Thanks. Lucky me, that this is not needed now and I can postpone how to figure out how to start X that way under Debian with GDM.
Michael, thanks as always!
Paul
On Tue, 11 Sep 2012 15:07:41 +0200, Paul Menzel paulepanter@users.sourceforge.net wrote:
Am Dienstag, den 11.09.2012, 14:55 +0200 schrieb Michel Dänzer:
I'd focus on profiling the X server, making sure the profiles show symbols, ideally with call graphs. sysprof or perf might work better for this than oprofile.
Thanks. Lucky me, that this is not needed now and I can postpone how to figure out how to start X that way under Debian with GDM.
For future reference, sysprof and perf can be used to perform system wide profiling - that is you can launch them after starting the task you need to profile. For sysprof this is its default mode, and for perf you need 'perf record -a'
A quick 'sudo perf top' is always a useful first step. For best results, make sure you have debugging symbols and frame pointers. -Chris
On Die, 2012-09-11 at 15:07 +0200, Paul Menzel wrote:
Am Dienstag, den 11.09.2012, 14:55 +0200 schrieb Michel Dänzer:
On Die, 2012-09-11 at 14:42 +0200, Paul Menzel wrote:
using Debian Sid/unstable with the awesome 3.4.13-1 window manager and Evolution 3.4.3-1, htop shows X to constantly use 10 % of the CPU. Closing Evolution the usage goes back to more or less 0 %.
I'm not seeing this. Is there something in your Evolution window(s) that is constantly repainting, e.g. a spinner in the status bar, a blinking cursor, ... ?
Now that you are mentioning it, in the bottom there is the message »Checking for New Messages« and next to it there is an animation where something goes around a circle. Canceling that removes X’s CPU usage.
That's a GTK+ spinner widget, which uses RENDER trapezoids, which is a software rendering fallback with EXA.
Should I recommend something to the Evolution folks on how to due such animations? Or is the only way to avoid animations?
I don't think there's anything wrong with the animation per se. However, one issue I've found is that Evolution schedules many actions as glib idle callbacks with priority lower than G_PRIORITY_HIGH_IDLE + 20, which is the priority used by GTK+ for drawing animations. This can result in the animations delaying the completion of the actual work they're representing.
Am Dienstag, den 11.09.2012, 15:24 +0200 schrieb Michel Dänzer:
On Die, 2012-09-11 at 15:07 +0200, Paul Menzel wrote:
Am Dienstag, den 11.09.2012, 14:55 +0200 schrieb Michel Dänzer:
On Die, 2012-09-11 at 14:42 +0200, Paul Menzel wrote:
using Debian Sid/unstable with the awesome 3.4.13-1 window manager and Evolution 3.4.3-1, htop shows X to constantly use 10 % of the CPU. Closing Evolution the usage goes back to more or less 0 %.
I'm not seeing this. Is there something in your Evolution window(s) that is constantly repainting, e.g. a spinner in the status bar, a blinking cursor, ... ?
Now that you are mentioning it, in the bottom there is the message »Checking for New Messages« and next to it there is an animation where something goes around a circle. Canceling that removes X’s CPU usage.
That's a GTK+ spinner widget, which uses RENDER trapezoids, which is a software rendering fallback with EXA.
Could that be changed to not us some fallback?
Should I recommend something to the Evolution folks on how to due such animations? Or is the only way to avoid animations?
I don't think there's anything wrong with the animation per se. However, one issue I've found is that Evolution schedules many actions as glib idle callbacks with priority lower than G_PRIORITY_HIGH_IDLE + 20, which is the priority used by GTK+ for drawing animations. This can result in the animations delaying the completion of the actual work they're representing.
I reported that issue as
[Bug 683867] Schedule actions with priority higher than G_PRIORITY_HIGH_IDLE + 20
to the GNOME BTS [1] and Matthew Barnes replied that this should be done in GTK+ itself.
Thanks,
Paul
On Mit, 2012-09-12 at 15:29 +0200, Paul Menzel wrote:
Am Dienstag, den 11.09.2012, 15:24 +0200 schrieb Michel Dänzer:
On Die, 2012-09-11 at 15:07 +0200, Paul Menzel wrote:
Am Dienstag, den 11.09.2012, 14:55 +0200 schrieb Michel Dänzer:
On Die, 2012-09-11 at 14:42 +0200, Paul Menzel wrote:
using Debian Sid/unstable with the awesome 3.4.13-1 window manager and Evolution 3.4.3-1, htop shows X to constantly use 10 % of the CPU. Closing Evolution the usage goes back to more or less 0 %.
I'm not seeing this. Is there something in your Evolution window(s) that is constantly repainting, e.g. a spinner in the status bar, a blinking cursor, ... ?
Now that you are mentioning it, in the bottom there is the message »Checking for New Messages« and next to it there is an animation where something goes around a circle. Canceling that removes X’s CPU usage.
That's a GTK+ spinner widget, which uses RENDER trapezoids, which is a software rendering fallback with EXA.
Could that be changed to not us some fallback?
Anything could be done ;), but it would require a lot of work to EXA and the drivers, which is unlikely to happen at this point.
dri-devel@lists.freedesktop.org