compaction.h 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. #undef TRACE_SYSTEM
  2. #define TRACE_SYSTEM compaction
  3. #if !defined(_TRACE_COMPACTION_H) || defined(TRACE_HEADER_MULTI_READ)
  4. #define _TRACE_COMPACTION_H
  5. #include <linux/types.h>
  6. #include <linux/list.h>
  7. #include <linux/tracepoint.h>
  8. #include <trace/events/gfpflags.h>
  9. DECLARE_EVENT_CLASS(mm_compaction_isolate_template,
  10. TP_PROTO(unsigned long nr_scanned,
  11. unsigned long nr_taken),
  12. TP_ARGS(nr_scanned, nr_taken),
  13. TP_STRUCT__entry(
  14. __field(unsigned long, nr_scanned)
  15. __field(unsigned long, nr_taken)
  16. ),
  17. TP_fast_assign(
  18. __entry->nr_scanned = nr_scanned;
  19. __entry->nr_taken = nr_taken;
  20. ),
  21. TP_printk("nr_scanned=%lu nr_taken=%lu",
  22. __entry->nr_scanned,
  23. __entry->nr_taken)
  24. );
  25. DEFINE_EVENT(mm_compaction_isolate_template, mm_compaction_isolate_migratepages,
  26. TP_PROTO(unsigned long nr_scanned,
  27. unsigned long nr_taken),
  28. TP_ARGS(nr_scanned, nr_taken)
  29. );
  30. DEFINE_EVENT(mm_compaction_isolate_template, mm_compaction_isolate_freepages,
  31. TP_PROTO(unsigned long nr_scanned,
  32. unsigned long nr_taken),
  33. TP_ARGS(nr_scanned, nr_taken)
  34. );
  35. TRACE_EVENT(mm_compaction_migratepages,
  36. TP_PROTO(unsigned long nr_all,
  37. int migrate_rc,
  38. struct list_head *migratepages),
  39. TP_ARGS(nr_all, migrate_rc, migratepages),
  40. TP_STRUCT__entry(
  41. __field(unsigned long, nr_migrated)
  42. __field(unsigned long, nr_failed)
  43. ),
  44. TP_fast_assign(
  45. unsigned long nr_failed = 0;
  46. struct list_head *page_lru;
  47. /*
  48. * migrate_pages() returns either a non-negative number
  49. * with the number of pages that failed migration, or an
  50. * error code, in which case we need to count the remaining
  51. * pages manually
  52. */
  53. if (migrate_rc >= 0)
  54. nr_failed = migrate_rc;
  55. else
  56. list_for_each(page_lru, migratepages)
  57. nr_failed++;
  58. __entry->nr_migrated = nr_all - nr_failed;
  59. __entry->nr_failed = nr_failed;
  60. ),
  61. TP_printk("nr_migrated=%lu nr_failed=%lu",
  62. __entry->nr_migrated,
  63. __entry->nr_failed)
  64. );
  65. TRACE_EVENT(mm_compaction_begin,
  66. TP_PROTO(unsigned long zone_start, unsigned long migrate_start,
  67. unsigned long free_start, unsigned long zone_end),
  68. TP_ARGS(zone_start, migrate_start, free_start, zone_end),
  69. TP_STRUCT__entry(
  70. __field(unsigned long, zone_start)
  71. __field(unsigned long, migrate_start)
  72. __field(unsigned long, free_start)
  73. __field(unsigned long, zone_end)
  74. ),
  75. TP_fast_assign(
  76. __entry->zone_start = zone_start;
  77. __entry->migrate_start = migrate_start;
  78. __entry->free_start = free_start;
  79. __entry->zone_end = zone_end;
  80. ),
  81. TP_printk("zone_start=%lu migrate_start=%lu free_start=%lu zone_end=%lu",
  82. __entry->zone_start,
  83. __entry->migrate_start,
  84. __entry->free_start,
  85. __entry->zone_end)
  86. );
  87. TRACE_EVENT(mm_compaction_end,
  88. TP_PROTO(int status),
  89. TP_ARGS(status),
  90. TP_STRUCT__entry(
  91. __field(int, status)
  92. ),
  93. TP_fast_assign(
  94. __entry->status = status;
  95. ),
  96. TP_printk("status=%d", __entry->status)
  97. );
  98. #endif /* _TRACE_COMPACTION_H */
  99. /* This part must be outside protection */
  100. #include <trace/define_trace.h>