]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
mm/khugepaged: improve tracepoints for mTHP orders
authorNico Pache <npache@redhat.com>
Fri, 5 Jun 2026 16:14:16 +0000 (10:14 -0600)
committerAndrew Morton <akpm@linux-foundation.org>
Sun, 21 Jun 2026 18:31:31 +0000 (11:31 -0700)
Add the order to the mm_collapse_huge_page<_swapin,_isolate> tracepoints
to give better insight into what order is being operated at for.

Link: https://lore.kernel.org/20260605161422.213817-10-npache@redhat.com
Signed-off-by: Nico Pache <npache@redhat.com>
Reviewed-by: Lorenzo Stoakes <ljs@kernel.org>
Reviewed-by: Baolin Wang <baolin.wang@linux.alibaba.com>
Acked-by: David Hildenbrand (Arm) <david@kernel.org>
Reviewed-by: Lance Yang <lance.yang@linux.dev>
Cc: Alistair Popple <apopple@nvidia.com>
Cc: Andrea Arcangeli <aarcange@redhat.com>
Cc: Anshuman Khandual <anshuman.khandual@arm.com>
Cc: Bagas Sanjaya <bagasdotme@gmail.com>
Cc: Barry Song <baohua@kernel.org>
Cc: Brendan Jackman <jackmanb@google.com>
Cc: Byungchul Park <byungchul@sk.com>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: David Rientjes <rientjes@google.com>
Cc: Dev Jain <dev.jain@arm.com>
Cc: Gregory Price <gourry@gourry.net>
Cc: "Huang, Ying" <ying.huang@linux.alibaba.com>
Cc: Hugh Dickins <hughd@google.com>
Cc: Jan Kara <jack@suse.cz>
Cc: Jann Horn <jannh@google.com>
Cc: Johannes Weiner <hannes@cmpxchg.org>
Cc: Jonathan Corbet <corbet@lwn.net>
Cc: Joshua Hahn <joshua.hahnjy@gmail.com>
Cc: Kefeng Wang <wangkefeng.wang@huawei.com>
Cc: Liam R. Howlett <liam@infradead.org>
Cc: "Masami Hiramatsu (Google)" <mhiramat@kernel.org>
Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Cc: Matthew Brost <matthew.brost@intel.com>
Cc: Matthew Wilcox (Oracle) <willy@infradead.org>
Cc: Michal Hocko <mhocko@suse.com>
Cc: Mike Rapoport <rppt@kernel.org>
Cc: Nanyong Sun <sunnanyong@huawei.com>
Cc: Pedro Falcato <pfalcato@suse.de>
Cc: Peter Xu <peterx@redhat.com>
Cc: Rafael Aquini <raquini@redhat.com>
Cc: Rakie Kim <rakie.kim@sk.com>
Cc: Randy Dunlap <rdunlap@infradead.org>
Cc: Ryan Roberts <ryan.roberts@arm.com>
Cc: Shivank Garg <shivankg@amd.com>
Cc: Steven Rostedt <rostedt@goodmis.org>
Cc: Suren Baghdasaryan <surenb@google.com>
Cc: Takashi Iwai (SUSE) <tiwai@suse.de>
Cc: Thomas Hellström <thomas.hellstrom@linux.intel.com>
Cc: Usama Arif <usamaarif642@gmail.com>
Cc: Usama Arif <usama.arif@linux.dev>
Cc: Vishal Moola (Oracle) <vishal.moola@gmail.com>
Cc: Vlastimil Babka <vbabka@suse.cz>
Cc: Wei Yang <richard.weiyang@gmail.com>
Cc: Will Deacon <will@kernel.org>
Cc: Yang Shi <yang@os.amperecomputing.com>
Cc: Zach O'Keefe <zokeefe@google.com>
Cc: Zi Yan <ziy@nvidia.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
include/trace/events/huge_memory.h
mm/khugepaged.c

index bcdc57eea2701b09efe133853af501e9b6021204..291fae364c62d271be7608f8440eb2cc5aadd5b5 100644 (file)
@@ -89,40 +89,44 @@ TRACE_EVENT(mm_khugepaged_scan_pmd,
 
 TRACE_EVENT(mm_collapse_huge_page,
 
-       TP_PROTO(struct mm_struct *mm, int isolated, int status),
+       TP_PROTO(struct mm_struct *mm, int isolated, int status, unsigned int order),
 
-       TP_ARGS(mm, isolated, status),
+       TP_ARGS(mm, isolated, status, order),
 
        TP_STRUCT__entry(
                __field(struct mm_struct *, mm)
                __field(int, isolated)
                __field(int, status)
+               __field(unsigned int, order)
        ),
 
        TP_fast_assign(
                __entry->mm = mm;
                __entry->isolated = isolated;
                __entry->status = status;
+               __entry->order = order;
        ),
 
-       TP_printk("mm=%p, isolated=%d, status=%s",
+       TP_printk("mm=%p, isolated=%d, status=%s, order=%u",
                __entry->mm,
                __entry->isolated,
-               __print_symbolic(__entry->status, SCAN_STATUS))
+               __print_symbolic(__entry->status, SCAN_STATUS),
+               __entry->order)
 );
 
 TRACE_EVENT(mm_collapse_huge_page_isolate,
 
        TP_PROTO(struct folio *folio, int none_or_zero,
-                int referenced, int status),
+                int referenced, int status, unsigned int order),
 
-       TP_ARGS(folio, none_or_zero, referenced, status),
+       TP_ARGS(folio, none_or_zero, referenced, status, order),
 
        TP_STRUCT__entry(
                __field(unsigned long, pfn)
                __field(int, none_or_zero)
                __field(int, referenced)
                __field(int, status)
+               __field(unsigned int, order)
        ),
 
        TP_fast_assign(
@@ -130,26 +134,30 @@ TRACE_EVENT(mm_collapse_huge_page_isolate,
                __entry->none_or_zero = none_or_zero;
                __entry->referenced = referenced;
                __entry->status = status;
+               __entry->order = order;
        ),
 
-       TP_printk("scan_pfn=0x%lx, none_or_zero=%d, referenced=%d, status=%s",
+       TP_printk("scan_pfn=0x%lx, none_or_zero=%d, referenced=%d, status=%s, order=%u",
                __entry->pfn,
                __entry->none_or_zero,
                __entry->referenced,
-               __print_symbolic(__entry->status, SCAN_STATUS))
+               __print_symbolic(__entry->status, SCAN_STATUS),
+               __entry->order)
 );
 
 TRACE_EVENT(mm_collapse_huge_page_swapin,
 
-       TP_PROTO(struct mm_struct *mm, int swapped_in, int referenced, int ret),
+       TP_PROTO(struct mm_struct *mm, int swapped_in, int referenced, int ret,
+                unsigned int order),
 
-       TP_ARGS(mm, swapped_in, referenced, ret),
+       TP_ARGS(mm, swapped_in, referenced, ret, order),
 
        TP_STRUCT__entry(
                __field(struct mm_struct *, mm)
                __field(int, swapped_in)
                __field(int, referenced)
                __field(int, ret)
+               __field(unsigned int, order)
        ),
 
        TP_fast_assign(
@@ -157,13 +165,15 @@ TRACE_EVENT(mm_collapse_huge_page_swapin,
                __entry->swapped_in = swapped_in;
                __entry->referenced = referenced;
                __entry->ret = ret;
+               __entry->order = order;
        ),
 
-       TP_printk("mm=%p, swapped_in=%d, referenced=%d, ret=%d",
+       TP_printk("mm=%p, swapped_in=%d, referenced=%d, ret=%d, order=%u",
                __entry->mm,
                __entry->swapped_in,
                __entry->referenced,
-               __entry->ret)
+               __entry->ret,
+               __entry->order)
 );
 
 TRACE_EVENT(mm_khugepaged_scan_file,
index a496484157a17e75dcdcf25523cc78e38edb5aad..e4872fdd3e8d64159e65f700d95cb1ffa28923ea 100644 (file)
@@ -785,13 +785,13 @@ next:
        } else {
                result = SCAN_SUCCEED;
                trace_mm_collapse_huge_page_isolate(folio, none_or_zero,
-                                                   referenced, result);
+                                                   referenced, result, order);
                return result;
        }
 out:
        release_pte_pages(pte, _pte, compound_pagelist);
        trace_mm_collapse_huge_page_isolate(folio, none_or_zero,
-                                           referenced, result);
+                                           referenced, result, order);
        return result;
 }
 
@@ -1197,7 +1197,8 @@ static enum scan_result __collapse_huge_page_swapin(struct mm_struct *mm,
 
        result = SCAN_SUCCEED;
 out:
-       trace_mm_collapse_huge_page_swapin(mm, swapped_in, referenced, result);
+       trace_mm_collapse_huge_page_swapin(mm, swapped_in, referenced, result,
+                                          order);
        return result;
 }
 
@@ -1422,7 +1423,7 @@ out_up_write:
 out_nolock:
        if (folio)
                folio_put(folio);
-       trace_mm_collapse_huge_page(mm, result == SCAN_SUCCEED, result);
+       trace_mm_collapse_huge_page(mm, result == SCAN_SUCCEED, result, order);
        return result;
 }