Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 18 Feb 2008 15:04:17 -0700
From:      Joe Peterson <joe@skyrush.com>
To:        freebsd-stable@freebsd.org
Subject:   Revisiting jerky/freezing mouse issue in 7.0
Message-ID:  <47BA00E1.5000605@skyrush.com>

next in thread | raw e-mail | index | archive | help
I spent some time looking again at a trace I posted last month showing
mouse "jerkiness/freezing" under load (note that I see it all of the
time under light load too, but it is harder to reproduce on demand).
Here's the trace:

	http://www.skyrush.com/downloads/ktr_ule_4.out

The large stretches of yellow in the Xorg process are what trouble me.
Clearly, Xorg is yielding processor time mostly to, in this case, xtrs,
which is getting a whole lot of time.  If you look at the fairly regular
mouse events, you'll notice that moused runs for a short time on each
mouse even from psm0 and then sleeps.  This makes sense, and it appears
moused is acting correctly.  But many of these mouse events are
seemingly ignored by Xorg, which spends most of its time yielding
(yellow) and not getting "woken up" by the events to simply process
them.  I've noticed, also, that Xorg can "get behind" easily and spend
its time catching up on event processing for a while after I stop using
the mouse.  It just doesn't seem to be getting an appropriate amount of
CPU time, or at least it yields too long between runs, to make
interactivity smooth.  These yields, I believe, are the freezes I see.
Here's a question: does Xorg "respond" to mouse events, or does it just
wake up every now and then and check?

Note that even when Xorg runs, it only runs for a very short time.  If
the ULE scheduluer is being fair, I would think this might give Xorg
*more* of a share of the CPU to use to service these events, since it is
running a lot less than xtrs.

One interesting point is at timestamp 1478223777518.  It looks like Xorg
*starts* to yield when moused runs.  Here's the line:

1478223777518 sched_add: 0xa7be1660(Xorg) prio 160 by 0xa5eb7aa0(moused)

Does this mean that moused *caused* Xorg to yield, or am I reading this
incorrectly)?  The yield then lasts through a series of mouse moves.  A
quick look through the graph shows that this happens quite a bit, which
seems like the reverse of what we'd like.

This issue (especially since it does not even require continuous heavy
CPU use to see) is a constant distraction while using the system, and
again I want to volunteer my time to help track it down.  I am not sure
how to further delve into it, so if there is some additional data I can
gather, please let me know, and I'll gladly do it.

					Thanks, Joe



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?47BA00E1.5000605>