[Xquartz-dev] xquarz uses 100% of CPU when not focused
George Peter Staplin
georgeps at xmission.com
Mon Feb 9 10:08:18 PST 2009
Quoted Gene Selkov <selkovjr at gmail.com>:
> I started a bare xterm as suggested and worked for a couple hours with
> the osx apps, occasionally using that xterm as well. Everything was
> cool. Literally. The CPU temperature remained in the lower forties
> (C), and the fan didn't come on even momentarily.
>
> Then I started icewm and gimp, and spent about 10 minutes abusing the
> latter. I know how to break it simply by drawing lines with a stylus.
> But that's a different story, I just want to comment that breaking
> gimp under icewm appeared to be somewhat more difficult that under
> quartzwm. It tends to break when it draws a continuous line too
> quickly and for too long -- to the point that the undo operation
> doesn't completely erased the line; it only erases random rectangular
> panels, leaving other panels unerased.
>
> Then, after 10 minutes, I noticed the 100% load by X11. Killing icewm
> brought it back to idle, and there it stayed for maybe another hour of
> gimp abuse, and everything was cool. I must also mention that without
> any wm, gimp worked even smoother.
That's odd, and of course shouldn't be happening. This may explain
why I haven't seen it.
> Then I started icewm again to rearrange the windows, and killed it
> again as soon as the windows were in the right pusitions. The load
> went up to 100% again and never came back to idle. Killing gimp didn't
> bring it back to idle either. So it remained at 100% with the sole
> xterm running. Killing X11 was enough to cool it down, but starting it
> again with a single xterm and no wm brought it back to 100%.
>
> So this sort of confirms the report that it is possible to have the
> hot idle effect with a sole xterm and no wm. I havenr't obesrved it
> long enough to know if it would ever arise without more sophisticated,
> albeit transient, use of X11; and I don't know enough to say whether
> wm has anything to do with that (it is hard to use anything more
> complicated than xterm without a window manager). All I can see is
> that once the situation arises, it tends to persist.
>
> I have just restarted the system, and it's again running with a single
> undecorated xterm, with X11 being essentially idle, wether or not I
> do anything in that xterm or in other apps.
>
> Now, please pardon my ignorance -- I am years of reading away from
> understanding any of the X11, wm or osx GUI stuff, but is there such a
> thing as event queue? If there is such a thing, or perhaps several,
> given what a nice hack XQuartz is, can it (they) be clogged with
> something unexpected? I am imagining something that gets inserted into
> the queue, then gets "read", whatever that means, but not cleaned up?
> Or even not read? Or, can an empty queue look non-empty? Just a WAG
> trying to explain why the effect is intermittent, why it is so
> drastic, as well as why it tends to persist even after whatever
> "thing" responsible for it is gone, and even after X11 is restarted.
Every event caused by a key press/release, mouse motion, mouse button,
window resize, window movement, etc. gets enqueued, and then written
to a client when possible, so that the client may process it.
quartz-wm is an X client for instance, so it reads events from the X
server, and also sends requests. The special bit with quartz-wm is
that it also has a SubstructureRedirectMask selected. This allows
quartz-wm to get the events from the queue for XConfigureWindow
requests, and other requests, that normally the X server handles, that
are then redirected to the quartz-wm client, where quartz-wm may
respond to the requests as it sees fit.
I wonder if the queue could be full, and then some events get thrown
away and cause havoc in applications or the X server. Your gimp
example makes me wonder about that. I'm not as familiar with the
input and event system as Jeremy, but if it's a bounded queue then you
may be right.
George
--
http://people.freedesktop.org/~gstaplin/
More information about the Xquartz-dev
mailing list