]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
Add MemAvailable to node memory stats
authorTakashi Kajinami <kajinamit@oss.nttdata.com>
Wed, 15 Apr 2026 17:17:56 +0000 (02:17 +0900)
committerPeter Krempa <pkrempa@redhat.com>
Fri, 17 Apr 2026 15:05:39 +0000 (17:05 +0200)
MemAvailable was introduced in kernel version 3.10 (and it was even
backported to older kernels in some distributions) and has been
a quite popular method to estimate the available method (totally fully
amount + reclaimable amount).

Signed-off-by: Takashi Kajinami <kajinamit@oss.nttdata.com>
Reviewed-by: Peter Krempa <pkrempa@redhat.com>
include/libvirt/libvirt-host.h
src/libvirt-host.c
src/util/virhostmem.c

index 398b40c35aa52dfb84f761effbc465c1c9f89e30..5b448e7954f9d26407a69f0bf50d9e49ca70bd70 100644 (file)
@@ -364,6 +364,16 @@ typedef enum {
  */
 # define VIR_NODE_MEMORY_STATS_CACHED "cached"
 
+/**
+ * VIR_NODE_MEMORY_STATS_AVAILABLE:
+ *
+ * Macro for the available memory: On Linux, it is only returned in case of
+ * VIR_NODE_MEMORY_STATS_ALL_CELLS.
+ *
+ * Since: 12.3.0
+ */
+# define VIR_NODE_MEMORY_STATS_AVAILABLE "available"
+
 /**
  * virNodeMemoryStats:
  *
index da75f5f30b4994bec006b69055a9f29188c8d53a..6b4345b09d1ffc14cd712dcb11bf3f3d602d6b59 100644 (file)
@@ -633,6 +633,8 @@ virNodeGetCPUStats(virConnectPtr conn,
  *     The buffers memory usage.(KB)
  * VIR_NODE_MEMORY_STATS_CACHED:
  *     The cached memory usage.(KB)
+ * VIR_NODE_MEMORY_STATS_AVAILABLE:
+ *     The available memory usage.(KB)
  *
  * Returns -1 in case of error, 0 in case of success.
  *
index a7027af835f868ef42091414d33e3631b3aa561a..09a322fdea5dd011ca502ccb1648a98eb9ec457c 100644 (file)
@@ -136,7 +136,7 @@ virHostMemGetStatsFreeBSD(virNodeMemoryStatsPtr params,
 # define SYSFS_MEMORY_SHARED_PATH "/sys/kernel/mm/ksm"
 # define SYSFS_THREAD_SIBLINGS_LIST_LENGTH_MAX 8192
 
-# define LINUX_NB_MEMORY_STATS_ALL 4
+# define LINUX_NB_MEMORY_STATS_ALL 5
 # define LINUX_NB_MEMORY_STATS_CELL 2
 
 static int
@@ -159,6 +159,7 @@ virHostMemGetStatsLinux(FILE *meminfo,
         {"MemFree:",  VIR_NODE_MEMORY_STATS_FREE},
         {"Buffers:",  VIR_NODE_MEMORY_STATS_BUFFERS},
         {"Cached:",   VIR_NODE_MEMORY_STATS_CACHED},
+        {"MemAvailable:",   VIR_NODE_MEMORY_STATS_AVAILABLE},
         {NULL,        NULL}
     };