Commit | Line | Data |
---|---|---|
b283666f | 1 | #undef TRACE_SYSTEM |
9bbf98da | 2 | #define TRACE_SYSTEM mm_vmscan |
b283666f | 3 | |
9bbf98da MD |
4 | #if !defined(LTTNG_TRACE_MM_VMSCAN_H) || defined(TRACE_HEADER_MULTI_READ) |
5 | #define LTTNG_TRACE_MM_VMSCAN_H | |
b283666f | 6 | |
3bc29f0a | 7 | #include "../../../probes/lttng-tracepoint-event.h" |
7c68b363 | 8 | #include <linux/types.h> |
7c68b363 AG |
9 | #include <linux/mm.h> |
10 | #include <linux/memcontrol.h> | |
11 | #include <trace/events/gfpflags.h> | |
12 | #include <linux/version.h> | |
13 | ||
14 | #ifndef _TRACE_VMSCAN_DEF | |
15 | #define _TRACE_VMSCAN_DEF | |
16 | #define RECLAIM_WB_ANON 0x0001u | |
17 | #define RECLAIM_WB_FILE 0x0002u | |
18 | #define RECLAIM_WB_MIXED 0x0010u | |
19 | #define RECLAIM_WB_SYNC 0x0004u /* Unused, all reclaim async */ | |
20 | #define RECLAIM_WB_ASYNC 0x0008u | |
21 | ||
7c68b363 AG |
22 | #if ((LINUX_VERSION_CODE <= KERNEL_VERSION(3,0,38)) || \ |
23 | LTTNG_KERNEL_RANGE(3,1,0, 3,2,0)) | |
24 | typedef int isolate_mode_t; | |
25 | #endif | |
26 | ||
27 | #endif | |
28 | ||
3bc29f0a | 29 | LTTNG_TRACEPOINT_EVENT(mm_vmscan_kswapd_sleep, |
b283666f PW |
30 | |
31 | TP_PROTO(int nid), | |
32 | ||
33 | TP_ARGS(nid), | |
34 | ||
f127e61e MD |
35 | TP_FIELDS( |
36 | ctf_integer(int, nid, nid) | |
37 | ) | |
b283666f PW |
38 | ) |
39 | ||
3bc29f0a | 40 | LTTNG_TRACEPOINT_EVENT(mm_vmscan_kswapd_wake, |
b283666f PW |
41 | |
42 | TP_PROTO(int nid, int order), | |
43 | ||
44 | TP_ARGS(nid, order), | |
45 | ||
f127e61e MD |
46 | TP_FIELDS( |
47 | ctf_integer(int, nid, nid) | |
48 | ctf_integer(int, order, order) | |
49 | ) | |
b283666f PW |
50 | ) |
51 | ||
3bc29f0a | 52 | LTTNG_TRACEPOINT_EVENT(mm_vmscan_wakeup_kswapd, |
b283666f PW |
53 | |
54 | TP_PROTO(int nid, int zid, int order), | |
55 | ||
56 | TP_ARGS(nid, zid, order), | |
57 | ||
f127e61e MD |
58 | TP_FIELDS( |
59 | ctf_integer(int, nid, nid) | |
60 | ctf_integer(int, zid, zid) | |
61 | ctf_integer(int, order, order) | |
62 | ) | |
b283666f PW |
63 | ) |
64 | ||
3bc29f0a | 65 | LTTNG_TRACEPOINT_EVENT_CLASS(mm_vmscan_direct_reclaim_begin_template, |
b283666f PW |
66 | |
67 | TP_PROTO(int order, int may_writepage, gfp_t gfp_flags), | |
68 | ||
69 | TP_ARGS(order, may_writepage, gfp_flags), | |
70 | ||
f127e61e MD |
71 | TP_FIELDS( |
72 | ctf_integer(int, order, order) | |
73 | ctf_integer(int, may_writepage, may_writepage) | |
74 | ctf_integer(gfp_t, gfp_flags, gfp_flags) | |
75 | ) | |
b283666f PW |
76 | ) |
77 | ||
3bc29f0a | 78 | LTTNG_TRACEPOINT_EVENT_INSTANCE(mm_vmscan_direct_reclaim_begin_template, mm_vmscan_direct_reclaim_begin, |
b283666f PW |
79 | |
80 | TP_PROTO(int order, int may_writepage, gfp_t gfp_flags), | |
81 | ||
82 | TP_ARGS(order, may_writepage, gfp_flags) | |
83 | ) | |
84 | ||
3bc29f0a | 85 | LTTNG_TRACEPOINT_EVENT_INSTANCE(mm_vmscan_direct_reclaim_begin_template, mm_vmscan_memcg_reclaim_begin, |
b283666f PW |
86 | |
87 | TP_PROTO(int order, int may_writepage, gfp_t gfp_flags), | |
88 | ||
89 | TP_ARGS(order, may_writepage, gfp_flags) | |
90 | ) | |
91 | ||
3bc29f0a | 92 | LTTNG_TRACEPOINT_EVENT_INSTANCE(mm_vmscan_direct_reclaim_begin_template, mm_vmscan_memcg_softlimit_reclaim_begin, |
b283666f PW |
93 | |
94 | TP_PROTO(int order, int may_writepage, gfp_t gfp_flags), | |
95 | ||
96 | TP_ARGS(order, may_writepage, gfp_flags) | |
97 | ) | |
98 | ||
3bc29f0a | 99 | LTTNG_TRACEPOINT_EVENT_CLASS(mm_vmscan_direct_reclaim_end_template, |
b283666f PW |
100 | |
101 | TP_PROTO(unsigned long nr_reclaimed), | |
102 | ||
103 | TP_ARGS(nr_reclaimed), | |
104 | ||
f127e61e MD |
105 | TP_FIELDS( |
106 | ctf_integer(unsigned long, nr_reclaimed, nr_reclaimed) | |
107 | ) | |
b283666f PW |
108 | ) |
109 | ||
3bc29f0a | 110 | LTTNG_TRACEPOINT_EVENT_INSTANCE(mm_vmscan_direct_reclaim_end_template, mm_vmscan_direct_reclaim_end, |
b283666f PW |
111 | |
112 | TP_PROTO(unsigned long nr_reclaimed), | |
113 | ||
114 | TP_ARGS(nr_reclaimed) | |
115 | ) | |
116 | ||
3bc29f0a | 117 | LTTNG_TRACEPOINT_EVENT_INSTANCE(mm_vmscan_direct_reclaim_end_template, mm_vmscan_memcg_reclaim_end, |
b283666f PW |
118 | |
119 | TP_PROTO(unsigned long nr_reclaimed), | |
120 | ||
121 | TP_ARGS(nr_reclaimed) | |
122 | ) | |
123 | ||
3bc29f0a | 124 | LTTNG_TRACEPOINT_EVENT_INSTANCE(mm_vmscan_direct_reclaim_end_template, mm_vmscan_memcg_softlimit_reclaim_end, |
b283666f PW |
125 | |
126 | TP_PROTO(unsigned long nr_reclaimed), | |
127 | ||
128 | TP_ARGS(nr_reclaimed) | |
129 | ) | |
130 | ||
7c68b363 | 131 | #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,1,0)) |
9bbf98da MD |
132 | LTTNG_TRACEPOINT_EVENT_MAP(mm_shrink_slab_start, |
133 | ||
134 | mm_vmscan_shrink_slab_start, | |
135 | ||
b283666f PW |
136 | TP_PROTO(struct shrinker *shr, struct shrink_control *sc, |
137 | long nr_objects_to_shrink, unsigned long pgs_scanned, | |
138 | unsigned long lru_pgs, unsigned long cache_items, | |
139 | unsigned long long delta, unsigned long total_scan), | |
140 | ||
141 | TP_ARGS(shr, sc, nr_objects_to_shrink, pgs_scanned, lru_pgs, | |
142 | cache_items, delta, total_scan), | |
143 | ||
f127e61e MD |
144 | TP_FIELDS( |
145 | ctf_integer(struct shrinker *, shr, shr) | |
5465fedd | 146 | #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,12,0)) |
f127e61e | 147 | ctf_integer(void *, shrink, shr->scan_objects) |
5465fedd | 148 | #else /* #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,12,0)) */ |
f127e61e | 149 | ctf_integer(void *, shrink, shr->shrink) |
5465fedd | 150 | #endif /* #else #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,12,0)) */ |
f127e61e MD |
151 | ctf_integer(long, nr_objects_to_shrink, nr_objects_to_shrink) |
152 | ctf_integer(gfp_t, gfp_flags, sc->gfp_mask) | |
153 | ctf_integer(unsigned long, pgs_scanned, pgs_scanned) | |
154 | ctf_integer(unsigned long, lru_pgs, lru_pgs) | |
155 | ctf_integer(unsigned long, cache_items, cache_items) | |
156 | ctf_integer(unsigned long long, delta, delta) | |
157 | ctf_integer(unsigned long, total_scan, total_scan) | |
158 | ) | |
b283666f PW |
159 | ) |
160 | ||
5defe623 | 161 | #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,16,0)) |
9bbf98da MD |
162 | LTTNG_TRACEPOINT_EVENT_MAP(mm_shrink_slab_end, |
163 | ||
164 | mm_vmscan_shrink_slab_end, | |
165 | ||
5defe623 MD |
166 | TP_PROTO(struct shrinker *shr, int nid, int shrinker_retval, |
167 | long unused_scan_cnt, long new_scan_cnt, long total_scan), | |
168 | ||
169 | TP_ARGS(shr, nid, shrinker_retval, unused_scan_cnt, new_scan_cnt, | |
170 | total_scan), | |
171 | ||
f127e61e MD |
172 | TP_FIELDS( |
173 | ctf_integer(struct shrinker *, shr, shr) | |
174 | ctf_integer(int, nid, nid) | |
175 | ctf_integer(void *, shrink, shr->scan_objects) | |
176 | ctf_integer(long, unused_scan, unused_scan_cnt) | |
177 | ctf_integer(long, new_scan, new_scan_cnt) | |
178 | ctf_integer(int, retval, shrinker_retval) | |
179 | ctf_integer(long, total_scan, total_scan) | |
180 | ) | |
5defe623 MD |
181 | ) |
182 | #else /* #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,16,0)) */ | |
9bbf98da MD |
183 | LTTNG_TRACEPOINT_EVENT_MAP(mm_shrink_slab_end, |
184 | ||
185 | mm_vmscan_shrink_slab_end, | |
186 | ||
b283666f PW |
187 | TP_PROTO(struct shrinker *shr, int shrinker_retval, |
188 | long unused_scan_cnt, long new_scan_cnt), | |
189 | ||
190 | TP_ARGS(shr, shrinker_retval, unused_scan_cnt, new_scan_cnt), | |
191 | ||
f127e61e MD |
192 | TP_FIELDS( |
193 | ctf_integer(struct shrinker *, shr, shr) | |
5465fedd | 194 | #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,12,0)) |
f127e61e | 195 | ctf_integer(void *, shrink, shr->scan_objects) |
5465fedd | 196 | #else /* #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,12,0)) */ |
f127e61e | 197 | ctf_integer(void *, shrink, shr->shrink) |
5465fedd | 198 | #endif /* #else #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,12,0)) */ |
f127e61e MD |
199 | ctf_integer(long, unused_scan, unused_scan_cnt) |
200 | ctf_integer(long, new_scan, new_scan_cnt) | |
201 | ctf_integer(int, retval, shrinker_retval) | |
202 | ctf_integer(long, total_scan, new_scan_cnt - unused_scan_cnt) | |
203 | ) | |
b283666f | 204 | ) |
5defe623 | 205 | #endif /* #else #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,16,0)) */ |
7c68b363 | 206 | #endif |
b283666f | 207 | |
3bc29f0a | 208 | LTTNG_TRACEPOINT_EVENT_CLASS(mm_vmscan_lru_isolate_template, |
b283666f PW |
209 | |
210 | TP_PROTO(int order, | |
211 | unsigned long nr_requested, | |
212 | unsigned long nr_scanned, | |
213 | unsigned long nr_taken, | |
7c68b363 | 214 | #if (LINUX_VERSION_CODE < KERNEL_VERSION(3,5,0)) |
b283666f PW |
215 | unsigned long nr_lumpy_taken, |
216 | unsigned long nr_lumpy_dirty, | |
217 | unsigned long nr_lumpy_failed, | |
7c68b363 | 218 | #endif |
b283666f | 219 | #if (LINUX_VERSION_CODE < KERNEL_VERSION(3,3,0)) |
7c68b363 | 220 | isolate_mode_t isolate_mode |
b283666f PW |
221 | #else |
222 | isolate_mode_t isolate_mode, | |
7c68b363 | 223 | int file |
b283666f | 224 | #endif |
7c68b363 | 225 | ), |
b283666f | 226 | |
7c68b363 AG |
227 | TP_ARGS(order, nr_requested, nr_scanned, nr_taken, |
228 | #if (LINUX_VERSION_CODE < KERNEL_VERSION(3,5,0)) | |
229 | nr_lumpy_taken, nr_lumpy_dirty, nr_lumpy_failed, | |
230 | #endif | |
b283666f | 231 | #if (LINUX_VERSION_CODE < KERNEL_VERSION(3,3,0)) |
7c68b363 | 232 | isolate_mode |
b283666f | 233 | #else |
7c68b363 | 234 | isolate_mode, file |
b283666f | 235 | #endif |
7c68b363 AG |
236 | ), |
237 | ||
b283666f | 238 | |
f127e61e MD |
239 | TP_FIELDS( |
240 | ctf_integer(int, order, order) | |
241 | ctf_integer(unsigned long, nr_requested, nr_requested) | |
242 | ctf_integer(unsigned long, nr_scanned, nr_scanned) | |
243 | ctf_integer(unsigned long, nr_taken, nr_taken) | |
7c68b363 | 244 | #if (LINUX_VERSION_CODE < KERNEL_VERSION(3,5,0)) |
f127e61e MD |
245 | ctf_integer(unsigned long, nr_lumpy_taken, nr_lumpy_taken) |
246 | ctf_integer(unsigned long, nr_lumpy_dirty, nr_lumpy_dirty) | |
247 | ctf_integer(unsigned long, nr_lumpy_failed, nr_lumpy_failed) | |
7c68b363 | 248 | #endif |
f127e61e | 249 | ctf_integer(isolate_mode_t, isolate_mode, isolate_mode) |
b283666f | 250 | #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,3,0)) |
f127e61e | 251 | ctf_integer(int, file, file) |
b283666f | 252 | #endif |
f127e61e | 253 | ) |
b283666f PW |
254 | ) |
255 | ||
3bc29f0a | 256 | LTTNG_TRACEPOINT_EVENT_INSTANCE(mm_vmscan_lru_isolate_template, mm_vmscan_lru_isolate, |
b283666f PW |
257 | |
258 | TP_PROTO(int order, | |
259 | unsigned long nr_requested, | |
260 | unsigned long nr_scanned, | |
261 | unsigned long nr_taken, | |
262 | #if (LINUX_VERSION_CODE < KERNEL_VERSION(3,5,0)) | |
263 | unsigned long nr_lumpy_taken, | |
264 | unsigned long nr_lumpy_dirty, | |
265 | unsigned long nr_lumpy_failed, | |
266 | #endif | |
267 | #if (LINUX_VERSION_CODE < KERNEL_VERSION(3,3,0)) | |
7c68b363 | 268 | isolate_mode_t isolate_mode |
b283666f PW |
269 | #else |
270 | isolate_mode_t isolate_mode, | |
7c68b363 | 271 | int file |
b283666f | 272 | #endif |
7c68b363 | 273 | ), |
b283666f | 274 | |
7c68b363 AG |
275 | TP_ARGS(order, nr_requested, nr_scanned, nr_taken, |
276 | #if (LINUX_VERSION_CODE < KERNEL_VERSION(3,5,0)) | |
277 | nr_lumpy_taken, nr_lumpy_dirty, nr_lumpy_failed, | |
278 | #endif | |
b283666f | 279 | #if (LINUX_VERSION_CODE < KERNEL_VERSION(3,3,0)) |
7c68b363 | 280 | isolate_mode |
b283666f | 281 | #else |
7c68b363 | 282 | isolate_mode, file |
b283666f | 283 | #endif |
7c68b363 | 284 | ) |
b283666f PW |
285 | |
286 | ) | |
287 | ||
3bc29f0a | 288 | LTTNG_TRACEPOINT_EVENT_INSTANCE(mm_vmscan_lru_isolate_template, mm_vmscan_memcg_isolate, |
b283666f PW |
289 | |
290 | TP_PROTO(int order, | |
291 | unsigned long nr_requested, | |
292 | unsigned long nr_scanned, | |
293 | unsigned long nr_taken, | |
294 | #if (LINUX_VERSION_CODE < KERNEL_VERSION(3,5,0)) | |
295 | unsigned long nr_lumpy_taken, | |
296 | unsigned long nr_lumpy_dirty, | |
297 | unsigned long nr_lumpy_failed, | |
298 | #endif | |
299 | #if (LINUX_VERSION_CODE < KERNEL_VERSION(3,3,0)) | |
7c68b363 | 300 | isolate_mode_t isolate_mode |
b283666f PW |
301 | #else |
302 | isolate_mode_t isolate_mode, | |
7c68b363 | 303 | int file |
b283666f | 304 | #endif |
7c68b363 | 305 | ), |
b283666f | 306 | |
7c68b363 AG |
307 | TP_ARGS(order, nr_requested, nr_scanned, nr_taken, |
308 | #if (LINUX_VERSION_CODE < KERNEL_VERSION(3,5,0)) | |
309 | nr_lumpy_taken, nr_lumpy_dirty, nr_lumpy_failed, | |
310 | #endif | |
b283666f | 311 | #if (LINUX_VERSION_CODE < KERNEL_VERSION(3,3,0)) |
7c68b363 | 312 | isolate_mode |
b283666f | 313 | #else |
7c68b363 | 314 | isolate_mode, file |
b283666f | 315 | #endif |
7c68b363 | 316 | ) |
b283666f PW |
317 | ) |
318 | ||
3bc29f0a | 319 | LTTNG_TRACEPOINT_EVENT(mm_vmscan_writepage, |
b283666f PW |
320 | |
321 | TP_PROTO(struct page *page, | |
322 | int reclaim_flags), | |
323 | ||
324 | TP_ARGS(page, reclaim_flags), | |
325 | ||
f127e61e MD |
326 | TP_FIELDS( |
327 | ctf_integer(struct page *, page, page) | |
328 | ctf_integer(int, reclaim_flags, reclaim_flags) | |
329 | ) | |
b283666f PW |
330 | ) |
331 | ||
7c68b363 | 332 | #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37)) |
3bc29f0a | 333 | LTTNG_TRACEPOINT_EVENT(mm_vmscan_lru_shrink_inactive, |
b283666f PW |
334 | |
335 | TP_PROTO(int nid, int zid, | |
336 | unsigned long nr_scanned, unsigned long nr_reclaimed, | |
337 | int priority, int reclaim_flags), | |
338 | ||
339 | TP_ARGS(nid, zid, nr_scanned, nr_reclaimed, priority, reclaim_flags), | |
340 | ||
f127e61e MD |
341 | TP_FIELDS( |
342 | ctf_integer(int, nid, nid) | |
343 | ctf_integer(int, zid, zid) | |
344 | ctf_integer(unsigned long, nr_scanned, nr_scanned) | |
345 | ctf_integer(unsigned long, nr_reclaimed, nr_reclaimed) | |
346 | ctf_integer(int, priority, priority) | |
347 | ctf_integer(int, reclaim_flags, reclaim_flags) | |
348 | ) | |
b283666f | 349 | ) |
7c68b363 | 350 | #endif |
b283666f PW |
351 | |
352 | #if (LINUX_VERSION_CODE < KERNEL_VERSION(3,5,0)) | |
3bc29f0a | 353 | LTTNG_TRACEPOINT_EVENT_MAP(replace_swap_token, |
9cf29d3e MD |
354 | |
355 | mm_vmscan_replace_swap_token, | |
356 | ||
b283666f PW |
357 | TP_PROTO(struct mm_struct *old_mm, |
358 | struct mm_struct *new_mm), | |
359 | ||
360 | TP_ARGS(old_mm, new_mm), | |
361 | ||
f127e61e MD |
362 | TP_FIELDS( |
363 | ctf_integer(struct mm_struct *, old_mm, old_mm) | |
364 | ctf_integer(unsigned int, old_prio, old_mm ? old_mm->token_priority : 0) | |
365 | ctf_integer(struct mm_struct *, new_mm, new_mm) | |
366 | ctf_integer(unsigned int, new_prio, new_mm->token_priority) | |
367 | ) | |
b283666f PW |
368 | ) |
369 | ||
3bc29f0a | 370 | LTTNG_TRACEPOINT_EVENT_CLASS(mm_vmscan_put_swap_token_template, |
b283666f PW |
371 | TP_PROTO(struct mm_struct *swap_token_mm), |
372 | ||
373 | TP_ARGS(swap_token_mm), | |
374 | ||
f127e61e MD |
375 | TP_FIELDS( |
376 | ctf_integer(struct mm_struct*, swap_token_mm, swap_token_mm) | |
377 | ) | |
b283666f PW |
378 | ) |
379 | ||
3bc29f0a | 380 | LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(mm_vmscan_put_swap_token_template, put_swap_token, |
9cf29d3e MD |
381 | |
382 | mm_vmscan_put_swap_token, | |
383 | ||
b283666f PW |
384 | TP_PROTO(struct mm_struct *swap_token_mm), |
385 | TP_ARGS(swap_token_mm) | |
386 | ) | |
387 | ||
f127e61e | 388 | LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(mm_vmscan_put_swap_token_template, disable_swap_token, |
9cf29d3e MD |
389 | |
390 | mm_vmscan_disable_swap_token, | |
391 | ||
b283666f | 392 | TP_PROTO(struct mm_struct *swap_token_mm), |
f127e61e | 393 | TP_ARGS(swap_token_mm) |
b283666f PW |
394 | ) |
395 | ||
f127e61e | 396 | LTTNG_TRACEPOINT_EVENT_MAP(update_swap_token_priority, |
9cf29d3e MD |
397 | |
398 | mm_vmscan_update_swap_token_priority, | |
399 | ||
b283666f PW |
400 | TP_PROTO(struct mm_struct *mm, |
401 | unsigned int old_prio, | |
402 | struct mm_struct *swap_token_mm), | |
403 | ||
404 | TP_ARGS(mm, old_prio, swap_token_mm), | |
405 | ||
f127e61e MD |
406 | TP_FIELDS( |
407 | ctf_integer(struct mm_struct*, mm, mm) | |
408 | ctf_integer(unsigned int, old_prio, old_prio) | |
409 | ctf_integer(unsigned int, new_prio, mm->token_priority) | |
410 | ctf_integer(struct mm_struct*, swap_token_mm, swap_token_mm) | |
411 | ctf_integer(unsigned int, swap_token_prio, swap_token_mm ? swap_token_mm->token_priority : 0) | |
412 | ) | |
b283666f | 413 | ) |
b283666f PW |
414 | #endif |
415 | ||
9bbf98da | 416 | #endif /* LTTNG_TRACE_MM_VMSCAN_H */ |
b283666f PW |
417 | |
418 | /* This part must be outside protection */ | |
419 | #include "../../../probes/define_trace.h" |