diff options
| -rw-r--r-- | src/file_handle_cache.erl | 2 | ||||
| -rw-r--r-- | src/rabbit_memory_monitor.erl | 14 | ||||
| -rw-r--r-- | src/vm_memory_monitor.erl | 17 |
3 files changed, 19 insertions, 14 deletions
diff --git a/src/file_handle_cache.erl b/src/file_handle_cache.erl index 5a03bd93cb..d4f83be513 100644 --- a/src/file_handle_cache.erl +++ b/src/file_handle_cache.erl @@ -1040,7 +1040,7 @@ tune_read_buffer_limit(Handle = #handle{read_buffer = Buf, end, Lim)}. maybe_reduce_read_cache(SparedRefs) -> - case rabbit_memory_monitor:memory_use(bytes) of + case vm_memory_monitor:get_memory_use(bytes) of {_, infinity} -> ok; {MemUse, MemLimit} when MemUse < MemLimit -> ok; {MemUse, MemLimit} -> reduce_read_cache( diff --git a/src/rabbit_memory_monitor.erl b/src/rabbit_memory_monitor.erl index de0b50ccdc..06ffb77b67 100644 --- a/src/rabbit_memory_monitor.erl +++ b/src/rabbit_memory_monitor.erl @@ -89,18 +89,8 @@ conserve_resources(Pid, disk, {_, Conserve, Node}) when node(Pid) =:= Node -> conserve_resources(_Pid, _Source, _Conserve) -> ok. -memory_use(bytes) -> - MemoryLimit = vm_memory_monitor:get_memory_limit(), - {erlang:memory(total), case MemoryLimit > 0.0 of - true -> MemoryLimit; - false -> infinity - end}; -memory_use(ratio) -> - MemoryLimit = vm_memory_monitor:get_memory_limit(), - case MemoryLimit > 0.0 of - true -> erlang:memory(total) / MemoryLimit; - false -> infinity - end. +memory_use(Type) -> + vm_memory_monitor:get_memory_use(Type). %%---------------------------------------------------------------------------- %% Gen_server callbacks diff --git a/src/vm_memory_monitor.erl b/src/vm_memory_monitor.erl index 7c44cb8e12..9b401748e0 100644 --- a/src/vm_memory_monitor.erl +++ b/src/vm_memory_monitor.erl @@ -35,7 +35,7 @@ -export([get_total_memory/0, get_vm_limit/0, get_check_interval/0, set_check_interval/1, get_vm_memory_high_watermark/0, set_vm_memory_high_watermark/1, - get_memory_limit/0]). + get_memory_limit/0, get_memory_use/1]). %% for tests -export([parse_line_linux/1]). @@ -73,6 +73,8 @@ -spec get_vm_memory_high_watermark() -> vm_memory_high_watermark(). -spec set_vm_memory_high_watermark(vm_memory_high_watermark()) -> 'ok'. -spec get_memory_limit() -> non_neg_integer(). +-spec get_memory_use(bytes) -> {non_neg_integer(), float() | infinity}; + (ratio) -> float() | infinity. %%---------------------------------------------------------------------------- %% Public API @@ -106,6 +108,19 @@ set_vm_memory_high_watermark(Fraction) -> get_memory_limit() -> gen_server:call(?MODULE, get_memory_limit, infinity). +get_memory_use(bytes) -> + MemoryLimit = get_memory_limit(), + {erlang:memory(total), case MemoryLimit > 0.0 of + true -> MemoryLimit; + false -> infinity + end}; +get_memory_use(ratio) -> + MemoryLimit = get_memory_limit(), + case MemoryLimit > 0.0 of + true -> erlang:memory(total) / MemoryLimit; + false -> infinity + end. + %%---------------------------------------------------------------------------- %% gen_server callbacks %%---------------------------------------------------------------------------- |
