Re: [PATCH 2/2] sched/fair: Scale wakeup granularity relative to nr_running

From: Mike Galbraith
Date: Wed Sep 22 2021 - 10:04:35 EST


On Wed, 2021-09-22 at 14:20 +0100, Mel Gorman wrote:
> On Wed, Sep 22, 2021 at 07:22:20AM +0200, Mike Galbraith wrote:
> >
> > Watching 'while sleep 1; do clear;tail trace; done' with nothing but a
> > kbuild running is like watching top.  There's enough stacking during
> > routine use of my desktop box that it runs into the tick granularity
> > wall pretty much continuously, so 'overload' may want redefining.
> >
>
> Ok, that's pretty convincing. You didn't mention if there were
> interactivity glitches but it's possible.

No, I didn't notice a thing. That's not surprising given the amount of
scheduling going on. The stack depth surprised me a bit though.

X-2230 [005] d..5. 2162.123029: wakeup_gran: runnable:6 wakee:QXcbEventQueue:2695 CPU5
X-2230 [005] d..5. 2162.123035: wakeup_gran: runnable:7 wakee:QXcbEventQueue:2656 CPU5
X-2230 [005] d..5. 2162.123046: wakeup_gran: runnable:8 wakee:QXcbEventQueue:5876 CPU5
X-2230 [005] d..5. 2162.123049: wakeup_gran: runnable:9 wakee:QXcbEventQueue:5355 CPU5
X-2230 [005] d..5. 2162.123083: wakeup_gran: runnable:10 wakee:QXcbEventQueue:2723 CPU5
X-2230 [005] d..5. 2162.123097: wakeup_gran: runnable:11 wakee:QXcbEventQueue:2630 CPU5
X-2230 [005] d..5. 2162.123208: wakeup_gran: runnable:12 wakee:QXcbEventQueue:2760 CPU5

That CPU# on the end is task_cpu(). Lord knows why X wakes all those,
but with no SD_BALANCE_WAKE, a busy box and all those having last lived
on waker's CPU, the resulting construct.. probably doesn't very closely
resemble what the programmer had in mind when threading.

-Mike