@@ -40,27 +40,32 @@ memory() ->
4040 [aggregate (Names , Sums , memory , fun (X ) -> X end )
4141 || Names <- distinguished_interesting_sups ()],
4242
43- MnesiaETS = mnesia_memory (),
44- MsgIndexETS = ets_memory (msg_stores ()),
45- MetricsETS = ets_memory ([rabbit_metrics ]),
46- MetricsProc =
47- try
48- [{ _ , M }] = process_info ( whereis ( rabbit_metrics ), [ memory ]),
49- M
50- catch
51- error : badarg ->
52- 0
53- end ,
54- MgmtDbETS = ets_memory ([ rabbit_mgmt_storage ] ),
55- OsTotal = vm_memory_monitor : get_process_memory (),
56-
57- [ {processes , Processes },
43+ MnesiaETS = mnesia_memory (),
44+ MsgIndexETS = ets_memory (msg_stores ()),
45+ MetricsETS = ets_memory ([rabbit_metrics ]),
46+ MetricsProc = try
47+ [{ _ , M }] = process_info ( whereis ( rabbit_metrics ), [ memory ]),
48+ M
49+ catch
50+ error : badarg ->
51+ 0
52+ end ,
53+ MgmtDbETS = ets_memory ([ rabbit_mgmt_storage ]) ,
54+ VMTotal = vm_memory_monitor : get_process_memory ( ),
55+
56+ [{ total , ErlangTotal },
57+ {processes , Processes },
5858 {ets , ETS },
5959 {atom , Atom },
6060 {binary , Bin },
6161 {code , Code },
6262 {system , System }] =
63- erlang :memory ([processes , ets , atom , binary , code , system ]),
63+ erlang :memory ([total , processes , ets , atom , binary , code , system ]),
64+
65+ Unaccounted = case VMTotal - ErlangTotal of
66+ GTZ when GTZ > 0 -> GTZ ;
67+ _LTZ -> 0
68+ end ,
6469
6570 OtherProc = Processes
6671 - ConnsReader - ConnsWriter - ConnsChannel - ConnsOther
@@ -96,9 +101,9 @@ memory() ->
96101 % % System
97102 {code , Code },
98103 {atom , Atom },
99- {other_system , System - ETS - Bin - Code - Atom },
104+ {other_system , System - ETS - Bin - Code - Atom + Unaccounted },
100105
101- {total , OsTotal }
106+ {total , VMTotal }
102107 ].
103108% % [1] - erlang:memory(processes) can be less than the sum of its
104109% % parts. Rather than display something nonsensical, just silence any
0 commit comments