mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-07-21 22:47:51 -04:00
mm/khugepaged: improve tracepoints for mTHP orders
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>
This commit is contained in:
committed by
Andrew Morton
parent
b5b8b329c4
commit
ceaa0b6413
@@ -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,
|
||||
|
||||
@@ -785,13 +785,13 @@ static enum scan_result __collapse_huge_page_isolate(struct vm_area_struct *vma,
|
||||
} 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 @@ static enum scan_result collapse_huge_page(struct mm_struct *mm, unsigned long s
|
||||
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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user