Re: [PATCH v4 3/7] mm/khugepaged: introduce a count_collapse_event() helper

Pedro Falcato <[email protected]>
Newsgroups org.kernel.vger.linux-doc,org.kernel.vger.linux-kernel,org.kvack.linux-mm
Message-ID <anw80fOYcFcLsGV_@pedro-suse>
On Tue, Aug 11, 2026 at 06:48:35AM -0600, Nico Pache (Red Hat) wrote:
> Provide a simple helper function to help reduce a often used, and
> duplicate pattern across the khugepaged code.
> 
> When collapsing to a PMD we need to record a vm_event and the mTHP_stat
> event. When doing mTHP collapse we only update the mTHP stat.
> 
> Reviewed-by: Baolin Wang <[email protected]>
> Acked-by: David Hildenbrand (Arm) <[email protected]>
> Acked-by: Usama Arif <[email protected]>
> Signed-off-by: Nico Pache (Red Hat) <[email protected]>
> ---
>  mm/khugepaged.c | 42 +++++++++++++++++++++---------------------
>  1 file changed, 21 insertions(+), 21 deletions(-)
> 
> diff --git a/mm/khugepaged.c b/mm/khugepaged.c
> index 8babd4c97db6..cae510aa2914 100644
> --- a/mm/khugepaged.c
> +++ b/mm/khugepaged.c
> @@ -688,6 +688,14 @@ static inline bool folio_pte_referenced(struct folio *folio,
>  	return pte_young(pteval) || mmu_notifier_test_young(vma->vm_mm, addr);
>  }
>  
> +static void count_collapse_event(unsigned int order, enum vm_event_item vm_event,
> +		enum mthp_stat_item mthp_event)
> +{
> +	if (is_pmd_order(order))
> +		count_vm_event(vm_event);
> +	count_mthp_stat(order, mthp_event);

Maintaining two counters for the same thing is Peak Tech Debt. Would it be
somehow possible to redirect /proc/vmstat to PMD_ORDER mTHP stats?

> +}
> +
>  static enum scan_result __collapse_huge_page_isolate(struct vm_area_struct *vma,
>  		unsigned long start_addr, pte_t *pte, struct collapse_control *cc,
>  		unsigned int order, struct list_head *compound_pagelist)
> @@ -708,9 +716,8 @@ static enum scan_result __collapse_huge_page_isolate(struct vm_area_struct *vma,
>  		if (pte_none_or_zero(pteval)) {
>  			if (++none_or_zero > max_ptes_none) {
>  				result = SCAN_EXCEED_NONE_PTE;
> -				if (is_pmd_order(order))
> -					count_vm_event(THP_SCAN_EXCEED_NONE_PTE);
> -				count_mthp_stat(order, MTHP_STAT_COLLAPSE_EXCEED_NONE);
> +				count_collapse_event(order, THP_SCAN_EXCEED_NONE_PTE,
> +						     MTHP_STAT_COLLAPSE_EXCEED_NONE);

This is nicer than open coding the add, though. One step at a time :)

Reviewed-by: Pedro Falcato <[email protected]>

-- 
Pedro
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.