From 95f81126ca506f9599a893676abf13ea411abe03 Mon Sep 17 00:00:00 2001 From: "Zaiming (Stone) Shi" Date: Wed, 11 May 2022 17:27:56 +0200 Subject: [PATCH] fix(emqx_os_mon): call load_ctl (lc) to get accurate memory stats Prior to this commit, the RAM usage ratio reported by memsup is used to trigger EMQX alarm. This ratio counted system cache as 'used', so quite often a false alarm is triggered. With lc 0.3.0, the usage is caculated without cached RAM --- apps/emqx/src/emqx_os_mon.erl | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/apps/emqx/src/emqx_os_mon.erl b/apps/emqx/src/emqx_os_mon.erl index eafc8f1fd..d4766c29a 100644 --- a/apps/emqx/src/emqx_os_mon.erl +++ b/apps/emqx/src/emqx_os_mon.erl @@ -77,17 +77,11 @@ set_procmem_high_watermark(Float) -> memsup:set_procmem_high_watermark(Float). current_sysmem_percent() -> - case erlang:whereis(memsup) of - undefined -> + case load_ctl:get_memory_usage() of + 0 -> undefined; - _Pid -> - {Total, Allocated, _Worst} = memsup:get_memory_data(), - case Total =/= 0 of - true -> - erlang:floor((Allocated / Total) * 10000) / 100; - false -> - undefined - end + Ratio -> + erlang:floor(Ratio * 10000) / 100 end. %%--------------------------------------------------------------------