Loading include/trace/events/cma.h +39 −1 Original line number Diff line number Diff line Loading @@ -8,7 +8,7 @@ #include <linux/types.h> #include <linux/tracepoint.h> TRACE_EVENT(cma_alloc, DECLARE_EVENT_CLASS(cma_alloc_class, TP_PROTO(unsigned long pfn, const struct page *page, unsigned int count, unsigned int align), Loading Loading @@ -61,6 +61,44 @@ TRACE_EVENT(cma_release, __entry->count) ); TRACE_EVENT(cma_alloc_start, TP_PROTO(unsigned int count, unsigned int align), TP_ARGS(count, align), TP_STRUCT__entry( __field(unsigned int, count) __field(unsigned int, align) ), TP_fast_assign( __entry->count = count; __entry->align = align; ), TP_printk("count=%u align=%u", __entry->count, __entry->align) ); DEFINE_EVENT(cma_alloc_class, cma_alloc, TP_PROTO(unsigned long pfn, const struct page *page, unsigned int count, unsigned int align), TP_ARGS(pfn, page, count, align) ); DEFINE_EVENT(cma_alloc_class, cma_alloc_busy_retry, TP_PROTO(unsigned long pfn, const struct page *page, unsigned int count, unsigned int align), TP_ARGS(pfn, page, count, align) ); #endif /* _TRACE_CMA_H */ /* This part must be outside protection */ Loading include/trace/events/migrate.h +48 −0 Original line number Diff line number Diff line Loading @@ -70,6 +70,54 @@ TRACE_EVENT(mm_migrate_pages, __print_symbolic(__entry->mode, MIGRATE_MODE), __print_symbolic(__entry->reason, MIGRATE_REASON)) ); TRACE_EVENT(mm_numa_migrate_ratelimit, TP_PROTO(struct task_struct *p, int dst_nid, unsigned long nr_pages), TP_ARGS(p, dst_nid, nr_pages), TP_STRUCT__entry( __array(char, comm, TASK_COMM_LEN) __field(pid_t, pid) __field(int, dst_nid) __field(unsigned long, nr_pages) ), TP_fast_assign( memcpy(__entry->comm, p->comm, TASK_COMM_LEN); __entry->pid = p->pid; __entry->dst_nid = dst_nid; __entry->nr_pages = nr_pages; ), TP_printk("comm=%s pid=%d dst_nid=%d nr_pages=%lu", __entry->comm, __entry->pid, __entry->dst_nid, __entry->nr_pages) ); TRACE_EVENT(mm_migrate_pages_start, TP_PROTO(enum migrate_mode mode, int reason), TP_ARGS(mode, reason), TP_STRUCT__entry( __field(enum migrate_mode, mode) __field(int, reason) ), TP_fast_assign( __entry->mode = mode; __entry->reason = reason; ), TP_printk("mode=%s reason=%s", __print_symbolic(__entry->mode, MIGRATE_MODE), __print_symbolic(__entry->reason, MIGRATE_REASON)) ); #endif /* _TRACE_MIGRATE_H */ /* This part must be outside protection */ Loading mm/cma.c +4 −0 Original line number Diff line number Diff line Loading @@ -453,6 +453,8 @@ struct page *cma_alloc(struct cma *cma, size_t count, unsigned int align, if (!count) return NULL; trace_cma_alloc_start(count, align); mask = cma_bitmap_aligned_mask(cma, align); offset = cma_bitmap_aligned_offset(cma, align); bitmap_maxno = cma_bitmap_maxno(cma); Loading Loading @@ -520,6 +522,8 @@ struct page *cma_alloc(struct cma *cma, size_t count, unsigned int align, pr_debug("%s(): memory range at %p is busy, retrying\n", __func__, pfn_to_page(pfn)); trace_cma_alloc_busy_retry(pfn, pfn_to_page(pfn), count, align); /* try again with a bit different memory target */ start = bitmap_no + mask + 1; } Loading mm/migrate.c +2 −0 Original line number Diff line number Diff line Loading @@ -1385,6 +1385,8 @@ int migrate_pages(struct list_head *from, new_page_t get_new_page, int swapwrite = current->flags & PF_SWAPWRITE; int rc; trace_mm_migrate_pages_start(mode, reason); if (!swapwrite) current->flags |= PF_SWAPWRITE; Loading mm/slub.c +2 −0 Original line number Diff line number Diff line Loading @@ -1693,6 +1693,7 @@ static void __free_slab(struct kmem_cache *s, struct page *page) if (current->reclaim_state) current->reclaim_state->reclaimed_slab += pages; memcg_uncharge_slab(page, order, s); kasan_alloc_pages(page, order); __free_pages(page, order); } Loading Loading @@ -3912,6 +3913,7 @@ void kfree(const void *x) if (unlikely(!PageSlab(page))) { BUG_ON(!PageCompound(page)); kfree_hook(object); kasan_alloc_pages(page, compound_order(page)); __free_pages(page, compound_order(page)); return; } Loading Loading
include/trace/events/cma.h +39 −1 Original line number Diff line number Diff line Loading @@ -8,7 +8,7 @@ #include <linux/types.h> #include <linux/tracepoint.h> TRACE_EVENT(cma_alloc, DECLARE_EVENT_CLASS(cma_alloc_class, TP_PROTO(unsigned long pfn, const struct page *page, unsigned int count, unsigned int align), Loading Loading @@ -61,6 +61,44 @@ TRACE_EVENT(cma_release, __entry->count) ); TRACE_EVENT(cma_alloc_start, TP_PROTO(unsigned int count, unsigned int align), TP_ARGS(count, align), TP_STRUCT__entry( __field(unsigned int, count) __field(unsigned int, align) ), TP_fast_assign( __entry->count = count; __entry->align = align; ), TP_printk("count=%u align=%u", __entry->count, __entry->align) ); DEFINE_EVENT(cma_alloc_class, cma_alloc, TP_PROTO(unsigned long pfn, const struct page *page, unsigned int count, unsigned int align), TP_ARGS(pfn, page, count, align) ); DEFINE_EVENT(cma_alloc_class, cma_alloc_busy_retry, TP_PROTO(unsigned long pfn, const struct page *page, unsigned int count, unsigned int align), TP_ARGS(pfn, page, count, align) ); #endif /* _TRACE_CMA_H */ /* This part must be outside protection */ Loading
include/trace/events/migrate.h +48 −0 Original line number Diff line number Diff line Loading @@ -70,6 +70,54 @@ TRACE_EVENT(mm_migrate_pages, __print_symbolic(__entry->mode, MIGRATE_MODE), __print_symbolic(__entry->reason, MIGRATE_REASON)) ); TRACE_EVENT(mm_numa_migrate_ratelimit, TP_PROTO(struct task_struct *p, int dst_nid, unsigned long nr_pages), TP_ARGS(p, dst_nid, nr_pages), TP_STRUCT__entry( __array(char, comm, TASK_COMM_LEN) __field(pid_t, pid) __field(int, dst_nid) __field(unsigned long, nr_pages) ), TP_fast_assign( memcpy(__entry->comm, p->comm, TASK_COMM_LEN); __entry->pid = p->pid; __entry->dst_nid = dst_nid; __entry->nr_pages = nr_pages; ), TP_printk("comm=%s pid=%d dst_nid=%d nr_pages=%lu", __entry->comm, __entry->pid, __entry->dst_nid, __entry->nr_pages) ); TRACE_EVENT(mm_migrate_pages_start, TP_PROTO(enum migrate_mode mode, int reason), TP_ARGS(mode, reason), TP_STRUCT__entry( __field(enum migrate_mode, mode) __field(int, reason) ), TP_fast_assign( __entry->mode = mode; __entry->reason = reason; ), TP_printk("mode=%s reason=%s", __print_symbolic(__entry->mode, MIGRATE_MODE), __print_symbolic(__entry->reason, MIGRATE_REASON)) ); #endif /* _TRACE_MIGRATE_H */ /* This part must be outside protection */ Loading
mm/cma.c +4 −0 Original line number Diff line number Diff line Loading @@ -453,6 +453,8 @@ struct page *cma_alloc(struct cma *cma, size_t count, unsigned int align, if (!count) return NULL; trace_cma_alloc_start(count, align); mask = cma_bitmap_aligned_mask(cma, align); offset = cma_bitmap_aligned_offset(cma, align); bitmap_maxno = cma_bitmap_maxno(cma); Loading Loading @@ -520,6 +522,8 @@ struct page *cma_alloc(struct cma *cma, size_t count, unsigned int align, pr_debug("%s(): memory range at %p is busy, retrying\n", __func__, pfn_to_page(pfn)); trace_cma_alloc_busy_retry(pfn, pfn_to_page(pfn), count, align); /* try again with a bit different memory target */ start = bitmap_no + mask + 1; } Loading
mm/migrate.c +2 −0 Original line number Diff line number Diff line Loading @@ -1385,6 +1385,8 @@ int migrate_pages(struct list_head *from, new_page_t get_new_page, int swapwrite = current->flags & PF_SWAPWRITE; int rc; trace_mm_migrate_pages_start(mode, reason); if (!swapwrite) current->flags |= PF_SWAPWRITE; Loading
mm/slub.c +2 −0 Original line number Diff line number Diff line Loading @@ -1693,6 +1693,7 @@ static void __free_slab(struct kmem_cache *s, struct page *page) if (current->reclaim_state) current->reclaim_state->reclaimed_slab += pages; memcg_uncharge_slab(page, order, s); kasan_alloc_pages(page, order); __free_pages(page, order); } Loading Loading @@ -3912,6 +3913,7 @@ void kfree(const void *x) if (unlikely(!PageSlab(page))) { BUG_ON(!PageCompound(page)); kfree_hook(object); kasan_alloc_pages(page, compound_order(page)); __free_pages(page, compound_order(page)); return; } Loading