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 | bb6fdac070867685f6adb37f008a870fb1ecf8dc (patch) | |
| tree | ed57dba57cf88e7f76e22d8df745a404f2d0df1b /src | |
| parent | 13a039ff9250927935a94dc4a741338d72bb6911 (diff) | |
| download | rabbitmq-server-git-bb6fdac070867685f6adb37f008a870fb1ecf8dc.tar.gz | |
Makes queues sensitive to changes in RAM
Diffstat (limited to 'src')
| -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 996b0a980f..e8d2d1d1bc 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 -> |
