On Tue, Oct 06, 2020 at 04:37:04PM +0200, Juri Lelli wrote: > On 06/10/20 15:48, Peter Zijlstra wrote: > > On Tue, Oct 06, 2020 at 12:20:43PM +0100, Valentin Schneider wrote: > > > > > > On 05/10/20 15:57, Peter Zijlstra wrote: > > > > In order to minimize the interference of migrate_disable() on lower > > > > priority tasks, which can be deprived of runtime due to being stuck > > > > below a higher priority task. Teach the RT/DL balancers to push away > > > > these higher priority tasks when a lower priority task gets selected > > > > to run on a freshly demoted CPU (pull). > > Still digesting the whole lot, but can't we "simply" force push the > higest prio (that we preempt to make space for the migrate_disabled > lower prio) directly to the cpu that would accept the lower prio that > cannot move? > > Asking because AFAIU we are calling find_lock_rq from push_cpu_stop and > that selects the best cpu for the high prio. I'm basically wondering if > we could avoid moving, potentially multiple, high prio tasks around to > make space for a lower prio task.
The intention was to do as you describe in the first paragraph, and isn't pull also using find_lock_rq() to select the 'lowest' priority runqueue to move the task to? That is, both actions should end up at the same 'lowest' prio CPU.