pbx.c: Include filesystem cache in free memory calculation

ASTERISK-28695 #close
Reported by: Kevin Flyn

Change-Id: Ief098bb6eb77378daeace8f97ba30701c8de55b8
This commit is contained in:
Sean Bright 2020-01-16 08:32:34 -05:00
parent c5fc1bf39f
commit f5a1e8b04d
2 changed files with 12 additions and 5 deletions

View File

@ -0,0 +1,5 @@
Subject: minmemfree
The 'minmemfree' configuration option now counts memory allocated to
the filesystem cache as "free" because it is memory that is available
to the process.

View File

@ -4614,7 +4614,6 @@ static int increase_call_count(const struct ast_channel *c)
int failed = 0;
double curloadavg;
#if defined(HAVE_SYSINFO)
long curfreemem;
struct sysinfo sys_info;
#endif
@ -4634,13 +4633,16 @@ static int increase_call_count(const struct ast_channel *c)
}
#if defined(HAVE_SYSINFO)
if (option_minmemfree) {
/* Make sure that the free system memory is above the configured low watermark */
if (!sysinfo(&sys_info)) {
/* make sure that the free system memory is above the configured low watermark
* convert the amount of freeram from mem_units to MB */
curfreemem = sys_info.freeram * sys_info.mem_unit;
/* Convert the amount of available RAM from mem_units to MB. The calculation
* was done this way to avoid overflow problems */
uint64_t curfreemem = sys_info.freeram + sys_info.bufferram;
curfreemem *= sys_info.mem_unit;
curfreemem /= 1024 * 1024;
if (curfreemem < option_minmemfree) {
ast_log(LOG_WARNING, "Available system memory (~%ldMB) is below the configured low watermark (%ldMB)\n", curfreemem, option_minmemfree);
ast_log(LOG_WARNING, "Available system memory (~%" PRIu64 "MB) is below the configured low watermark (%ldMB)\n",
curfreemem, option_minmemfree);
failed = -1;
}
}