Commit d41fd201 authored by Zach O'Keefe's avatar Zach O'Keefe Committed by Andrew Morton
Browse files

mm/khugepaged: add tracepoint to hpage_collapse_scan_file()

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.

Link: https://lkml.kernel.org/r/20220907144521.3115321-5-zokeefe@google.com
Link: https://lkml.kernel.org/r/20220922224046.1143204-5-zokeefe@google.com


Signed-off-by: default avatarZach O'Keefe <zokeefe@google.com>
Reviewed-by: default avatarYang Shi <shy828301@gmail.com>
Cc: Axel Rasmussen <axelrasmussen@google.com>
Cc: Chris Kennelly <ckennelly@google.com>
Cc: David Hildenbrand <david@redhat.com>
Cc: David Rientjes <rientjes@google.com>
Cc: Hugh Dickins <hughd@google.com>
Cc: James Houghton <jthoughton@google.com>
Cc: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>
Cc: Matthew Wilcox <willy@infradead.org>
Cc: Miaohe Lin <linmiaohe@huawei.com>
Cc: Minchan Kim <minchan@kernel.org>
Cc: Pasha Tatashin <pasha.tatashin@soleen.com>
Cc: Peter Xu <peterx@redhat.com>
Cc: Rongwei Wang <rongwei.wang@linux.alibaba.com>
Cc: SeongJae Park <sj@kernel.org>
Cc: Song Liu <songliubraving@fb.com>
Cc: Vlastimil Babka <vbabka@suse.cz>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
parent 34488399
Loading
Loading
Loading
Loading
+34 −0
Original line number Diff line number Diff line
@@ -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>
+2 −1
Original line number Diff line number Diff line
@@ -2157,7 +2157,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