From f482b6e687b3ac9c877e503337a28333fb392edb Mon Sep 17 00:00:00 2001 From: Mathieu Desnoyers Date: Thu, 19 Mar 2015 12:55:48 -0400 Subject: [PATCH] Fix: kmem instrumentation: mm_page_alloc extfrag change_ownership field Linux kernel 3.12.30 and onward changes the parameter received by this callback. It's the same type, but the meaning differs. This is why it did compile fine, but the data gathered did not really represent change_ownership. This change has been introduced in the Linux kernel by this commit: commit 52c8f6a5aeb0bdd396849ecaa72d96f8175528f5 Author: KOSAKI Motohiro Date: Tue Nov 12 15:08:19 2013 -0800 mm: get rid of unnecessary overhead of trace_mm_page_alloc_extfrag() Signed-off-by: Mathieu Desnoyers --- instrumentation/events/lttng-module/kmem.h | 44 +++++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-) diff --git a/instrumentation/events/lttng-module/kmem.h b/instrumentation/events/lttng-module/kmem.h index 2bc70a8d..985d3065 100644 --- a/instrumentation/events/lttng-module/kmem.h +++ b/instrumentation/events/lttng-module/kmem.h @@ -286,7 +286,49 @@ DEFINE_EVENT_PRINT(mm_page, mm_page_pcpu_drain, __entry->order, __entry->migratetype) ) -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,12,0)) +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,12,30)) + +LTTNG_TRACEPOINT_EVENT(mm_page_alloc_extfrag, + + TP_PROTO(struct page *page, + int alloc_order, int fallback_order, + int alloc_migratetype, int fallback_migratetype, int new_migratetype), + + TP_ARGS(page, + alloc_order, fallback_order, + alloc_migratetype, fallback_migratetype, new_migratetype), + + TP_STRUCT__entry( + __field_hex( struct page *, page ) + __field( int, alloc_order ) + __field( int, fallback_order ) + __field( int, alloc_migratetype ) + __field( int, fallback_migratetype ) + __field( int, change_ownership ) + ), + + TP_fast_assign( + tp_assign(page, page) + tp_assign(alloc_order, alloc_order) + tp_assign(fallback_order, fallback_order) + tp_assign(alloc_migratetype, alloc_migratetype) + tp_assign(fallback_migratetype, fallback_migratetype) + tp_assign(change_ownership, (new_migratetype == alloc_migratetype)) + ), + + TP_printk("page=%p pfn=%lu alloc_order=%d fallback_order=%d pageblock_order=%d alloc_migratetype=%d fallback_migratetype=%d fragmenting=%d change_ownership=%d", + __entry->page, + page_to_pfn(__entry->page), + __entry->alloc_order, + __entry->fallback_order, + pageblock_order, + __entry->alloc_migratetype, + __entry->fallback_migratetype, + __entry->fallback_order < pageblock_order, + __entry->change_ownership) +) + +#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(3,12,0)) TRACE_EVENT(mm_page_alloc_extfrag, -- 2.34.1