summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDaniil Fedotov <dfedotov@pivotal.io>2016-06-07 13:29:20 +0100
committerDaniil Fedotov <dfedotov@pivotal.io>2016-06-07 13:31:10 +0100
commitd1dc0edc655963e07a2ab0571a0dd4f458b7c6b3 (patch)
tree723052728e1a685990bd9be2c467de35e39dfa01 /src
parentd1966c0dab3d5cccf2d19ae4d4790dfe9c345382 (diff)
downloadrabbitmq-server-git-d1dc0edc655963e07a2ab0571a0dd4f458b7c6b3.tar.gz
ETS tables memory consumption info
Diffstat (limited to 'src')
-rw-r--r--src/rabbit_vm.erl20
1 files changed, 16 insertions, 4 deletions
diff --git a/src/rabbit_vm.erl b/src/rabbit_vm.erl
index 82effb4fc5..d67331aec7 100644
--- a/src/rabbit_vm.erl
+++ b/src/rabbit_vm.erl
@@ -16,7 +16,7 @@
-module(rabbit_vm).
--export([memory/0, binary/0]).
+-export([memory/0, binary/0, ets_tables_memory/1]).
-define(MAGIC_PLUGINS, ["mochiweb", "webmachine", "cowboy", "sockjs",
"rfc4627_jsonrpc"]).
@@ -27,6 +27,9 @@
-spec(memory/0 :: () -> rabbit_types:infos()).
-spec(binary/0 :: () -> rabbit_types:infos()).
+-spec(ets_tables_memory/1 :: (Owners) -> rabbit_types:infos()
+ when Owners :: all | OwnerProcessName | [OwnerProcessName],
+ OwnerProcessName :: atom()).
-endif.
@@ -118,10 +121,19 @@ mnesia_memory() ->
end.
ets_memory(OwnerNames) ->
+ lists:sum([V || {_K, V} <- ets_tables_memory(OwnerNames)]).
+
+ets_tables_memory(all) ->
+ [{ets:info(T, name), bytes(ets:info(T, memory))}
+ || T <- ets:all(),
+ is_atom(T)];
+ets_tables_memory(OwnerName) when is_atom(OwnerName) ->
+ ets_tables_memory([OwnerName]);
+ets_tables_memory(OwnerNames) when is_list(OwnerNames) ->
Owners = [whereis(N) || N <- OwnerNames],
- lists:sum([bytes(ets:info(T, memory)) || T <- ets:all(),
- O <- [ets:info(T, owner)],
- lists:member(O, Owners)]).
+ [{ets:info(T, name), bytes(ets:info(T, memory))}
+ || T <- ets:all(),
+ lists:member(ets:info(T, owner), Owners)].
bytes(Words) -> try
Words * erlang:system_info(wordsize)