Packages

nerves_system_br

1.31.7
1.34.0 1.33.9 1.33.8 1.33.7 1.33.6 1.33.5 1.33.4 1.33.3 1.33.2 1.33.1 1.33.0 1.32.5 1.32.4 1.32.3 1.32.2 1.32.1 1.32.0 1.31.7 1.31.6 1.31.5 1.31.4 1.31.3 1.31.2 1.31.1 1.31.0 1.30.1 1.30.0 1.29.3 1.29.2 1.29.1 1.29.0 1.28.3 1.28.2 1.28.1 1.28.0 1.27.3 1.27.2 1.27.1 1.27.0 1.26.1 1.26.0 1.25.3 1.25.2 1.25.1 1.25.0 1.24.1 1.24.0 1.23.3 1.23.2 1.23.1 1.23.0 1.22.8 1.22.7 1.22.6 1.22.5 1.22.4 1.22.3 1.22.2 1.22.1 1.22.0 1.21.6 1.21.5 1.21.4 1.21.3 1.21.2 1.21.1 1.21.0 1.20.6 1.20.5 1.20.4 1.20.3 1.20.2 1.20.1 1.20.0 1.19.1 1.19.0 1.18.6 1.18.5 1.18.4 1.18.3 1.18.2 1.18.1 1.18.0 1.17.4 1.17.3 1.17.2 1.17.1 1.17.0 1.16.5 1.16.4 1.16.3 1.16.2 1.16.1 1.16.0 1.15.2 1.15.1 1.15.0 1.14.5 1.14.4 1.14.3 1.14.2 1.14.1 1.14.0 1.13.8 1.13.7 1.13.6 1.13.5 1.13.4 1.13.3 1.13.2 1.13.1 1.13.0 1.12.4 1.12.3 1.12.2 1.12.1 1.12.0 1.12.0-rc.0 1.11.4 1.11.3 1.11.2 1.11.1 1.11.0 1.10.3 1.10.2 1.10.1 1.10.0 1.9.5 1.9.4 1.9.3 1.9.2 1.9.1 1.9.0 1.8.6 1.8.5 1.8.4 1.8.3 1.8.2 1.8.1 1.8.0 1.7.3 1.7.2 1.7.1 1.7.0 1.6.8 1.6.7 1.6.6 1.6.5 1.6.4 1.6.3 1.6.2 1.6.1 1.6.0 1.5.6 1.5.5 1.5.4 1.5.3 1.5.2 1.5.1 1.5.0 1.4.5 1.4.4 1.4.3 1.4.2 1.4.1 1.4.0 1.3.2 1.3.1 1.3.0 1.2.2 1.2.1 1.2.0 1.1.0 1.0.1 1.0.0 1.0.0-rc.4 1.0.0-rc.3 1.0.0-rc.2 1.0.0-rc.1 1.0.0-rc.0 0.17.0 0.16.4 0.16.3 0.16.2 0.16.1-2017-11 0.16.0-2017-11 0.15.1 0.15.0 0.14.1 0.14.0 0.13.9 0.13.8 0.13.7 0.13.6 0.13.5 0.13.4 retired 0.13.3 0.13.2 0.13.0 0.12.1 0.12.0 0.11.1 0.11.0 0.10.1 0.10.0 0.9.4 0.9.3 0.9.2 0.9.1 0.9.0 0.8.2 0.8.1 0.8.0 0.7.0 0.6.1 0.6.0 0.5.2 0.5.1 0.5.0 0.4.2 0.4.1

Nerves System BR - Buildroot based build platform for Nerves Systems

Current section

Files

Jump to
nerves_system_br patches buildroot 0017-erlang-use-available-memory-for-used-memory-calculat.patch
Raw

patches/buildroot/0017-erlang-use-available-memory-for-used-memory-calculat.patch

From 7732064ffb22f61ef0e93f3f8eec600c27766207 Mon Sep 17 00:00:00 2001
From: Frank Hunleth <fhunleth@troodon-software.com>
Date: Mon, 7 Jul 2025 14:23:04 -0400
Subject: [PATCH] erlang: use available memory for used memory calculation
---
...able-memory-on-Linux-for-used-memory.patch | 79 +++++++++++++++++++
1 file changed, 79 insertions(+)
create mode 100644 package/erlang/27.3.4.3/0002-memsup-use-available-memory-on-Linux-for-used-memory.patch
diff --git a/package/erlang/27.3.4.3/0002-memsup-use-available-memory-on-Linux-for-used-memory.patch b/package/erlang/27.3.4.3/0002-memsup-use-available-memory-on-Linux-for-used-memory.patch
new file mode 100644
index 0000000000..9922e5c58d
--- /dev/null
+++ b/package/erlang/27.3.4.3/0002-memsup-use-available-memory-on-Linux-for-used-memory.patch
@@ -0,0 +1,79 @@
+From 3ee931e8acf916653bdc329f0543d415ccdc7326 Mon Sep 17 00:00:00 2001
+From: Frank Hunleth <fhunleth@troodon-software.com>
+Date: Sat, 5 Jul 2025 21:47:29 -0400
+Subject: [PATCH] memsup: use available memory on Linux for used memory
+ calculation
+
+This updates `get_basic_mem` to improve the used memory calculation on
+Linux since the less accurate `__SC_AVPHYS_PAGES` code started being
+used.
+
+Since Linux is quick to use available DRAM as a filesystem cache, the
+`system_memory_high_watermark` alarm was getting set even though there
+was plenty of memory.
+
+Since `memsup:get_memory_data()` returns the values checked for the
+alarm, the following shows why the alarm was incorrectly set. In it, it
+shows about 222 MB out of 254 MB in use, but if you look at the
+`available_memory`, there's more like 254 MB - 114 MB = 140 MB in use.
+
+```
+> memsup:get_memory_data().
+{254287872, 222711808, {<0.3654.0>, 3819324}}
+> memsup:get_system_memory_data().
+[{available_memory,114470912},
+ {buffered_memory,139264},
+ {cached_memory,89665536},
+ {free_memory,33357824},
+ {free_swap,0},
+ {system_total_memory,254287872},
+ {total_memory,254287872},
+ {total_swap,0}]
+```
+
+With the change, the second element from `get_memory_data()` is much
+lower since it subtracts `available_memory` and the memory threshold
+isn't exceeded.
+---
+ lib/os_mon/c_src/memsup.c | 18 +++++++++---------
+ 1 file changed, 9 insertions(+), 9 deletions(-)
+
+diff --git a/lib/os_mon/c_src/memsup.c b/lib/os_mon/c_src/memsup.c
+index 2e9f337070..1e80e4beb3 100644
+--- a/lib/os_mon/c_src/memsup.c
++++ b/lib/os_mon/c_src/memsup.c
+@@ -493,15 +493,7 @@ get_extended_mem(memory_ext *me) {
+
+ static void
+ get_basic_mem(unsigned long *tot, unsigned long *used, unsigned long *pagesize){
+-#if defined(_SC_AVPHYS_PAGES) /* Does this exist on others than Solaris2? */
+- unsigned long avPhys, phys, pgSz;
+-
+- phys = sysconf(_SC_PHYS_PAGES);
+- avPhys = sysconf(_SC_AVPHYS_PAGES);
+- *used = (phys - avPhys);
+- *tot = phys;
+- *pagesize = sysconf(_SC_PAGESIZE);
+-#elif defined(__linux__) && !defined(_SC_AVPHYS_PAGES)
++#if defined(__linux__)
+ memory_ext me;
+ if (get_mem_procfs(&me) < 0) {
+ print_error("ProcFS read error");
+@@ -514,6 +506,14 @@ get_basic_mem(unsigned long *tot, unsigned long *used, unsigned long *pagesize){
+ } else {
+ *used = me.total - me.free;
+ }
++#elif defined(_SC_AVPHYS_PAGES)
++ unsigned long avPhys, phys, pgSz;
++
++ phys = sysconf(_SC_PHYS_PAGES);
++ avPhys = sysconf(_SC_AVPHYS_PAGES);
++ *used = (phys - avPhys);
++ *tot = phys;
++ *pagesize = sysconf(_SC_PAGESIZE);
+ #elif defined(BSD4_4)
+ struct vmtotal vt;
+ long pgsz;
+--
+2.43.0
+
--
2.43.0