[Asterisk-code-review] pbx.c: Include filesystem cache in free memory calculation (asterisk[master])
Joshua Colp
asteriskteam at digium.com
Mon Jan 20 07:10:12 CST 2020
Joshua Colp has submitted this change. ( https://gerrit.asterisk.org/c/asterisk/+/13637 )
Change subject: pbx.c: Include filesystem cache in free memory calculation
......................................................................
pbx.c: Include filesystem cache in free memory calculation
ASTERISK-28695 #close
Reported by: Kevin Flyn
Change-Id: Ief098bb6eb77378daeace8f97ba30701c8de55b8
---
A doc/CHANGES-staging/minmemfree.txt
M main/pbx.c
2 files changed, 12 insertions(+), 5 deletions(-)
Approvals:
Richard Mudgett: Looks good to me, but someone else must approve
Joshua Colp: Looks good to me, but someone else must approve; Approved for Submit
George Joseph: Looks good to me, approved
diff --git a/doc/CHANGES-staging/minmemfree.txt b/doc/CHANGES-staging/minmemfree.txt
new file mode 100644
index 0000000..5762c15
--- /dev/null
+++ b/doc/CHANGES-staging/minmemfree.txt
@@ -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.
diff --git a/main/pbx.c b/main/pbx.c
index 872d674..f7b813b 100644
--- a/main/pbx.c
+++ b/main/pbx.c
@@ -4614,7 +4614,6 @@
int failed = 0;
double curloadavg;
#if defined(HAVE_SYSINFO)
- long curfreemem;
struct sysinfo sys_info;
#endif
@@ -4634,13 +4633,16 @@
}
#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;
}
}
--
To view, visit https://gerrit.asterisk.org/c/asterisk/+/13637
To unsubscribe, or for help writing mail filters, visit https://gerrit.asterisk.org/settings
Gerrit-Project: asterisk
Gerrit-Branch: master
Gerrit-Change-Id: Ief098bb6eb77378daeace8f97ba30701c8de55b8
Gerrit-Change-Number: 13637
Gerrit-PatchSet: 3
Gerrit-Owner: Sean Bright <sean.bright at gmail.com>
Gerrit-Reviewer: Friendly Automation
Gerrit-Reviewer: George Joseph <gjoseph at digium.com>
Gerrit-Reviewer: Joshua Colp <jcolp at sangoma.com>
Gerrit-Reviewer: Richard Mudgett <rmudgett at digium.com>
Gerrit-MessageType: merged
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-code-review/attachments/20200120/26474512/attachment.html>
More information about the asterisk-code-review
mailing list