From fe150e807667cf3aa1ecdd865a1885bdc326b0f6 Mon Sep 17 00:00:00 2001 From: Steve Vinoski Date: Sat, 28 Mar 2015 14:53:07 -0400 Subject: Keep dirty schedulers from waking other schedulers Prevent dirty schedulers from checking regular run queues and trying to wake up regular schedulers. --- erts/emulator/beam/erl_process.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'erts') diff --git a/erts/emulator/beam/erl_process.c b/erts/emulator/beam/erl_process.c index f74a2ee54c..5f7770e65f 100644 --- a/erts/emulator/beam/erl_process.c +++ b/erts/emulator/beam/erl_process.c @@ -4960,9 +4960,11 @@ wakeup_other_check(ErtsRunQueue *rq, Uint32 flags) + ERTS_WAKEUP_OTHER_FIXED_INC); if (rq->wakeup_other > wakeup_other.limit) { #ifdef ERTS_DIRTY_SCHEDULERS - if (ERTS_RUNQ_IX_IS_DIRTY(rq->ix) && rq->waiting) - wake_dirty_schedulers(rq, 1); - else + if (ERTS_RUNQ_IX_IS_DIRTY(rq->ix)) { + if (rq->waiting) { + wake_dirty_schedulers(rq, 1); + } + } else #endif { int empty_rqs = -- cgit v1.2.3