diff options
-rw-r--r-- | include/trace/events/kmem.h | 38 | ||||
-rw-r--r-- | mm/page_alloc.c | 4 |
2 files changed, 42 insertions, 0 deletions
diff --git a/include/trace/events/kmem.h b/include/trace/events/kmem.h index 0d358a0d45c1..aae16ee17601 100644 --- a/include/trace/events/kmem.h +++ b/include/trace/events/kmem.h | |||
@@ -299,6 +299,44 @@ TRACE_EVENT(mm_page_alloc, | |||
299 | show_gfp_flags(__entry->gfp_flags)) | 299 | show_gfp_flags(__entry->gfp_flags)) |
300 | ); | 300 | ); |
301 | 301 | ||
302 | TRACE_EVENT(mm_page_alloc_extfrag, | ||
303 | |||
304 | TP_PROTO(struct page *page, | ||
305 | int alloc_order, int fallback_order, | ||
306 | int alloc_migratetype, int fallback_migratetype), | ||
307 | |||
308 | TP_ARGS(page, | ||
309 | alloc_order, fallback_order, | ||
310 | alloc_migratetype, fallback_migratetype), | ||
311 | |||
312 | TP_STRUCT__entry( | ||
313 | __field( struct page *, page ) | ||
314 | __field( int, alloc_order ) | ||
315 | __field( int, fallback_order ) | ||
316 | __field( int, alloc_migratetype ) | ||
317 | __field( int, fallback_migratetype ) | ||
318 | ), | ||
319 | |||
320 | TP_fast_assign( | ||
321 | __entry->page = page; | ||
322 | __entry->alloc_order = alloc_order; | ||
323 | __entry->fallback_order = fallback_order; | ||
324 | __entry->alloc_migratetype = alloc_migratetype; | ||
325 | __entry->fallback_migratetype = fallback_migratetype; | ||
326 | ), | ||
327 | |||
328 | 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", | ||
329 | __entry->page, | ||
330 | page_to_pfn(__entry->page), | ||
331 | __entry->alloc_order, | ||
332 | __entry->fallback_order, | ||
333 | pageblock_order, | ||
334 | __entry->alloc_migratetype, | ||
335 | __entry->fallback_migratetype, | ||
336 | __entry->fallback_order < pageblock_order, | ||
337 | __entry->alloc_migratetype == __entry->fallback_migratetype) | ||
338 | ); | ||
339 | |||
302 | #endif /* _TRACE_KMEM_H */ | 340 | #endif /* _TRACE_KMEM_H */ |
303 | 341 | ||
304 | /* This part must be outside protection */ | 342 | /* This part must be outside protection */ |
diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 80f954d82d77..77f517c18b37 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c | |||
@@ -853,6 +853,10 @@ __rmqueue_fallback(struct zone *zone, int order, int start_migratetype) | |||
853 | start_migratetype); | 853 | start_migratetype); |
854 | 854 | ||
855 | expand(zone, page, order, current_order, area, migratetype); | 855 | expand(zone, page, order, current_order, area, migratetype); |
856 | |||
857 | trace_mm_page_alloc_extfrag(page, order, current_order, | ||
858 | start_migratetype, migratetype); | ||
859 | |||
856 | return page; | 860 | return page; |
857 | } | 861 | } |
858 | } | 862 | } |