diff options
| author | Michael Klishin <michael@clojurewerkz.org> | 2016-06-07 16:35:36 +0300 |
|---|---|---|
| committer | Michael Klishin <michael@clojurewerkz.org> | 2016-06-07 16:35:36 +0300 |
| commit | 373b2cd935e9c7bec375e8532fb8fd574c99e437 (patch) | |
| tree | ee853c2504d38e99d22847ed59d3961ecc204661 /src | |
| parent | d596334b19389fc5919a536f827f57dea0c2a66c (diff) | |
| parent | 7e5c76a20856bb685f1e5839f06ab6059ebcd219 (diff) | |
| download | rabbitmq-server-git-373b2cd935e9c7bec375e8532fb8fd574c99e437.tar.gz | |
Merge branch 'stable'
Diffstat (limited to 'src')
| -rw-r--r-- | src/rabbit_vm.erl | 20 |
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) |
