On Wed, Sep 7, 2022 at 7:45 AM Zach O'Keefe <zokeefe@xxxxxxxxxx> wrote: > > Add huge_memory:trace_mm_khugepaged_scan_file tracepoint to > hpage_collapse_scan_file() analogously to hpage_collapse_scan_pmd(). > While this change is targeted at debugging MADV_COLLAPSE pathway, the > "mm_khugepaged" prefix is retained for symmetry with > huge_memory:trace_mm_khugepaged_scan_pmd, which retains it's legacy name > to prevent changing kernel ABI as much as possible. > > Signed-off-by: Zach O'Keefe <zokeefe@xxxxxxxxxx> Reviewed-by: Yang Shi <shy828301@xxxxxxxxx> > --- > include/trace/events/huge_memory.h | 34 ++++++++++++++++++++++++++++++ > mm/khugepaged.c | 3 ++- > 2 files changed, 36 insertions(+), 1 deletion(-) > > diff --git a/include/trace/events/huge_memory.h b/include/trace/events/huge_memory.h > index df33453b70fc..935af4947917 100644 > --- a/include/trace/events/huge_memory.h > +++ b/include/trace/events/huge_memory.h > @@ -169,5 +169,39 @@ TRACE_EVENT(mm_collapse_huge_page_swapin, > __entry->ret) > ); > > +TRACE_EVENT(mm_khugepaged_scan_file, > + > + TP_PROTO(struct mm_struct *mm, struct page *page, const char *filename, > + int present, int swap, int result), > + > + TP_ARGS(mm, page, filename, present, swap, result), > + > + TP_STRUCT__entry( > + __field(struct mm_struct *, mm) > + __field(unsigned long, pfn) > + __string(filename, filename) > + __field(int, present) > + __field(int, swap) > + __field(int, result) > + ), > + > + TP_fast_assign( > + __entry->mm = mm; > + __entry->pfn = page ? page_to_pfn(page) : -1; > + __assign_str(filename, filename); > + __entry->present = present; > + __entry->swap = swap; > + __entry->result = result; > + ), > + > + TP_printk("mm=%p, scan_pfn=0x%lx, filename=%s, present=%d, swap=%d, result=%s", > + __entry->mm, > + __entry->pfn, > + __get_str(filename), > + __entry->present, > + __entry->swap, > + __print_symbolic(__entry->result, SCAN_STATUS)) > +); > + > #endif /* __HUGE_MEMORY_H */ > #include <trace/define_trace.h> > diff --git a/mm/khugepaged.c b/mm/khugepaged.c > index 66457a06b4e7..9325aec25abc 100644 > --- a/mm/khugepaged.c > +++ b/mm/khugepaged.c > @@ -2152,7 +2152,8 @@ static int hpage_collapse_scan_file(struct mm_struct *mm, unsigned long addr, > } > } > > - /* TODO: tracepoints */ > + trace_mm_khugepaged_scan_file(mm, page, file->f_path.dentry->d_iname, > + present, swap, result); > return result; > } > #else > -- > 2.37.2.789.g6183377224-goog >