1 /* SPDX-License-Identifier: GPL-2.0-only */
3 #define TRACE_SYSTEM compaction
5 #if !defined(LTTNG_TRACE_COMPACTION_H) || defined(TRACE_HEADER_MULTI_READ)
6 #define LTTNG_TRACE_COMPACTION_H
8 #include <lttng/tracepoint-event.h>
9 #include <linux/types.h>
10 #include <lttng/kernel-version.h>
12 #if LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,0,0)
14 LTTNG_TRACEPOINT_EVENT_CLASS(compaction_isolate_template
,
16 TP_PROTO(unsigned long start_pfn
,
17 unsigned long end_pfn
,
18 unsigned long nr_scanned
,
19 unsigned long nr_taken
),
21 TP_ARGS(start_pfn
, end_pfn
, nr_scanned
, nr_taken
),
24 ctf_integer(unsigned long, start_pfn
, start_pfn
)
25 ctf_integer(unsigned long, end_pfn
, end_pfn
)
26 ctf_integer(unsigned long, nr_scanned
, nr_scanned
)
27 ctf_integer(unsigned long, nr_taken
, nr_taken
)
31 LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(compaction_isolate_template
,
33 mm_compaction_isolate_migratepages
,
35 compaction_isolate_migratepages
,
37 TP_PROTO(unsigned long start_pfn
,
38 unsigned long end_pfn
,
39 unsigned long nr_scanned
,
40 unsigned long nr_taken
),
42 TP_ARGS(start_pfn
, end_pfn
, nr_scanned
, nr_taken
)
45 LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(compaction_isolate_template
,
47 mm_compaction_isolate_freepages
,
49 compaction_isolate_freepages
,
51 TP_PROTO(unsigned long start_pfn
,
52 unsigned long end_pfn
,
53 unsigned long nr_scanned
,
54 unsigned long nr_taken
),
56 TP_ARGS(start_pfn
, end_pfn
, nr_scanned
, nr_taken
)
59 #else /* #if LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,0,0) */
61 LTTNG_TRACEPOINT_EVENT_CLASS(compaction_isolate_template
,
63 TP_PROTO(unsigned long nr_scanned
,
64 unsigned long nr_taken
),
66 TP_ARGS(nr_scanned
, nr_taken
),
69 ctf_integer(unsigned long, nr_scanned
, nr_scanned
)
70 ctf_integer(unsigned long, nr_taken
, nr_taken
)
74 LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(compaction_isolate_template
,
76 mm_compaction_isolate_migratepages
,
78 compaction_isolate_migratepages
,
80 TP_PROTO(unsigned long nr_scanned
,
81 unsigned long nr_taken
),
83 TP_ARGS(nr_scanned
, nr_taken
)
86 LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(compaction_isolate_template
,
88 mm_compaction_isolate_freepages
,
90 compaction_isolate_freepages
,
92 TP_PROTO(unsigned long nr_scanned
,
93 unsigned long nr_taken
),
95 TP_ARGS(nr_scanned
, nr_taken
)
98 #endif /* #else #if LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,0,0) */
100 #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,18,0) || \
101 LTTNG_RHEL_KERNEL_RANGE(5,14,0,163,0,0, 5,15,0,0,0,0))
102 LTTNG_TRACEPOINT_EVENT_MAP(mm_compaction_migratepages
,
104 compaction_migratepages
,
106 TP_PROTO(struct compact_control
*cc
,
107 unsigned int nr_succeeded
),
109 TP_ARGS(cc
, nr_succeeded
),
112 ctf_integer(unsigned long, nr_migrated
, nr_succeeded
)
113 ctf_integer(unsigned long, nr_failed
, cc
->nr_migratepages
- nr_succeeded
)
116 #elif (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,17,0))
117 LTTNG_TRACEPOINT_EVENT_MAP(mm_compaction_migratepages
,
119 compaction_migratepages
,
121 TP_PROTO(unsigned long nr_all
,
122 unsigned int nr_succeeded
),
124 TP_ARGS(nr_all
, nr_succeeded
),
127 ctf_integer(unsigned long, nr_migrated
, nr_succeeded
)
128 ctf_integer(unsigned long, nr_failed
, nr_all
- nr_succeeded
)
131 #elif LTTNG_KERNEL_RANGE(3,12,30, 3,13,0) || \
132 LTTNG_KERNEL_RANGE(3,14,25, 3,15,0) || \
133 (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(3,16,0))
134 LTTNG_TRACEPOINT_EVENT_CODE_MAP(mm_compaction_migratepages
,
136 compaction_migratepages
,
138 TP_PROTO(unsigned long nr_all
,
140 struct list_head
*migratepages
),
142 TP_ARGS(nr_all
, migrate_rc
, migratepages
),
145 unsigned long nr_failed
;
149 tp_locvar
->nr_failed
= 0;
152 struct list_head
*page_lru
;
155 tp_locvar
->nr_failed
= migrate_rc
;
157 list_for_each(page_lru
, migratepages
)
158 tp_locvar
->nr_failed
++;
163 ctf_integer(unsigned long, nr_migrated
, nr_all
- tp_locvar
->nr_failed
)
164 ctf_integer(unsigned long, nr_failed
, tp_locvar
->nr_failed
)
169 #else /* #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(3,16,0)) */
170 LTTNG_TRACEPOINT_EVENT_MAP(mm_compaction_migratepages
,
172 compaction_migratepages
,
174 TP_PROTO(unsigned long nr_migrated
,
175 unsigned long nr_failed
),
177 TP_ARGS(nr_migrated
, nr_failed
),
180 ctf_integer(unsigned long, nr_migrated
, nr_migrated
)
181 ctf_integer(unsigned long, nr_failed
, nr_failed
)
184 #endif /* #else #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(3,16,0)) */
186 #endif /* LTTNG_TRACE_COMPACTION_H */
188 /* This part must be outside protection */
189 #include <lttng/define_trace.h>