aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator/beam/erl_message.c
diff options
context:
space:
mode:
authorRickard Green <[email protected]>2019-02-26 11:52:46 +0100
committerRickard Green <[email protected]>2019-02-26 11:58:29 +0100
commitb1fdcdb1dd5ae97bca657667496974e9d2f403c8 (patch)
tree6b0437fc71414d1254834531089821ee31310516 /erts/emulator/beam/erl_message.c
parent934f9974eb6bec43cd9445ec0f5019a4d1389428 (diff)
downloadotp-b1fdcdb1dd5ae97bca657667496974e9d2f403c8.tar.gz
otp-b1fdcdb1dd5ae97bca657667496974e9d2f403c8.tar.bz2
otp-b1fdcdb1dd5ae97bca657667496974e9d2f403c8.zip
Bump reductions on send based on message size
Diffstat (limited to 'erts/emulator/beam/erl_message.c')
-rw-r--r--erts/emulator/beam/erl_message.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/erts/emulator/beam/erl_message.c b/erts/emulator/beam/erl_message.c
index a3274d7443..aea0743dfa 100644
--- a/erts/emulator/beam/erl_message.c
+++ b/erts/emulator/beam/erl_message.c
@@ -747,6 +747,13 @@ erts_send_message(Process* sender,
#endif
erts_queue_proc_message(sender, receiver, *receiver_locks, mp, message);
+
+ if (msize > ERTS_MSG_COPY_WORDS_PER_REDUCTION) {
+ Uint reds = msize / ERTS_MSG_COPY_WORDS_PER_REDUCTION;
+ if (reds > CONTEXT_REDS)
+ reds = CONTEXT_REDS;
+ BUMP_REDS(sender, (int) reds);
+ }
}