aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/trace/events/kmem.h38
-rw-r--r--mm/page_alloc.c4
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
302TRACE_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 }