diff -urNp c/agent/mibgroup/hardware/memory/memory_linux.c d/agent/mibgroup/hardware/memory/memory_linux.c
--- c/agent/mibgroup/hardware/memory/memory_linux.c 2019-04-10 14:07:47.375285001 +0200
+++ d/agent/mibgroup/hardware/memory/memory_linux.c 2019-04-12 11:39:11.677314245 +0200
@@ -29,7 +29,7 @@ int netsnmp_mem_arch_load( netsnmp_cache
ssize_t bytes_read;
char *b;
unsigned long memtotal = 0, memfree = 0, memshared = 0,
- buffers = 0, cached = 0,
+ buffers = 0, cached = 0, sreclaimable = 0,
swaptotal = 0, swapfree = 0;
netsnmp_memory_info *mem;
@@ -126,6 +126,13 @@ int netsnmp_mem_arch_load( netsnmp_cache
if (first)
snmp_log(LOG_ERR, "No SwapTotal line in /proc/meminfo\n");
}
+ b = strstr(buff, "SReclaimable: ");
+ if (b)
+ sscanf(b, "SReclaimable: %lu", &sreclaimable);
+ else {
+ if (first)
+ snmp_log(LOG_ERR, "No SReclaimable line in /proc/meminfo\n");
+ }
b = strstr(buff, "SwapFree: ");
if (b)
sscanf(b, "SwapFree: %lu", &swapfree);
@@ -147,7 +154,7 @@ int netsnmp_mem_arch_load( netsnmp_cache
mem->descr = strdup("Physical memory");
mem->units = 1024;
mem->size = memtotal;
- mem->free = memfree;
+ mem->free = memfree+buffers+cached+sreclaimable;
mem->other = -1;
}
@@ -159,7 +166,7 @@ int netsnmp_mem_arch_load( netsnmp_cache
mem->descr = strdup("Virtual memory");
mem->units = 1024;
mem->size = memtotal+swaptotal;
- mem->free = memfree +swapfree;
+ mem->free = memfree+swapfree+buffers+cached+sreclaimable;
mem->other = -1;
}
@@ -182,7 +189,7 @@ int netsnmp_mem_arch_load( netsnmp_cache
if (!mem->descr)
mem->descr = strdup("Cached memory");
mem->units = 1024;
- mem->size = cached;
+ mem->size = cached+sreclaimable;
mem->free = 0; /* Report cached size/used as equal */
mem->other = -1;
}