diff options
author | Steve Vinoski <[email protected]> | 2015-03-28 14:53:07 -0400 |
---|---|---|
committer | Zandra Hird <[email protected]> | 2015-04-10 12:08:41 +0200 |
commit | fe150e807667cf3aa1ecdd865a1885bdc326b0f6 (patch) | |
tree | 83538b1c6760386771c86c60407a986358e59c8c | |
parent | f54392bc3c811d44cef2b31c20cac9fb11bf38e1 (diff) | |
download | otp-fe150e807667cf3aa1ecdd865a1885bdc326b0f6.tar.gz otp-fe150e807667cf3aa1ecdd865a1885bdc326b0f6.tar.bz2 otp-fe150e807667cf3aa1ecdd865a1885bdc326b0f6.zip |
Keep dirty schedulers from waking other schedulers
Prevent dirty schedulers from checking regular run queues and trying
to wake up regular schedulers.
-rw-r--r-- | erts/emulator/beam/erl_process.c | 8 |
1 files changed, 5 insertions, 3 deletions
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 = |