diff options
| author | Michael Klishin <michael@novemberain.com> | 2016-06-07 16:25:43 +0300 |
|---|---|---|
| committer | Michael Klishin <michael@novemberain.com> | 2016-06-07 16:25:43 +0300 |
| commit | 7e5c76a20856bb685f1e5839f06ab6059ebcd219 (patch) | |
| tree | 723052728e1a685990bd9be2c467de35e39dfa01 /src | |
| parent | d1966c0dab3d5cccf2d19ae4d4790dfe9c345382 (diff) | |
| parent | d1dc0edc655963e07a2ab0571a0dd4f458b7c6b3 (diff) | |
| download | rabbitmq-server-git-7e5c76a20856bb685f1e5839f06ab6059ebcd219.tar.gz | |
Merge pull request #827 from rabbitmq/rabbitmq-management-219
ETS tables memory consumption info
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) |
