1 /* SPDX-License-Identifier: GPL-2.0-only */
3 #define TRACE_SYSTEM mm_vmscan
5 #if !defined(LTTNG_TRACE_MM_VMSCAN_H) || defined(TRACE_HEADER_MULTI_READ)
6 #define LTTNG_TRACE_MM_VMSCAN_H
8 #include <lttng/tracepoint-event.h>
9 #include <linux/types.h>
11 #include <linux/memcontrol.h>
12 #include <lttng/kernel-version.h>
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
22 #if ((LTTNG_LINUX_VERSION_CODE <= LTTNG_KERNEL_VERSION(3,0,38)) || \
23 LTTNG_KERNEL_RANGE(3,1,0, 3,2,0))
24 typedef int isolate_mode_t
;
29 #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,2,0) || \
30 LTTNG_RHEL_KERNEL_RANGE(4,18,0,305,0,0, 4,19,0,0,0,0))
32 #include <linux/mm_inline.h>
34 #define trace_reclaim_flags(file) ( \
35 (file ? RECLAIM_WB_FILE : RECLAIM_WB_ANON) | \
39 #elif (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,5,0))
41 #include <linux/mm_inline.h>
43 #define trace_reclaim_flags(page) ( \
44 (page_is_file_cache(page) ? RECLAIM_WB_FILE : RECLAIM_WB_ANON) | \
48 #define trace_shrink_flags(file) \
50 (file ? RECLAIM_WB_FILE : RECLAIM_WB_ANON) | \
56 LTTNG_TRACEPOINT_EVENT(mm_vmscan_kswapd_sleep
,
63 ctf_integer(int, nid
, nid
)
67 #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,8,0))
69 LTTNG_TRACEPOINT_EVENT(mm_vmscan_kswapd_wake
,
71 TP_PROTO(int nid
, int zid
, int order
),
73 TP_ARGS(nid
, zid
, order
),
76 ctf_integer(int, nid
, nid
)
77 ctf_integer(int, zid
, zid
)
78 ctf_integer(int, order
, order
)
84 LTTNG_TRACEPOINT_EVENT(mm_vmscan_kswapd_wake
,
86 TP_PROTO(int nid
, int order
),
91 ctf_integer(int, nid
, nid
)
92 ctf_integer(int, order
, order
)
98 #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,17,0))
99 LTTNG_TRACEPOINT_EVENT(mm_vmscan_wakeup_kswapd
,
101 TP_PROTO(int nid
, int zid
, int order
, gfp_t gfp_flags
),
103 TP_ARGS(nid
, zid
, order
, gfp_flags
),
106 ctf_integer(int, nid
, nid
)
107 ctf_integer(int, zid
, zid
)
108 ctf_integer(int, order
, order
)
109 ctf_integer(gfp_t
, gfp_flags
, gfp_flags
)
113 LTTNG_TRACEPOINT_EVENT(mm_vmscan_wakeup_kswapd
,
115 TP_PROTO(int nid
, int zid
, int order
),
117 TP_ARGS(nid
, zid
, order
),
120 ctf_integer(int, nid
, nid
)
121 ctf_integer(int, zid
, zid
)
122 ctf_integer(int, order
, order
)
127 #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,2,0) || \
128 LTTNG_RHEL_KERNEL_RANGE(4,18,0,305,0,0, 4,19,0,0,0,0))
130 LTTNG_TRACEPOINT_EVENT_CLASS(mm_vmscan_direct_reclaim_begin_template
,
132 TP_PROTO(int order
, gfp_t gfp_flags
),
134 TP_ARGS(order
, gfp_flags
),
137 ctf_integer(int, order
, order
)
138 ctf_integer(gfp_t
, gfp_flags
, gfp_flags
)
142 LTTNG_TRACEPOINT_EVENT_INSTANCE(mm_vmscan_direct_reclaim_begin_template
, mm_vmscan_direct_reclaim_begin
,
144 TP_PROTO(int order
, gfp_t gfp_flags
),
146 TP_ARGS(order
, gfp_flags
)
149 LTTNG_TRACEPOINT_EVENT_INSTANCE(mm_vmscan_direct_reclaim_begin_template
, mm_vmscan_memcg_reclaim_begin
,
151 TP_PROTO(int order
, gfp_t gfp_flags
),
153 TP_ARGS(order
, gfp_flags
)
156 LTTNG_TRACEPOINT_EVENT_INSTANCE(mm_vmscan_direct_reclaim_begin_template
, mm_vmscan_memcg_softlimit_reclaim_begin
,
158 TP_PROTO(int order
, gfp_t gfp_flags
),
160 TP_ARGS(order
, gfp_flags
)
163 #elif (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,8,0))
165 LTTNG_TRACEPOINT_EVENT_CLASS(mm_vmscan_direct_reclaim_begin_template
,
167 TP_PROTO(int order
, int may_writepage
, gfp_t gfp_flags
, int classzone_idx
),
169 TP_ARGS(order
, may_writepage
, gfp_flags
, classzone_idx
),
172 ctf_integer(int, order
, order
)
173 ctf_integer(int, may_writepage
, may_writepage
)
174 ctf_integer(gfp_t
, gfp_flags
, gfp_flags
)
175 ctf_integer(int, classzone_idx
, classzone_idx
)
179 LTTNG_TRACEPOINT_EVENT_INSTANCE(mm_vmscan_direct_reclaim_begin_template
, mm_vmscan_direct_reclaim_begin
,
181 TP_PROTO(int order
, int may_writepage
, gfp_t gfp_flags
, int classzone_idx
),
183 TP_ARGS(order
, may_writepage
, gfp_flags
, classzone_idx
)
186 LTTNG_TRACEPOINT_EVENT_INSTANCE(mm_vmscan_direct_reclaim_begin_template
, mm_vmscan_memcg_reclaim_begin
,
188 TP_PROTO(int order
, int may_writepage
, gfp_t gfp_flags
, int classzone_idx
),
190 TP_ARGS(order
, may_writepage
, gfp_flags
, classzone_idx
)
193 LTTNG_TRACEPOINT_EVENT_INSTANCE(mm_vmscan_direct_reclaim_begin_template
, mm_vmscan_memcg_softlimit_reclaim_begin
,
195 TP_PROTO(int order
, int may_writepage
, gfp_t gfp_flags
, int classzone_idx
),
197 TP_ARGS(order
, may_writepage
, gfp_flags
, classzone_idx
)
202 LTTNG_TRACEPOINT_EVENT_CLASS(mm_vmscan_direct_reclaim_begin_template
,
204 TP_PROTO(int order
, int may_writepage
, gfp_t gfp_flags
),
206 TP_ARGS(order
, may_writepage
, gfp_flags
),
209 ctf_integer(int, order
, order
)
210 ctf_integer(int, may_writepage
, may_writepage
)
211 ctf_integer(gfp_t
, gfp_flags
, gfp_flags
)
215 LTTNG_TRACEPOINT_EVENT_INSTANCE(mm_vmscan_direct_reclaim_begin_template
, mm_vmscan_direct_reclaim_begin
,
217 TP_PROTO(int order
, int may_writepage
, gfp_t gfp_flags
),
219 TP_ARGS(order
, may_writepage
, gfp_flags
)
222 LTTNG_TRACEPOINT_EVENT_INSTANCE(mm_vmscan_direct_reclaim_begin_template
, mm_vmscan_memcg_reclaim_begin
,
224 TP_PROTO(int order
, int may_writepage
, gfp_t gfp_flags
),
226 TP_ARGS(order
, may_writepage
, gfp_flags
)
229 LTTNG_TRACEPOINT_EVENT_INSTANCE(mm_vmscan_direct_reclaim_begin_template
, mm_vmscan_memcg_softlimit_reclaim_begin
,
231 TP_PROTO(int order
, int may_writepage
, gfp_t gfp_flags
),
233 TP_ARGS(order
, may_writepage
, gfp_flags
)
238 LTTNG_TRACEPOINT_EVENT_CLASS(mm_vmscan_direct_reclaim_end_template
,
240 TP_PROTO(unsigned long nr_reclaimed
),
242 TP_ARGS(nr_reclaimed
),
245 ctf_integer(unsigned long, nr_reclaimed
, nr_reclaimed
)
249 LTTNG_TRACEPOINT_EVENT_INSTANCE(mm_vmscan_direct_reclaim_end_template
, mm_vmscan_direct_reclaim_end
,
251 TP_PROTO(unsigned long nr_reclaimed
),
253 TP_ARGS(nr_reclaimed
)
256 LTTNG_TRACEPOINT_EVENT_INSTANCE(mm_vmscan_direct_reclaim_end_template
, mm_vmscan_memcg_reclaim_end
,
258 TP_PROTO(unsigned long nr_reclaimed
),
260 TP_ARGS(nr_reclaimed
)
263 LTTNG_TRACEPOINT_EVENT_INSTANCE(mm_vmscan_direct_reclaim_end_template
, mm_vmscan_memcg_softlimit_reclaim_end
,
265 TP_PROTO(unsigned long nr_reclaimed
),
267 TP_ARGS(nr_reclaimed
)
270 #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,16,0))
271 LTTNG_TRACEPOINT_EVENT_MAP(mm_shrink_slab_start
,
273 mm_vmscan_shrink_slab_start
,
275 TP_PROTO(struct shrinker
*shr
, struct shrink_control
*sc
,
276 long nr_objects_to_shrink
, unsigned long cache_items
,
277 unsigned long long delta
, unsigned long total_scan
,
280 TP_ARGS(shr
, sc
, nr_objects_to_shrink
, cache_items
, delta
, total_scan
,
284 ctf_integer_hex(struct shrinker
*, shr
, shr
)
285 ctf_integer_hex(void *, shrink
, shr
->scan_objects
)
286 ctf_integer(int, nid
, sc
->nid
)
287 ctf_integer(long, nr_objects_to_shrink
, nr_objects_to_shrink
)
288 ctf_integer(gfp_t
, gfp_flags
, sc
->gfp_mask
)
289 ctf_integer(unsigned long, cache_items
, cache_items
)
290 ctf_integer(unsigned long long, delta
, delta
)
291 ctf_integer(unsigned long, total_scan
, total_scan
)
292 ctf_integer(int, priority
, priority
)
295 #elif (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(3,1,0))
296 LTTNG_TRACEPOINT_EVENT_MAP(mm_shrink_slab_start
,
298 mm_vmscan_shrink_slab_start
,
300 TP_PROTO(struct shrinker
*shr
, struct shrink_control
*sc
,
301 long nr_objects_to_shrink
, unsigned long pgs_scanned
,
302 unsigned long lru_pgs
, unsigned long cache_items
,
303 unsigned long long delta
, unsigned long total_scan
),
305 TP_ARGS(shr
, sc
, nr_objects_to_shrink
, pgs_scanned
, lru_pgs
,
306 cache_items
, delta
, total_scan
),
309 ctf_integer_hex(struct shrinker
*, shr
, shr
)
310 #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(3,12,0))
311 ctf_integer_hex(void *, shrink
, shr
->scan_objects
)
312 #else /* #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(3,12,0)) */
313 ctf_integer_hex(void *, shrink
, shr
->shrink
)
314 #endif /* #else #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(3,12,0)) */
315 ctf_integer(long, nr_objects_to_shrink
, nr_objects_to_shrink
)
316 ctf_integer(gfp_t
, gfp_flags
, sc
->gfp_mask
)
317 ctf_integer(unsigned long, pgs_scanned
, pgs_scanned
)
318 ctf_integer(unsigned long, lru_pgs
, lru_pgs
)
319 ctf_integer(unsigned long, cache_items
, cache_items
)
320 ctf_integer(unsigned long long, delta
, delta
)
321 ctf_integer(unsigned long, total_scan
, total_scan
)
326 #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(3,16,0))
327 LTTNG_TRACEPOINT_EVENT_MAP(mm_shrink_slab_end
,
329 mm_vmscan_shrink_slab_end
,
331 TP_PROTO(struct shrinker
*shr
, int nid
, int shrinker_retval
,
332 long unused_scan_cnt
, long new_scan_cnt
, long total_scan
),
334 TP_ARGS(shr
, nid
, shrinker_retval
, unused_scan_cnt
, new_scan_cnt
,
338 ctf_integer_hex(struct shrinker
*, shr
, shr
)
339 ctf_integer(int, nid
, nid
)
340 ctf_integer_hex(void *, shrink
, shr
->scan_objects
)
341 ctf_integer(long, unused_scan
, unused_scan_cnt
)
342 ctf_integer(long, new_scan
, new_scan_cnt
)
343 ctf_integer(int, retval
, shrinker_retval
)
344 ctf_integer(long, total_scan
, total_scan
)
347 #elif (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(3,1,0))
348 LTTNG_TRACEPOINT_EVENT_MAP(mm_shrink_slab_end
,
350 mm_vmscan_shrink_slab_end
,
352 TP_PROTO(struct shrinker
*shr
, int shrinker_retval
,
353 long unused_scan_cnt
, long new_scan_cnt
),
355 TP_ARGS(shr
, shrinker_retval
, unused_scan_cnt
, new_scan_cnt
),
358 ctf_integer_hex(struct shrinker
*, shr
, shr
)
359 #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(3,12,0))
360 ctf_integer_hex(void *, shrink
, shr
->scan_objects
)
361 #else /* #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(3,12,0)) */
362 ctf_integer_hex(void *, shrink
, shr
->shrink
)
363 #endif /* #else #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(3,12,0)) */
364 ctf_integer(long, unused_scan
, unused_scan_cnt
)
365 ctf_integer(long, new_scan
, new_scan_cnt
)
366 ctf_integer(int, retval
, shrinker_retval
)
367 ctf_integer(long, total_scan
, new_scan_cnt
- unused_scan_cnt
)
372 #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(6,7,0) || \
373 LTTNG_RHEL_KERNEL_RANGE(5,14,0,427,16,1, 5,15,0,0,0,0))
375 LTTNG_TRACEPOINT_EVENT(mm_vmscan_lru_isolate
,
377 TP_PROTO(int classzone_idx
,
379 unsigned long nr_requested
,
380 unsigned long nr_scanned
,
381 unsigned long nr_skipped
,
382 unsigned long nr_taken
,
386 TP_ARGS(classzone_idx
, order
, nr_requested
, nr_scanned
, nr_skipped
,
391 ctf_integer(int, classzone_idx
, classzone_idx
)
392 ctf_integer(int, order
, order
)
393 ctf_integer(unsigned long, nr_requested
, nr_requested
)
394 ctf_integer(unsigned long, nr_scanned
, nr_scanned
)
395 ctf_integer(unsigned long, nr_skipped
, nr_skipped
)
396 ctf_integer(unsigned long, nr_taken
, nr_taken
)
397 ctf_integer(int, lru
, lru
)
400 #elif (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,11,0))
401 LTTNG_TRACEPOINT_EVENT(mm_vmscan_lru_isolate
,
403 TP_PROTO(int classzone_idx
,
405 unsigned long nr_requested
,
406 unsigned long nr_scanned
,
407 unsigned long nr_skipped
,
408 unsigned long nr_taken
,
409 isolate_mode_t isolate_mode
,
413 TP_ARGS(classzone_idx
, order
, nr_requested
, nr_scanned
, nr_skipped
,
414 nr_taken
, isolate_mode
, lru
418 ctf_integer(int, classzone_idx
, classzone_idx
)
419 ctf_integer(int, order
, order
)
420 ctf_integer(unsigned long, nr_requested
, nr_requested
)
421 ctf_integer(unsigned long, nr_scanned
, nr_scanned
)
422 ctf_integer(unsigned long, nr_skipped
, nr_skipped
)
423 ctf_integer(unsigned long, nr_taken
, nr_taken
)
424 ctf_integer(isolate_mode_t
, isolate_mode
, isolate_mode
)
425 ctf_integer(int, lru
, lru
)
428 #elif (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,8,0))
429 LTTNG_TRACEPOINT_EVENT_CLASS(mm_vmscan_lru_isolate_template
,
431 TP_PROTO(int classzone_idx
,
433 unsigned long nr_requested
,
434 unsigned long nr_scanned
,
435 unsigned long nr_taken
,
436 isolate_mode_t isolate_mode
,
440 TP_ARGS(classzone_idx
, order
, nr_requested
, nr_scanned
, nr_taken
,
446 ctf_integer(int, classzone_idx
, classzone_idx
)
447 ctf_integer(int, order
, order
)
448 ctf_integer(unsigned long, nr_requested
, nr_requested
)
449 ctf_integer(unsigned long, nr_scanned
, nr_scanned
)
450 ctf_integer(unsigned long, nr_taken
, nr_taken
)
451 ctf_integer(isolate_mode_t
, isolate_mode
, isolate_mode
)
452 ctf_integer(int, file
, file
)
456 LTTNG_TRACEPOINT_EVENT_INSTANCE(mm_vmscan_lru_isolate_template
, mm_vmscan_lru_isolate
,
458 TP_PROTO(int classzone_idx
,
460 unsigned long nr_requested
,
461 unsigned long nr_scanned
,
462 unsigned long nr_taken
,
463 isolate_mode_t isolate_mode
,
467 TP_ARGS(classzone_idx
, order
, nr_requested
, nr_scanned
, nr_taken
,
473 LTTNG_TRACEPOINT_EVENT_INSTANCE(mm_vmscan_lru_isolate_template
, mm_vmscan_memcg_isolate
,
475 TP_PROTO(int classzone_idx
,
477 unsigned long nr_requested
,
478 unsigned long nr_scanned
,
479 unsigned long nr_taken
,
480 isolate_mode_t isolate_mode
,
484 TP_ARGS(classzone_idx
, order
, nr_requested
, nr_scanned
, nr_taken
,
489 LTTNG_TRACEPOINT_EVENT_CLASS(mm_vmscan_lru_isolate_template
,
492 unsigned long nr_requested
,
493 unsigned long nr_scanned
,
494 unsigned long nr_taken
,
495 #if (LTTNG_LINUX_VERSION_CODE < LTTNG_KERNEL_VERSION(3,5,0))
496 unsigned long nr_lumpy_taken
,
497 unsigned long nr_lumpy_dirty
,
498 unsigned long nr_lumpy_failed
,
500 #if (LTTNG_LINUX_VERSION_CODE < LTTNG_KERNEL_VERSION(3,3,0))
501 isolate_mode_t isolate_mode
503 isolate_mode_t isolate_mode
,
508 TP_ARGS(order
, nr_requested
, nr_scanned
, nr_taken
,
509 #if (LTTNG_LINUX_VERSION_CODE < LTTNG_KERNEL_VERSION(3,5,0))
510 nr_lumpy_taken
, nr_lumpy_dirty
, nr_lumpy_failed
,
512 #if (LTTNG_LINUX_VERSION_CODE < LTTNG_KERNEL_VERSION(3,3,0))
521 ctf_integer(int, order
, order
)
522 ctf_integer(unsigned long, nr_requested
, nr_requested
)
523 ctf_integer(unsigned long, nr_scanned
, nr_scanned
)
524 ctf_integer(unsigned long, nr_taken
, nr_taken
)
525 #if (LTTNG_LINUX_VERSION_CODE < LTTNG_KERNEL_VERSION(3,5,0))
526 ctf_integer(unsigned long, nr_lumpy_taken
, nr_lumpy_taken
)
527 ctf_integer(unsigned long, nr_lumpy_dirty
, nr_lumpy_dirty
)
528 ctf_integer(unsigned long, nr_lumpy_failed
, nr_lumpy_failed
)
530 ctf_integer(isolate_mode_t
, isolate_mode
, isolate_mode
)
531 #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(3,3,0))
532 ctf_integer(int, file
, file
)
537 LTTNG_TRACEPOINT_EVENT_INSTANCE(mm_vmscan_lru_isolate_template
, mm_vmscan_lru_isolate
,
540 unsigned long nr_requested
,
541 unsigned long nr_scanned
,
542 unsigned long nr_taken
,
543 #if (LTTNG_LINUX_VERSION_CODE < LTTNG_KERNEL_VERSION(3,5,0))
544 unsigned long nr_lumpy_taken
,
545 unsigned long nr_lumpy_dirty
,
546 unsigned long nr_lumpy_failed
,
548 #if (LTTNG_LINUX_VERSION_CODE < LTTNG_KERNEL_VERSION(3,3,0))
549 isolate_mode_t isolate_mode
551 isolate_mode_t isolate_mode
,
556 TP_ARGS(order
, nr_requested
, nr_scanned
, nr_taken
,
557 #if (LTTNG_LINUX_VERSION_CODE < LTTNG_KERNEL_VERSION(3,5,0))
558 nr_lumpy_taken
, nr_lumpy_dirty
, nr_lumpy_failed
,
560 #if (LTTNG_LINUX_VERSION_CODE < LTTNG_KERNEL_VERSION(3,3,0))
569 LTTNG_TRACEPOINT_EVENT_INSTANCE(mm_vmscan_lru_isolate_template
, mm_vmscan_memcg_isolate
,
572 unsigned long nr_requested
,
573 unsigned long nr_scanned
,
574 unsigned long nr_taken
,
575 #if (LTTNG_LINUX_VERSION_CODE < LTTNG_KERNEL_VERSION(3,5,0))
576 unsigned long nr_lumpy_taken
,
577 unsigned long nr_lumpy_dirty
,
578 unsigned long nr_lumpy_failed
,
580 #if (LTTNG_LINUX_VERSION_CODE < LTTNG_KERNEL_VERSION(3,3,0))
581 isolate_mode_t isolate_mode
583 isolate_mode_t isolate_mode
,
588 TP_ARGS(order
, nr_requested
, nr_scanned
, nr_taken
,
589 #if (LTTNG_LINUX_VERSION_CODE < LTTNG_KERNEL_VERSION(3,5,0))
590 nr_lumpy_taken
, nr_lumpy_dirty
, nr_lumpy_failed
,
592 #if (LTTNG_LINUX_VERSION_CODE < LTTNG_KERNEL_VERSION(3,3,0))
601 #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,7,0))
602 LTTNG_TRACEPOINT_EVENT(mm_vmscan_writepage
,
604 TP_PROTO(struct page
*page
),
609 ctf_integer_hex(struct page
*, page
, page
)
610 ctf_integer(int, reclaim_flags
, trace_reclaim_flags(
611 page_is_file_lru(page
)))
614 #elif (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,2,0))
615 LTTNG_TRACEPOINT_EVENT(mm_vmscan_writepage
,
617 TP_PROTO(struct page
*page
),
622 ctf_integer_hex(struct page
*, page
, page
)
623 ctf_integer(int, reclaim_flags
, trace_reclaim_flags(
624 page_is_file_cache(page
)))
627 #elif (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,5,0))
628 LTTNG_TRACEPOINT_EVENT(mm_vmscan_writepage
,
630 TP_PROTO(struct page
*page
),
635 ctf_integer_hex(struct page
*, page
, page
)
636 ctf_integer(int, reclaim_flags
, trace_reclaim_flags(page
))
640 LTTNG_TRACEPOINT_EVENT(mm_vmscan_writepage
,
642 TP_PROTO(struct page
*page
,
645 TP_ARGS(page
, reclaim_flags
),
648 ctf_integer_hex(struct page
*, page
, page
)
649 ctf_integer(int, reclaim_flags
, reclaim_flags
)
654 #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,2,0) || \
655 LTTNG_RHEL_KERNEL_RANGE(4,18,0,305,0,0, 4,19,0,0,0,0))
656 LTTNG_TRACEPOINT_EVENT(mm_vmscan_lru_shrink_inactive
,
659 unsigned long nr_scanned
, unsigned long nr_reclaimed
,
660 struct reclaim_stat
*stat
, int priority
, int file
),
662 TP_ARGS(nid
, nr_scanned
, nr_reclaimed
, stat
, priority
, file
),
665 ctf_integer(int, nid
, nid
)
666 ctf_integer(unsigned long, nr_scanned
, nr_scanned
)
667 ctf_integer(unsigned long, nr_reclaimed
, nr_reclaimed
)
668 ctf_integer(unsigned long, nr_dirty
, stat
->nr_dirty
)
669 ctf_integer(unsigned long, nr_writeback
, stat
->nr_writeback
)
670 ctf_integer(unsigned long, nr_congested
, stat
->nr_congested
)
671 ctf_integer(unsigned long, nr_immediate
, stat
->nr_immediate
)
672 ctf_integer(unsigned long, nr_activate_anon
, stat
->nr_activate
[0])
673 ctf_integer(unsigned long, nr_activate_file
, stat
->nr_activate
[1])
674 ctf_integer(unsigned long, nr_ref_keep
, stat
->nr_ref_keep
)
675 ctf_integer(unsigned long, nr_unmap_fail
, stat
->nr_unmap_fail
)
676 ctf_integer(int, priority
, priority
)
677 ctf_integer(int, reclaim_flags
, trace_reclaim_flags(file
))
680 #elif (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,17,0))
681 LTTNG_TRACEPOINT_EVENT(mm_vmscan_lru_shrink_inactive
,
684 unsigned long nr_scanned
, unsigned long nr_reclaimed
,
685 struct reclaim_stat
*stat
, int priority
, int file
),
687 TP_ARGS(nid
, nr_scanned
, nr_reclaimed
, stat
, priority
, file
),
690 ctf_integer(int, nid
, nid
)
691 ctf_integer(unsigned long, nr_scanned
, nr_scanned
)
692 ctf_integer(unsigned long, nr_reclaimed
, nr_reclaimed
)
693 ctf_integer(unsigned long, nr_dirty
, stat
->nr_dirty
)
694 ctf_integer(unsigned long, nr_writeback
, stat
->nr_writeback
)
695 ctf_integer(unsigned long, nr_congested
, stat
->nr_congested
)
696 ctf_integer(unsigned long, nr_immediate
, stat
->nr_immediate
)
697 ctf_integer(unsigned long, nr_activate
, stat
->nr_activate
)
698 ctf_integer(unsigned long, nr_ref_keep
, stat
->nr_ref_keep
)
699 ctf_integer(unsigned long, nr_unmap_fail
, stat
->nr_unmap_fail
)
700 ctf_integer(int, priority
, priority
)
701 ctf_integer(int, reclaim_flags
, trace_shrink_flags(file
))
704 #elif (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,11,0))
705 LTTNG_TRACEPOINT_EVENT(mm_vmscan_lru_shrink_inactive
,
708 unsigned long nr_scanned
, unsigned long nr_reclaimed
,
709 unsigned long nr_dirty
, unsigned long nr_writeback
,
710 unsigned long nr_congested
, unsigned long nr_immediate
,
711 unsigned long nr_activate
, unsigned long nr_ref_keep
,
712 unsigned long nr_unmap_fail
,
713 int priority
, int file
),
715 TP_ARGS(nid
, nr_scanned
, nr_reclaimed
, nr_dirty
, nr_writeback
,
716 nr_congested
, nr_immediate
, nr_activate
, nr_ref_keep
,
717 nr_unmap_fail
, priority
, file
),
720 ctf_integer(int, nid
, nid
)
721 ctf_integer(unsigned long, nr_scanned
, nr_scanned
)
722 ctf_integer(unsigned long, nr_reclaimed
, nr_reclaimed
)
723 ctf_integer(unsigned long, nr_dirty
, nr_dirty
)
724 ctf_integer(unsigned long, nr_writeback
, nr_writeback
)
725 ctf_integer(unsigned long, nr_congested
, nr_congested
)
726 ctf_integer(unsigned long, nr_immediate
, nr_immediate
)
727 ctf_integer(unsigned long, nr_activate
, nr_activate
)
728 ctf_integer(unsigned long, nr_ref_keep
, nr_ref_keep
)
729 ctf_integer(unsigned long, nr_unmap_fail
, nr_unmap_fail
)
730 ctf_integer(int, priority
, priority
)
731 ctf_integer(int, reclaim_flags
, trace_shrink_flags(file
))
734 #elif (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,8,0))
735 LTTNG_TRACEPOINT_EVENT(mm_vmscan_lru_shrink_inactive
,
738 unsigned long nr_scanned
, unsigned long nr_reclaimed
,
739 int priority
, int file
),
741 TP_ARGS(nid
, nr_scanned
, nr_reclaimed
, priority
, file
),
744 ctf_integer(int, nid
, nid
)
745 ctf_integer(unsigned long, nr_scanned
, nr_scanned
)
746 ctf_integer(unsigned long, nr_reclaimed
, nr_reclaimed
)
747 ctf_integer(int, priority
, priority
)
748 ctf_integer(int, reclaim_flags
, trace_shrink_flags(file
))
751 #elif (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,5,0))
752 LTTNG_TRACEPOINT_EVENT(mm_vmscan_lru_shrink_inactive
,
754 TP_PROTO(struct zone
*zone
,
755 unsigned long nr_scanned
, unsigned long nr_reclaimed
,
756 int priority
, int file
),
758 TP_ARGS(zone
, nr_scanned
, nr_reclaimed
, priority
, file
),
761 ctf_integer(int, nid
, zone_to_nid(zone
))
762 ctf_integer(int, zid
, zone_idx(zone
))
763 ctf_integer(unsigned long, nr_scanned
, nr_scanned
)
764 ctf_integer(unsigned long, nr_reclaimed
, nr_reclaimed
)
765 ctf_integer(int, priority
, priority
)
766 ctf_integer(int, reclaim_flags
, trace_shrink_flags(file
))
770 LTTNG_TRACEPOINT_EVENT(mm_vmscan_lru_shrink_inactive
,
772 TP_PROTO(int nid
, int zid
,
773 unsigned long nr_scanned
, unsigned long nr_reclaimed
,
774 int priority
, int reclaim_flags
),
776 TP_ARGS(nid
, zid
, nr_scanned
, nr_reclaimed
, priority
, reclaim_flags
),
779 ctf_integer(int, nid
, nid
)
780 ctf_integer(int, zid
, zid
)
781 ctf_integer(unsigned long, nr_scanned
, nr_scanned
)
782 ctf_integer(unsigned long, nr_reclaimed
, nr_reclaimed
)
783 ctf_integer(int, priority
, priority
)
784 ctf_integer(int, reclaim_flags
, reclaim_flags
)
789 #if (LTTNG_LINUX_VERSION_CODE < LTTNG_KERNEL_VERSION(3,5,0))
790 LTTNG_TRACEPOINT_EVENT_MAP(replace_swap_token
,
792 mm_vmscan_replace_swap_token
,
794 TP_PROTO(struct mm_struct
*old_mm
,
795 struct mm_struct
*new_mm
),
797 TP_ARGS(old_mm
, new_mm
),
800 ctf_integer_hex(struct mm_struct
*, old_mm
, old_mm
)
801 ctf_integer(unsigned int, old_prio
, old_mm
? old_mm
->token_priority
: 0)
802 ctf_integer_hex(struct mm_struct
*, new_mm
, new_mm
)
803 ctf_integer(unsigned int, new_prio
, new_mm
->token_priority
)
807 LTTNG_TRACEPOINT_EVENT_CLASS(mm_vmscan_put_swap_token_template
,
808 TP_PROTO(struct mm_struct
*swap_token_mm
),
810 TP_ARGS(swap_token_mm
),
813 ctf_integer_hex(struct mm_struct
*, swap_token_mm
, swap_token_mm
)
817 LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(mm_vmscan_put_swap_token_template
, put_swap_token
,
819 mm_vmscan_put_swap_token
,
821 TP_PROTO(struct mm_struct
*swap_token_mm
),
822 TP_ARGS(swap_token_mm
)
825 LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(mm_vmscan_put_swap_token_template
, disable_swap_token
,
827 mm_vmscan_disable_swap_token
,
829 TP_PROTO(struct mm_struct
*swap_token_mm
),
830 TP_ARGS(swap_token_mm
)
833 LTTNG_TRACEPOINT_EVENT_MAP(update_swap_token_priority
,
835 mm_vmscan_update_swap_token_priority
,
837 TP_PROTO(struct mm_struct
*mm
,
838 unsigned int old_prio
,
839 struct mm_struct
*swap_token_mm
),
841 TP_ARGS(mm
, old_prio
, swap_token_mm
),
844 ctf_integer_hex(struct mm_struct
*, mm
, mm
)
845 ctf_integer(unsigned int, old_prio
, old_prio
)
846 ctf_integer(unsigned int, new_prio
, mm
->token_priority
)
847 ctf_integer_hex(struct mm_struct
*, swap_token_mm
, swap_token_mm
)
848 ctf_integer(unsigned int, swap_token_prio
, swap_token_mm
? swap_token_mm
->token_priority
: 0)
853 #endif /* LTTNG_TRACE_MM_VMSCAN_H */
855 /* This part must be outside protection */
856 #include <lttng/define_trace.h>