aboutsummaryrefslogtreecommitdiffstats
path: root/lib/kernel/test/rpc_SUITE.erl
diff options
context:
space:
mode:
authorBjörn Gustavsson <[email protected]>2017-02-03 13:27:09 +0100
committerBjörn Gustavsson <[email protected]>2017-02-03 13:31:24 +0100
commit5f7f86be7bc7ec7a1c9b0042ff08254dca063d76 (patch)
treed69acb9beded0e43b760222f90719f260029118b /lib/kernel/test/rpc_SUITE.erl
parentea530357b27635278ae8a3260e735ea39df5c283 (diff)
downloadotp-5f7f86be7bc7ec7a1c9b0042ff08254dca063d76.tar.gz
otp-5f7f86be7bc7ec7a1c9b0042ff08254dca063d76.tar.bz2
otp-5f7f86be7bc7ec7a1c9b0042ff08254dca063d76.zip
Store messages for 'rex' and 'error_logger' off heap
Performance for processes that receive huge amounts of messages can be increased by storing the incoming messages outside the heap (that avoids copying the message in a garbage collection). Two OTP processes that are known to receive many messages are 'rex' (used by 'rpc') and 'error_logger'.
Diffstat (limited to 'lib/kernel/test/rpc_SUITE.erl')
-rw-r--r--lib/kernel/test/rpc_SUITE.erl12
1 files changed, 10 insertions, 2 deletions
diff --git a/lib/kernel/test/rpc_SUITE.erl b/lib/kernel/test/rpc_SUITE.erl
index 1c72ddc87f..d76c4097d8 100644
--- a/lib/kernel/test/rpc_SUITE.erl
+++ b/lib/kernel/test/rpc_SUITE.erl
@@ -21,7 +21,8 @@
-export([all/0, suite/0,groups/0,init_per_suite/1, end_per_suite/1,
init_per_group/2,end_per_group/2]).
--export([call/1, block_call/1, multicall/1, multicall_timeout/1,
+-export([off_heap/1,
+ call/1, block_call/1, multicall/1, multicall_timeout/1,
multicall_dies/1, multicall_node_dies/1,
called_dies/1, called_node_dies/1,
called_throws/1, call_benchmark/1, async_call/1]).
@@ -35,7 +36,7 @@ suite() ->
{timetrap,{minutes,2}}].
all() ->
- [call, block_call, multicall, multicall_timeout,
+ [off_heap, call, block_call, multicall, multicall_timeout,
multicall_dies, multicall_node_dies, called_dies,
called_node_dies, called_throws, call_benchmark,
async_call].
@@ -55,6 +56,13 @@ init_per_group(_GroupName, Config) ->
end_per_group(_GroupName, Config) ->
Config.
+off_heap(_Config) ->
+ %% The rex server process may receive a huge amount of
+ %% messages. Make sure that they are stored off heap to
+ %% avoid exessive GCs.
+ MQD = message_queue_data,
+ {MQD,off_heap} = process_info(whereis(rex), MQD),
+ ok.
%% Test different rpc calls.