File 0728-os_mon-Fix-use-available-mem-for-system_memory_high_.patch of Package erlang
From 4b0ef3f79643dc038d1cbf34740a9aabccb97a4e Mon Sep 17 00:00:00 2001
From: Maas-Maarten Zeeman <mmzeeman@xs4all.nl>
Date: Tue, 3 Sep 2024 15:10:47 +0200
Subject: [PATCH 1/2] os_mon: Fix use available mem for
system_memory_high_watermark alarm
---
lib/os_mon/c_src/memsup.c | 13 +++++++++----
lib/os_mon/test/memsup_SUITE.erl | 3 +++
2 files changed, 12 insertions(+), 4 deletions(-)
diff --git a/lib/os_mon/c_src/memsup.c b/lib/os_mon/c_src/memsup.c
index 96f662da19..ad4a193d99 100644
--- a/lib/os_mon/c_src/memsup.c
+++ b/lib/os_mon/c_src/memsup.c
@@ -446,9 +446,10 @@ get_extended_mem_apple(memory_ext *me) {
}
me->free = vm_stat.free_count * mach_page_size;
+ me->available = (vm_stat.inactive_count + vm_stat.free_count) * mach_page_size;
me->total = total_memory_size;
me->pagesize = 1;
- me->flag = F_MEM_TOTAL | F_MEM_FREE;
+ me->flag = F_MEM_TOTAL | F_MEM_FREE | F_MEM_AVAIL;
}
#endif
@@ -508,7 +509,11 @@ get_basic_mem(unsigned long *tot, unsigned long *used, unsigned long *pagesize){
}
*tot = me.total;
*pagesize = me.pagesize;
- *used = me.total - me.free;
+ if (me.flag & F_MEM_AVAIL) {
+ *used = me.total - me.available;
+ } else {
+ *used = me.total - me.free;
+ }
#elif defined(BSD4_4)
struct vmtotal vt;
long pgsz;
@@ -535,9 +540,9 @@ fail:
#elif defined(__APPLE__)
{
memory_ext me;
- me.free = 0;
+ me.available = 0;
get_extended_mem_apple(&me);
- *used = me.total - me.free;
+ *used = me.total - me.available;
*tot = total_memory_size;
*pagesize = 1;
}
diff --git a/lib/os_mon/test/memsup_SUITE.erl b/lib/os_mon/test/memsup_SUITE.erl
index 1f66ea0afa..262d3a6696 100644
--- a/lib/os_mon/test/memsup_SUITE.erl
+++ b/lib/os_mon/test/memsup_SUITE.erl
@@ -758,6 +758,9 @@ improved_system_memory_data(Config) when is_list(Config) ->
_ ->
{comment, "No available_memory present in result"}
end;
+ {unix,darwin} ->
+ true = AvailableMemoryPresent,
+ {comment, "available_memory present in result"};
_ ->
ok
end.
--
2.43.0