summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/rabbit_linux_memory.erl14
1 files changed, 8 insertions, 6 deletions
diff --git a/src/rabbit_linux_memory.erl b/src/rabbit_linux_memory.erl
index 69708519f3..d796bc64b3 100644
--- a/src/rabbit_linux_memory.erl
+++ b/src/rabbit_linux_memory.erl
@@ -35,14 +35,16 @@
-define(SERVER, ?MODULE).
-define(MEMORY_CHECK_INTERVAL, 1000).
--define(MEMORY_CHECK_FRACTION, 0.95).
+
+-record(state, {memory_fraction, alarm}).
start_link() ->
gen_server:start_link({local, ?SERVER}, ?MODULE, [], []).
init(_Args) ->
- {ok, no_alarm, ?MEMORY_CHECK_INTERVAL}.
+ Fraction = os_mon:get_env(memsup, system_memory_high_watermark),
+ {ok, #state{alarm = no_alarm, memory_fraction = Fraction}, ?MEMORY_CHECK_INTERVAL}.
handle_call(_Request, _From, State) ->
@@ -63,12 +65,12 @@ handle_info(_Info, State) ->
- dict:fetch("Buffers", Dict)
- dict:fetch("Cached", Dict),
if
- MemUsed / MemTotal > ?MEMORY_CHECK_FRACTION ->
- NewState = alarm;
+ MemUsed / MemTotal > State#state.memory_fraction ->
+ NewState = State#state{alarm = alarm};
true ->
- NewState = no_alarm
+ NewState = State#state{alarm = no_alarm}
end,
- case {State, NewState} of
+ case {State#state.alarm, NewState#state.alarm} of
{no_alarm, alarm} ->
alarm_handler:set_alarm({system_memory_high_watermark, []}),
ok;