Skip to content

Commit 904e527

Browse files
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
2 parents 92702e4 + 1b97635 commit 904e527

File tree

2 files changed

+27
-7
lines changed

2 files changed

+27
-7
lines changed

docs/rabbitmq.config.example

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -246,6 +246,10 @@
246246
%%
247247
%% {memory_monitor_interval, 2500},
248248

249+
%% The total memory available can be calculated from the OS resources
250+
%% - default option - or provided as a configuration parameter:
251+
%% {total_memory_available_override_value, "5000MB"},
252+
249253
%% Set disk free limit (in bytes). Once free disk space reaches this
250254
%% lower bound, a disk alarm will be set - see the documentation
251255
%% listed above for more details.

src/vm_memory_monitor.erl

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -81,13 +81,20 @@
8181
%%----------------------------------------------------------------------------
8282

8383
get_total_memory() ->
84-
try
85-
get_total_memory(os:type())
86-
catch _:Error ->
87-
rabbit_log:warning(
88-
"Failed to get total system memory: ~n~p~n~p~n",
89-
[Error, erlang:get_stacktrace()]),
90-
unknown
84+
case application:get_env(rabbit, total_memory_available_override_value) of
85+
{ok, Value} ->
86+
case rabbit_resource_monitor_misc:parse_information_unit(Value) of
87+
{ok, ParsedTotal} ->
88+
ParsedTotal;
89+
{error, parse_error} ->
90+
rabbit_log:warning(
91+
"The override value for the total memmory available is "
92+
"not a valid value: ~p, getting total from the system.~n",
93+
[Value]),
94+
get_total_memory_from_os()
95+
end;
96+
undefined ->
97+
get_total_memory_from_os()
9198
end.
9299

93100
get_vm_limit() -> get_vm_limit(os:type()).
@@ -179,6 +186,15 @@ code_change(_OldVsn, State, _Extra) ->
179186
%%----------------------------------------------------------------------------
180187
%% Server Internals
181188
%%----------------------------------------------------------------------------
189+
get_total_memory_from_os() ->
190+
try
191+
get_total_memory(os:type())
192+
catch _:Error ->
193+
rabbit_log:warning(
194+
"Failed to get total system memory: ~n~p~n~p~n",
195+
[Error, erlang:get_stacktrace()]),
196+
unknown
197+
end.
182198

183199
set_mem_limits(State, MemLimit) ->
184200
case erlang:system_info(wordsize) of

0 commit comments

Comments
 (0)