@@ -117,14 +117,14 @@ get_memory_limit() ->
117
117
118
118
get_memory_use (bytes ) ->
119
119
MemoryLimit = get_memory_limit (),
120
- {get_used_memory (), case MemoryLimit > 0.0 of
120
+ {rabbit_vm : total_memory (), case MemoryLimit > 0.0 of
121
121
true -> MemoryLimit ;
122
122
false -> infinity
123
123
end };
124
124
get_memory_use (ratio ) ->
125
125
MemoryLimit = get_memory_limit (),
126
126
case MemoryLimit > 0.0 of
127
- true -> get_used_memory () / MemoryLimit ;
127
+ true -> rabbit_vm : total_memory () / MemoryLimit ;
128
128
false -> infinity
129
129
end .
130
130
@@ -268,7 +268,7 @@ parse_mem_limit(_) ->
268
268
internal_update (State = # state { memory_limit = MemLimit ,
269
269
alarmed = Alarmed ,
270
270
alarm_funs = {AlarmSet , AlarmClear } }) ->
271
- MemUsed = get_used_memory (),
271
+ MemUsed = rabbit_vm : total_memory (),
272
272
NewAlarmed = MemUsed > MemLimit ,
273
273
case {Alarmed , NewAlarmed } of
274
274
{false , true } -> emit_update_info (set , MemUsed , MemLimit ),
@@ -366,52 +366,6 @@ get_total_memory(_OsType) ->
366
366
unknown .
367
367
368
368
369
- get_ps_memory () ->
370
- OsPid = os :getpid (),
371
- Cmd = " ps -p " ++ OsPid ++ " -o rss=" ,
372
- CmdOutput = cmd (Cmd ),
373
- case re :run (CmdOutput , " [0-9]+" , [{capture , first , list }]) of
374
- {match , [Match ]} ->
375
- {ok , list_to_integer (Match ) * 1024 };
376
- _ ->
377
- {error , {unexpected_output_from_command , Cmd , CmdOutput }}
378
- end .
379
-
380
- get_system_process_resident_memory ({unix ,darwin }) ->
381
- get_ps_memory ();
382
-
383
- get_system_process_resident_memory ({unix , linux }) ->
384
- get_ps_memory ();
385
-
386
- get_system_process_resident_memory ({unix ,freebsd }) ->
387
- get_ps_memory ();
388
-
389
- get_system_process_resident_memory ({unix ,openbsd }) ->
390
- get_ps_memory ();
391
-
392
- get_system_process_resident_memory ({win32 ,_OSname }) ->
393
- OsPid = os :getpid (),
394
- Cmd = " tasklist /fi \" pid eq " ++ OsPid ++ " \" /fo LIST 2>&1 " ,
395
- CmdOutput = os :cmd (Cmd ),
396
- % % Memory usage is displayed in kilobytes
397
- % % with comma-separated thousands
398
- case re :run (CmdOutput , " Mem Usage:\\ s+([0-9,]+)\\ s+K" , [{capture , all_but_first , list }]) of
399
- {match , [Match ]} ->
400
- NoCommas = [ N || N <- Match , N =/= $, ],
401
- {ok , list_to_integer (NoCommas ) * 1024 };
402
- _ ->
403
- {error , {unexpected_output_from_command , Cmd , CmdOutput }}
404
- end ;
405
-
406
- get_system_process_resident_memory ({unix , sunos }) ->
407
- get_ps_memory ();
408
-
409
- get_system_process_resident_memory ({unix , aix }) ->
410
- get_ps_memory ();
411
-
412
- get_system_process_resident_memory (_OsType ) ->
413
- {error , not_implemented_for_os }.
414
-
415
369
% % A line looks like "Foo bar: 123456."
416
370
parse_line_mach (Line ) ->
417
371
[Name , RHS | _Rest ] = string :tokens (Line , " :" ),
@@ -494,51 +448,3 @@ read_proc_file(IoDevice, Acc) ->
494
448
{ok , Res } -> read_proc_file (IoDevice , [Res | Acc ]);
495
449
eof -> Acc
496
450
end .
497
-
498
- -spec get_memory_calculation_strategy () -> rss | erlang .
499
- get_memory_calculation_strategy () ->
500
- case application :get_env (rabbit , vm_memory_calculation_strategy , rss ) of
501
- erlang ->
502
- erlang ;
503
- rss ->
504
- rss ;
505
- UnsupportedValue ->
506
- rabbit_log :warning (
507
- " Unsupported value '~p ' for vm_memory_calculation_strategy. "
508
- " Supported values: (rss|erlang). "
509
- " Defaulting to 'rss'" ,
510
- [UnsupportedValue ]
511
- ),
512
- rss
513
- end .
514
-
515
-
516
- % % Memory reported by erlang:memory(total) is not supposed to
517
- % % be equal to the total size of all pages mapped to the emulator,
518
- % % according to http://erlang.org/doc/man/erlang.html#memory-0
519
- % % erlang:memory(total) under-reports memory usage by around 20%
520
- -spec get_used_memory () -> Bytes :: integer ().
521
- get_used_memory () ->
522
- case get_memory_calculation_strategy () of
523
- rss ->
524
- case get_system_process_resident_memory () of
525
- {ok , MemInBytes } ->
526
- MemInBytes ;
527
- {error , Reason } ->
528
- rabbit_log :debug (" Unable to get system memory used. Reason: ~p ."
529
- " Falling back to erlang memory reporting" ,
530
- [Reason ]),
531
- erlang :memory (total )
532
- end ;
533
- erlang ->
534
- erlang :memory (total )
535
- end .
536
-
537
-
538
- -spec get_system_process_resident_memory () -> {ok , Bytes :: integer ()} | {error , term ()}.
539
- get_system_process_resident_memory () ->
540
- try
541
- get_system_process_resident_memory (os :type ())
542
- catch _ :Error ->
543
- {error , {" Failed to get process resident memory" , Error }}
544
- end .
0 commit comments