Messages in this thread | | | Subject | Re: [RFC PATCH 1/3] sched/fair: Call newidle_balance() from finish_task_switch() | From | Scott Wood <> | Date | Tue, 28 Apr 2020 18:20:32 -0500 |
| |
On Wed, 2020-04-29 at 01:02 +0200, Peter Zijlstra wrote: > On Tue, Apr 28, 2020 at 05:55:03PM -0500, Scott Wood wrote: > > On Wed, 2020-04-29 at 00:09 +0200, Peter Zijlstra wrote: > > > Also, if you move it this late, this is entirely the wrong place. If > > > you > > > do it after the context switch either use the balance_callback or put > > > it > > > in the idle path. > > > > > > But what Valentin said; this needs a fair bit of support, the whole > > > reason we've never done this is to avoid that double context switch... > > > > > > > balance_callback() enters with the rq lock held but BH not separately > > BH? softirqs you mean? Pray tell more.
In https://lore.kernel.org/lkml/5122CD9C.9070702@oracle.com/ the need to keep softirqs disabled during rebalance was brought up, but simply wrapping the lock dropping in local_bh_enable()/local_bh_disable() meant that local_bh_enable() would be called with interrupts disabled, which isn't allowed.
> > disabled, which interferes with the ability to enable interrupts but not > > BH. > > It also gets called from rt_mutex_setprio() and __sched_setscheduler(), > > and > > I didn't want the caller of those to be stuck with the latency. > > You're not reading it right.
Could you elaborate?
-Scott
| |