diff options
author | Rickard Green <[email protected]> | 2019-02-26 11:52:46 +0100 |
---|---|---|
committer | Rickard Green <[email protected]> | 2019-02-26 11:58:29 +0100 |
commit | b1fdcdb1dd5ae97bca657667496974e9d2f403c8 (patch) | |
tree | 6b0437fc71414d1254834531089821ee31310516 /erts/emulator/beam/erl_message.c | |
parent | 934f9974eb6bec43cd9445ec0f5019a4d1389428 (diff) | |
download | otp-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.c | 7 |
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); + } } |