Hi David

On 2026/5/8 16:23, David Hildenbrand (Arm) wrote:
On 5/8/26 03:53, Hao Ge wrote:
Commit 835de37603ef ("meminfo: add a per node counter for balloon
drivers") added NR_BALLOON_PAGES and exposed it in /proc/meminfo.
However, the per-node view at /sys/devices/system/node/nodeX/meminfo
was not updated, even though the counter is already tracked per-node.

Add it to node_read_meminfo() so users can see balloon usage per
NUMA node without having to parse the raw vmstat file.
Using ballooning with vNUMA is rather rare. But sure, why not.

Yeah, it's indeed not common.

We came across this while analyzing a customer's 16C 32G VM with 2 vNUMA nodes and balloon enabled.


Signed-off-by: Hao Ge <[email protected]>
---
  drivers/base/node.c | 4 +++-
  1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/base/node.c b/drivers/base/node.c
index d7647d077b66..53f4e51d6d82 100644
--- a/drivers/base/node.c
+++ b/drivers/base/node.c
@@ -513,6 +513,7 @@ static ssize_t node_read_meminfo(struct device *dev,
                             "Node %d Slab:           %8lu kB\n"
                             "Node %d SReclaimable:   %8lu kB\n"
                             "Node %d SUnreclaim:     %8lu kB\n"
+                            "Node %d Balloon:        %8lu kB\n"
  #ifdef CONFIG_TRANSPARENT_HUGEPAGE
                             "Node %d AnonHugePages:  %8lu kB\n"
                             "Node %d ShmemHugePages: %8lu kB\n"
@@ -543,7 +544,8 @@ static ssize_t node_read_meminfo(struct device *dev,
                                    node_page_state(pgdat, 
NR_KERNEL_MISC_RECLAIMABLE)),
                             nid, K(sreclaimable + sunreclaimable),
                             nid, K(sreclaimable),
-                            nid, K(sunreclaimable)
+                            nid, K(sunreclaimable),
+                            nid, K(node_page_state(pgdat, NR_BALLOON_PAGES))
  #ifdef CONFIG_TRANSPARENT_HUGEPAGE
                             ,
                             nid, K(node_page_state(pgdat, NR_ANON_THPS)),

Shouldn't it be placed under "Unaccepted:", just like for /proc/meminfo?

Good catch, thanks. I overlooked this detail -- will fix in v2.

Thanks

Best Regards

Hao


Reply via email to