summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMichael Klishin <michael@novemberain.com>2017-05-26 22:45:16 +0300
committerGitHub <noreply@github.com>2017-05-26 22:45:16 +0300
commit904e5274b09eb55dfbad67de0a48e0f09410e134 (patch)
tree8ad32ef993062d1809916c29667240297dc17a7b /src
parent92702e4c5093ecb4ad911603c2357ccadebc52e9 (diff)
parent1b976358b62db552f70a0f6c273431895e3cddb0 (diff)
downloadrabbitmq-server-git-904e5274b09eb55dfbad67de0a48e0f09410e134.tar.gz
Merge pull request #1234 from rabbitmq/rabbitmq-server-1224
Introduce a new config parameter, total_memory_available_override_value, to override total amount of memory available to the node
Diffstat (limited to 'src')
-rw-r--r--src/vm_memory_monitor.erl30
1 files changed, 23 insertions, 7 deletions
diff --git a/src/vm_memory_monitor.erl b/src/vm_memory_monitor.erl
index 9b401748e0..ba324d649e 100644
--- a/src/vm_memory_monitor.erl
+++ b/src/vm_memory_monitor.erl
@@ -81,13 +81,20 @@
%%----------------------------------------------------------------------------
get_total_memory() ->
- try
- get_total_memory(os:type())
- catch _:Error ->
- rabbit_log:warning(
- "Failed to get total system memory: ~n~p~n~p~n",
- [Error, erlang:get_stacktrace()]),
- unknown
+ case application:get_env(rabbit, total_memory_available_override_value) of
+ {ok, Value} ->
+ case rabbit_resource_monitor_misc:parse_information_unit(Value) of
+ {ok, ParsedTotal} ->
+ ParsedTotal;
+ {error, parse_error} ->
+ rabbit_log:warning(
+ "The override value for the total memmory available is "
+ "not a valid value: ~p, getting total from the system.~n",
+ [Value]),
+ get_total_memory_from_os()
+ end;
+ undefined ->
+ get_total_memory_from_os()
end.
get_vm_limit() -> get_vm_limit(os:type()).
@@ -179,6 +186,15 @@ code_change(_OldVsn, State, _Extra) ->
%%----------------------------------------------------------------------------
%% Server Internals
%%----------------------------------------------------------------------------
+get_total_memory_from_os() ->
+ try
+ get_total_memory(os:type())
+ catch _:Error ->
+ rabbit_log:warning(
+ "Failed to get total system memory: ~n~p~n~p~n",
+ [Error, erlang:get_stacktrace()]),
+ unknown
+ end.
set_mem_limits(State, MemLimit) ->
case erlang:system_info(wordsize) of