All of lore.kernel.org
 help / color / mirror / Atom feed
* cpu stopper threads and load balancing leads to deadlock
@ 2018-04-17 14:21 Matt Fleming
  2018-04-18  5:47 ` Mike Galbraith
  2018-04-20  9:50 ` Peter Zijlstra
  0 siblings, 2 replies; 28+ messages in thread
From: Matt Fleming @ 2018-04-17 14:21 UTC (permalink / raw)
  To: Peter Zijlstra, Ingo Molnar; +Cc: linux-kernel, Michal Hocko, Mike Galbraith

Hi guys,

We've seen a bug in one of our SLE kernels where the cpu stopper
thread ("migration/15") is entering idle balance. This then triggers
active load balance.

At the same time, a task on another CPU triggers a page fault and NUMA
balancing kicks in to try and migrate the task closer to the NUMA node
for that page (we're inside stop_two_cpus()). This faulting task is
spinning in try_to_wake_up() (inside smp_cond_load_acquire(&p->on_cpu,
!VAL)), waiting for "migration/15" to context switch.

Unfortunately, because "migration/15" is doing active load balance
it's spinning waiting for the NUMA-page-faulting CPU's stopper lock,
which is already held (since it's inside stop_two_cpus()).

Deadlock ensues.

This seems like a situation that should be prohibited, but I cannot
find any code to prevent it. Is it OK for stopper threads to load
balance? Is there something that should prevent this situation from
happening?

^ permalink raw reply	[flat|nested] 28+ messages in thread

end of thread, other threads:[~2018-05-22 17:06 UTC | newest]

Thread overview: 28+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-04-17 14:21 cpu stopper threads and load balancing leads to deadlock Matt Fleming
2018-04-18  5:47 ` Mike Galbraith
2018-04-19  5:38   ` Mike Galbraith
2018-04-20  9:50 ` Peter Zijlstra
2018-04-24 13:33   ` Matt Fleming
2018-05-03 12:12     ` Mike Galbraith
2018-05-03 12:28       ` Peter Zijlstra
2018-05-03 12:40         ` Mike Galbraith
2018-05-03 12:49           ` Peter Zijlstra
2018-05-03 13:32             ` Mike Galbraith
2018-05-03 13:56               ` Peter Zijlstra
2018-05-03 14:16                 ` Mike Galbraith
2018-05-03 14:44                   ` Peter Zijlstra
2018-05-03 16:12                     ` Paul E. McKenney
2018-05-03 16:45                       ` Peter Zijlstra
2018-05-03 17:18                         ` Paul E. McKenney
2018-05-03 17:54                           ` Peter Zijlstra
2018-05-03 18:24                             ` Paul E. McKenney
2018-05-04  3:38                         ` Mike Galbraith
2018-05-15  4:30                         ` Mike Galbraith
2018-05-17 14:03                           ` Paul E. McKenney
2018-05-17 14:10                             ` Mike Galbraith
2018-05-17 14:23                             ` Peter Zijlstra
2018-05-17 14:56                               ` Paul E. McKenney
2018-05-22 17:05                                 ` Paul E. McKenney
2018-05-03 14:39                 ` Paul E. McKenney
2018-05-03 14:52                   ` Peter Zijlstra
2018-05-03  9:24   ` [tip:sched/urgent] stop_machine, sched: Fix migrate_swap() vs. active_balance() deadlock tip-bot for Peter Zijlstra

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.