diff options
author | Emile Joubert <emile@rabbitmq.com> | 2011-09-16 13:05:54 +0100 |
---|---|---|
committer | Emile Joubert <emile@rabbitmq.com> | 2011-09-16 13:05:54 +0100 |
commit | a432a925075122bdf6670d1b3ebca15fb1e2fc60 (patch) | |
tree | ed57dba57cf88e7f76e22d8df745a404f2d0df1b /src/rabbit_memory_monitor.erl | |
parent | da0b00cd554e9e31009f684d5e55e3d729de7524 (diff) | |
download | rabbitmq-server-a432a925075122bdf6670d1b3ebca15fb1e2fc60.tar.gz |
Makes queues sensitive to changes in RAM
Diffstat (limited to 'src/rabbit_memory_monitor.erl')
-rw-r--r-- | src/rabbit_memory_monitor.erl | 20 |
1 files changed, 8 insertions, 12 deletions
diff --git a/src/rabbit_memory_monitor.erl b/src/rabbit_memory_monitor.erl index 996b0a98..e8d2d1d1 100644 --- a/src/rabbit_memory_monitor.erl +++ b/src/rabbit_memory_monitor.erl @@ -36,7 +36,6 @@ queue_durations, %% ets #process queue_duration_sum, %% sum of all queue_durations queue_duration_count, %% number of elements in sum - memory_limit, %% how much memory we intend to use desired_duration %% the desired queue duration }). @@ -110,13 +109,6 @@ stop() -> %%---------------------------------------------------------------------------- init([]) -> - MemoryLimit = trunc(?MEMORY_LIMIT_SCALING * - (try - vm_memory_monitor:get_memory_limit() - catch - exit:{noproc, _} -> ?MEMORY_SIZE_FOR_DISABLED_VMM - end)), - {ok, TRef} = timer:apply_interval(?DEFAULT_UPDATE_INTERVAL, ?SERVER, update, []), @@ -127,7 +119,6 @@ init([]) -> queue_durations = Ets, queue_duration_sum = 0.0, queue_duration_count = 0, - memory_limit = MemoryLimit, desired_duration = infinity })}. handle_call({report_ram_duration, Pid, QueueDuration}, From, @@ -223,12 +214,17 @@ internal_deregister(Pid, Demonitor, queue_duration_count = Count1 } end. -internal_update(State = #state { memory_limit = Limit, - queue_durations = Durations, +internal_update(State = #state { queue_durations = Durations, desired_duration = DesiredDurationAvg, queue_duration_sum = Sum, queue_duration_count = Count }) -> - MemoryRatio = erlang:memory(total) / Limit, + MemoryLimit = trunc(?MEMORY_LIMIT_SCALING * + (try + vm_memory_monitor:get_memory_limit() + catch + exit:{noproc, _} -> ?MEMORY_SIZE_FOR_DISABLED_VMM + end)), + MemoryRatio = erlang:memory(total) / MemoryLimit, DesiredDurationAvg1 = case MemoryRatio < ?LIMIT_THRESHOLD orelse Count == 0 of true -> |