Skip to content
This repository was archived by the owner on Nov 17, 2020. It is now read-only.

Commit e30c037

Browse files
Merge pull request #238 from rabbitmq/rabbitmq-management-499-followup
Add API to get rss memory
2 parents 93df00a + 2ab03e5 commit e30c037

File tree

1 file changed

+11
-6
lines changed

1 file changed

+11
-6
lines changed

src/vm_memory_monitor.erl

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,8 @@
4040
get_memory_use/1,
4141
get_process_memory/0,
4242
get_process_memory/1,
43-
get_memory_calculation_strategy/0]).
43+
get_memory_calculation_strategy/0,
44+
get_rss_memory/0]).
4445

4546
%% for tests
4647
-export([parse_line_linux/1, parse_mem_limit/1]).
@@ -79,6 +80,7 @@
7980
-spec get_memory_use(bytes) -> {non_neg_integer(), float() | infinity};
8081
(ratio) -> float() | infinity.
8182
-spec get_cached_process_memory_and_limit() -> {non_neg_integer(), non_neg_integer()}.
83+
-spec get_rss_memory() -> non_neg_integer().
8284

8385
-export_type([memory_calculation_strategy/0]).
8486
%%----------------------------------------------------------------------------
@@ -191,7 +193,7 @@ init([MemFraction, AlarmFuns]) ->
191193
timer = TRef,
192194
alarmed = false,
193195
alarm_funs = AlarmFuns},
194-
State1 = init_state_by_os(State0),
196+
State1 = update_process_memory(init_state_by_os(State0)),
195197
{ok, set_mem_limits(State1, MemFraction)}.
196198

197199
handle_call(get_vm_memory_high_watermark, _From,
@@ -244,6 +246,10 @@ code_change(_OldVsn, State, _Extra) ->
244246
%%----------------------------------------------------------------------------
245247
%% Server Internals
246248
%%----------------------------------------------------------------------------
249+
get_rss_memory() ->
250+
TmpState = init_state_by_os(#state{}),
251+
{ok, ProcMem} = get_process_memory_using_strategy(rss, TmpState),
252+
ProcMem.
247253

248254
get_cached_process_memory_and_limit() ->
249255
try
@@ -255,7 +261,7 @@ get_cached_process_memory_and_limit() ->
255261
end.
256262

257263
get_process_memory_uncached() ->
258-
TmpState = init_state_by_os(#state{}),
264+
TmpState = update_process_memory(init_state_by_os(#state{})),
259265
TmpState#state.process_memory.
260266

261267
update_process_memory(State) ->
@@ -270,10 +276,9 @@ init_state_by_os(State = #state{os_type = undefined}) ->
270276
init_state_by_os(State0 = #state{os_type = {unix, linux}, os_pid = OsPid}) ->
271277
PageSize = get_linux_pagesize(),
272278
ProcFile = io_lib:format("/proc/~s/statm", [OsPid]),
273-
State1 = State0#state{page_size = PageSize, proc_file = ProcFile},
274-
update_process_memory(State1);
279+
State0#state{page_size = PageSize, proc_file = ProcFile};
275280
init_state_by_os(State) ->
276-
update_process_memory(State).
281+
State.
277282

278283
get_process_memory_using_strategy(rss, #state{os_type = {unix, linux},
279284
page_size = PageSize,

0 commit comments

Comments
 (0)