diff options
| -rw-r--r-- | Makefile | 2 | ||||
| -rw-r--r-- | src/vm_memory_monitor.erl | 23 |
2 files changed, 21 insertions, 4 deletions
@@ -16,7 +16,7 @@ define PROJECT_ENV {ssl_options, []}, {vm_memory_high_watermark, 0.4}, {vm_memory_high_watermark_paging_ratio, 0.5}, - {vm_memory_use_process_rss, true}, + {vm_memory_calculation_strategy, rss}, {memory_monitor_interval, 2500}, {disk_free_limit, 50000000}, %% 50MB {msg_store_index_module, rabbit_msg_store_ets_index}, diff --git a/src/vm_memory_monitor.erl b/src/vm_memory_monitor.erl index 0bbca55eed..6731466c17 100644 --- a/src/vm_memory_monitor.erl +++ b/src/vm_memory_monitor.erl @@ -495,6 +495,23 @@ read_proc_file(IoDevice, Acc) -> eof -> Acc end. +-spec get_memory_calculation_strategy() -> rss | erlang. +get_memory_calculation_strategy() -> + case application:get_env(rabbit, vm_memory_calculation_strategy, rss) of + erlang -> + erlang; + rss -> + rss; + UnsupportedValue -> + rabbit_log:warning( + "Unsupported value '~p' for vm_memory_calculation_strategy. " + "Supported values: (rss|erlang). " + "Defaulting to 'rss'", + [UnsupportedValue] + ), + rss + end. + %% Memory reported by erlang:memory(total) is not supposed to %% be equal to the total size of all pages mapped to the emulator, @@ -502,8 +519,8 @@ read_proc_file(IoDevice, Acc) -> %% erlang:memory(total) under-reports memory usage by around 20% -spec get_used_memory() -> Bytes :: integer(). get_used_memory() -> - case application:get_env(rabbit, vm_memory_use_process_rss, false) of - true -> + case get_memory_calculation_strategy() of + rss -> case get_system_process_resident_memory() of {ok, MemInBytes} -> MemInBytes; @@ -513,7 +530,7 @@ get_used_memory() -> [Reason]), erlang:memory(total) end; - false -> + erlang -> erlang:memory(total) end. |
