| From: Anshuman Khandual <anshuman.khandual@arm.com> |
| Subject: mm/migration: add trace events for THP migrations |
| |
| Patch series "mm/migration: Add trace events", v3. |
| |
| This adds trace events for all migration scenarios including base page, |
| THP and HugeTLB. |
| |
| |
| This patch (of 3): |
| |
| This adds two trace events for PMD based THP migration without split. |
| These events closely follow the implementation details like setting and |
| removing of PMD migration entries, which are essential operations for THP |
| migration. This moves CREATE_TRACE_POINTS into generic THP from powerpc |
| for these new trace events to be available on other platforms as well. |
| |
| Link: https://lkml.kernel.org/r/1643368182-9588-1-git-send-email-anshuman.khandual@arm.com |
| Link: https://lkml.kernel.org/r/1643368182-9588-2-git-send-email-anshuman.khandual@arm.com |
| Signed-off-by: Anshuman Khandual <anshuman.khandual@arm.com> |
| Cc: Steven Rostedt <rostedt@goodmis.org> |
| Cc: Ingo Molnar <mingo@redhat.com> |
| Cc: Zi Yan <ziy@nvidia.com> |
| Cc: Naoya Horiguchi <naoya.horiguchi@nec.com> |
| Cc: John Hubbard <jhubbard@nvidia.com> |
| Cc: Matthew Wilcox <willy@infradead.org> |
| Cc: Michael Ellerman <mpe@ellerman.id.au> |
| Cc: Paul Mackerras <paulus@samba.org> |
| Signed-off-by: Andrew Morton <akpm@linux-foundation.org> |
| --- |
| |
| arch/powerpc/mm/book3s64/trace.c | 1 - |
| include/trace/events/thp.h | 27 +++++++++++++++++++++++++++ |
| mm/huge_memory.c | 5 +++++ |
| 3 files changed, 32 insertions(+), 1 deletion(-) |
| |
| --- a/arch/powerpc/mm/book3s64/trace.c~mm-migration-add-trace-events-for-thp-migrations |
| +++ a/arch/powerpc/mm/book3s64/trace.c |
| @@ -3,6 +3,5 @@ |
| * This file is for defining trace points and trace related helpers. |
| */ |
| #ifdef CONFIG_TRANSPARENT_HUGEPAGE |
| -#define CREATE_TRACE_POINTS |
| #include <trace/events/thp.h> |
| #endif |
| --- a/include/trace/events/thp.h~mm-migration-add-trace-events-for-thp-migrations |
| +++ a/include/trace/events/thp.h |
| @@ -48,6 +48,33 @@ TRACE_EVENT(hugepage_update, |
| TP_printk("hugepage update at addr 0x%lx and pte = 0x%lx clr = 0x%lx, set = 0x%lx", __entry->addr, __entry->pte, __entry->clr, __entry->set) |
| ); |
| |
| +DECLARE_EVENT_CLASS(migration_pmd, |
| + |
| + TP_PROTO(unsigned long addr, unsigned long pmd), |
| + |
| + TP_ARGS(addr, pmd), |
| + |
| + TP_STRUCT__entry( |
| + __field(unsigned long, addr) |
| + __field(unsigned long, pmd) |
| + ), |
| + |
| + TP_fast_assign( |
| + __entry->addr = addr; |
| + __entry->pmd = pmd; |
| + ), |
| + TP_printk("addr=%lx, pmd=%lx", __entry->addr, __entry->pmd) |
| +); |
| + |
| +DEFINE_EVENT(migration_pmd, set_migration_pmd, |
| + TP_PROTO(unsigned long addr, unsigned long pmd), |
| + TP_ARGS(addr, pmd) |
| +); |
| + |
| +DEFINE_EVENT(migration_pmd, remove_migration_pmd, |
| + TP_PROTO(unsigned long addr, unsigned long pmd), |
| + TP_ARGS(addr, pmd) |
| +); |
| #endif /* _TRACE_THP_H */ |
| |
| /* This part must be outside protection */ |
| --- a/mm/huge_memory.c~mm-migration-add-trace-events-for-thp-migrations |
| +++ a/mm/huge_memory.c |
| @@ -40,6 +40,9 @@ |
| #include <asm/pgalloc.h> |
| #include "internal.h" |
| |
| +#define CREATE_TRACE_POINTS |
| +#include <trace/events/thp.h> |
| + |
| /* |
| * By default, transparent hugepage support is disabled in order to avoid |
| * risking an increased memory footprint for applications that are not |
| @@ -3131,6 +3134,7 @@ void set_pmd_migration_entry(struct page |
| set_pmd_at(mm, address, pvmw->pmd, pmdswp); |
| page_remove_rmap(page, vma, true); |
| put_page(page); |
| + trace_set_migration_pmd(address, pmd_val(pmdswp)); |
| } |
| |
| void remove_migration_pmd(struct page_vma_mapped_walk *pvmw, struct page *new) |
| @@ -3163,5 +3167,6 @@ void remove_migration_pmd(struct page_vm |
| |
| /* No need to invalidate - it was non-present before */ |
| update_mmu_cache_pmd(vma, address, pvmw->pmd); |
| + trace_remove_migration_pmd(address, pmd_val(pmde)); |
| } |
| #endif |
| _ |