aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator/beam/erl_process.c
diff options
context:
space:
mode:
authorSteve Vinoski <[email protected]>2015-03-28 14:53:07 -0400
committerZandra Hird <[email protected]>2015-04-10 12:08:41 +0200
commitfe150e807667cf3aa1ecdd865a1885bdc326b0f6 (patch)
tree83538b1c6760386771c86c60407a986358e59c8c /erts/emulator/beam/erl_process.c
parentf54392bc3c811d44cef2b31c20cac9fb11bf38e1 (diff)
downloadotp-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.
Diffstat (limited to 'erts/emulator/beam/erl_process.c')
-rw-r--r--erts/emulator/beam/erl_process.c8
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 =