summaryrefslogtreecommitdiff
path: root/src/rabbit_memory_monitor.erl
diff options
context:
space:
mode:
authorEmile Joubert <emile@rabbitmq.com>2011-09-16 13:05:54 +0100
committerEmile Joubert <emile@rabbitmq.com>2011-09-16 13:05:54 +0100
commita432a925075122bdf6670d1b3ebca15fb1e2fc60 (patch)
treeed57dba57cf88e7f76e22d8df745a404f2d0df1b /src/rabbit_memory_monitor.erl
parentda0b00cd554e9e31009f684d5e55e3d729de7524 (diff)
downloadrabbitmq-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.erl20
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 ->