Re: [PATCH] mm/hugetlb: add htlb_dissolve vmstat event
From: Jiaqi Yan
Date: Thu Nov 05 2026 - 12:51:44 EST
On Wed, Nov 4, 2026 at 6:03 PM Mark Bundschuh <mkbund@xxxxxxxxxx> wrote:
>
> Memory offline and memory failure handling dissolve free hugetlb folios
> and lower nr_hugepages. Nothing records this, so when the pool shrinks
> it is hard to tell whether that or a write to nr_hugepages caused it.
>
> Add an htlb_dissolve event, counted for each folio that
> dissolve_free_hugetlb_folio() frees.
>
> Signed-off-by: Mark Bundschuh <mkbund@xxxxxxxxxx>
> ---
> include/linux/vm_event_item.h | 1 +
> mm/hugetlb.c | 1 +
> mm/vmstat.c | 1 +
> 3 files changed, 3 insertions(+)
>
> diff --git a/include/linux/vm_event_item.h b/include/linux/vm_event_item.h
> index 2628ccda076a..822fe862e5b3 100644
> --- a/include/linux/vm_event_item.h
> +++ b/include/linux/vm_event_item.h
> @@ -71,6 +71,7 @@ enum vm_event_item { PGPGIN, PGPGOUT, PSWPIN, PSWPOUT,
> #endif
> #ifdef CONFIG_HUGETLB_PAGE
> HTLB_BUDDY_PGALLOC, HTLB_BUDDY_PGALLOC_FAIL,
> + HTLB_DISSOLVE,
> #endif
> #ifdef CONFIG_CMA
> CMA_ALLOC_SUCCESS,
> diff --git a/mm/hugetlb.c b/mm/hugetlb.c
> index da5d04edf7c1..7c79523b2a3c 100644
> --- a/mm/hugetlb.c
> +++ b/mm/hugetlb.c
> @@ -2047,6 +2047,7 @@ int dissolve_free_hugetlb_folio(struct folio *folio)
> }
>
> update_and_free_hugetlb_folio(h, folio, false);
> + count_vm_event(HTLB_DISSOLVE);
What if update_and_free_hugetlb_folio() failed / bailed out?
> return rc;
> }
> out:
> diff --git a/mm/vmstat.c b/mm/vmstat.c
> index a3e809c57f29..6282eef7074a 100644
> --- a/mm/vmstat.c
> +++ b/mm/vmstat.c
> @@ -1397,6 +1397,7 @@ const char * const vmstat_text[] = {
> #ifdef CONFIG_HUGETLB_PAGE
> [I(HTLB_BUDDY_PGALLOC)] = "htlb_buddy_alloc_success",
> [I(HTLB_BUDDY_PGALLOC_FAIL)] = "htlb_buddy_alloc_fail",
> + [I(HTLB_DISSOLVE)] = "htlb_dissolve",
> #endif
> #ifdef CONFIG_CMA
> [I(CMA_ALLOC_SUCCESS)] = "cma_alloc_success",
>
> base-commit: 05441d697f7f9a927264f4058cbbc6a03dfcac9d
> --
> 2.50.1
>
>