Message ID | 20250312000700.184573-2-npache@redhat.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | track memory used by balloon drivers | expand |
On Tue, Mar 11, 2025 at 06:06:56PM -0600, Nico Pache wrote: > Add NR_BALLOON_PAGES counter to track memory used by balloon drivers and > expose it through /proc/meminfo and other memory reporting interfaces. > > Signed-off-by: Nico Pache <npache@redhat.com> > --- > fs/proc/meminfo.c | 2 ++ > include/linux/mmzone.h | 1 + > mm/memcontrol.c | 1 + > mm/show_mem.c | 4 +++- > mm/vmstat.c | 1 + > 5 files changed, 8 insertions(+), 1 deletion(-) > > diff --git a/fs/proc/meminfo.c b/fs/proc/meminfo.c > index 8ba9b1472390..83be312159c9 100644 > --- a/fs/proc/meminfo.c > +++ b/fs/proc/meminfo.c > @@ -162,6 +162,8 @@ static int meminfo_proc_show(struct seq_file *m, void *v) > show_val_kb(m, "Unaccepted: ", > global_zone_page_state(NR_UNACCEPTED)); > #endif > + show_val_kb(m, "Balloon: ", > + global_node_page_state(NR_BALLOON_PAGES)); > > hugetlb_report_meminfo(m); > > diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h > index 9540b41894da..71d3ff19267a 100644 > --- a/include/linux/mmzone.h > +++ b/include/linux/mmzone.h > @@ -223,6 +223,7 @@ enum node_stat_item { > #ifdef CONFIG_HUGETLB_PAGE > NR_HUGETLB, > #endif > + NR_BALLOON_PAGES, > NR_VM_NODE_STAT_ITEMS > }; > > diff --git a/mm/memcontrol.c b/mm/memcontrol.c > index 4de6acb9b8ec..182b44646bfa 100644 > --- a/mm/memcontrol.c > +++ b/mm/memcontrol.c > @@ -1377,6 +1377,7 @@ static const struct memory_stat memory_stats[] = { > #ifdef CONFIG_HUGETLB_PAGE > { "hugetlb", NR_HUGETLB }, > #endif > + { "nr_balloon_pages", NR_BALLOON_PAGES }, Please remove the above counter from memcontrol.c as I don't think this memory is accounted towards memcg.
diff --git a/fs/proc/meminfo.c b/fs/proc/meminfo.c index 8ba9b1472390..83be312159c9 100644 --- a/fs/proc/meminfo.c +++ b/fs/proc/meminfo.c @@ -162,6 +162,8 @@ static int meminfo_proc_show(struct seq_file *m, void *v) show_val_kb(m, "Unaccepted: ", global_zone_page_state(NR_UNACCEPTED)); #endif + show_val_kb(m, "Balloon: ", + global_node_page_state(NR_BALLOON_PAGES)); hugetlb_report_meminfo(m); diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h index 9540b41894da..71d3ff19267a 100644 --- a/include/linux/mmzone.h +++ b/include/linux/mmzone.h @@ -223,6 +223,7 @@ enum node_stat_item { #ifdef CONFIG_HUGETLB_PAGE NR_HUGETLB, #endif + NR_BALLOON_PAGES, NR_VM_NODE_STAT_ITEMS }; diff --git a/mm/memcontrol.c b/mm/memcontrol.c index 4de6acb9b8ec..182b44646bfa 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c @@ -1377,6 +1377,7 @@ static const struct memory_stat memory_stats[] = { #ifdef CONFIG_HUGETLB_PAGE { "hugetlb", NR_HUGETLB }, #endif + { "nr_balloon_pages", NR_BALLOON_PAGES }, /* The memory events */ { "workingset_refault_anon", WORKINGSET_REFAULT_ANON }, diff --git a/mm/show_mem.c b/mm/show_mem.c index 43afb56abbd3..6af13bcd2ab3 100644 --- a/mm/show_mem.c +++ b/mm/show_mem.c @@ -260,6 +260,7 @@ static void show_free_areas(unsigned int filter, nodemask_t *nodemask, int max_z " pagetables:%lukB" " sec_pagetables:%lukB" " all_unreclaimable? %s" + " Balloon:%lukB" "\n", pgdat->node_id, K(node_page_state(pgdat, NR_ACTIVE_ANON)), @@ -285,7 +286,8 @@ static void show_free_areas(unsigned int filter, nodemask_t *nodemask, int max_z #endif K(node_page_state(pgdat, NR_PAGETABLE)), K(node_page_state(pgdat, NR_SECONDARY_PAGETABLE)), - str_yes_no(pgdat->kswapd_failures >= MAX_RECLAIM_RETRIES)); + str_yes_no(pgdat->kswapd_failures >= MAX_RECLAIM_RETRIES), + K(node_page_state(pgdat, NR_BALLOON_PAGES))); } for_each_populated_zone(zone) { diff --git a/mm/vmstat.c b/mm/vmstat.c index 16bfe1c694dd..d3b11891a942 100644 --- a/mm/vmstat.c +++ b/mm/vmstat.c @@ -1276,6 +1276,7 @@ const char * const vmstat_text[] = { #ifdef CONFIG_HUGETLB_PAGE "nr_hugetlb", #endif + "nr_balloon_pages", /* system-wide enum vm_stat_item counters */ "nr_dirty_threshold", "nr_dirty_background_threshold",
Add NR_BALLOON_PAGES counter to track memory used by balloon drivers and expose it through /proc/meminfo and other memory reporting interfaces. Signed-off-by: Nico Pache <npache@redhat.com> --- fs/proc/meminfo.c | 2 ++ include/linux/mmzone.h | 1 + mm/memcontrol.c | 1 + mm/show_mem.c | 4 +++- mm/vmstat.c | 1 + 5 files changed, 8 insertions(+), 1 deletion(-)