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/lttng-tracepoint-event.h>
9 #include <linux/types.h>
11 #include <linux/memcontrol.h>
13 #ifndef _TRACE_VMSCAN_DEF
14 #define _TRACE_VMSCAN_DEF
15 #define RECLAIM_WB_ANON 0x0001u
16 #define RECLAIM_WB_FILE 0x0002u
17 #define RECLAIM_WB_MIXED 0x0010u
18 #define RECLAIM_WB_SYNC 0x0004u /* Unused, all reclaim async */
19 #define RECLAIM_WB_ASYNC 0x0008u
22 #include <linux/mm_inline.h>
24 #define trace_reclaim_flags(file) ( \
25 (file ? RECLAIM_WB_FILE : RECLAIM_WB_ANON) | \
29 LTTNG_TRACEPOINT_EVENT(mm_vmscan_kswapd_sleep
,
36 ctf_integer(int, nid
, nid
)
40 LTTNG_TRACEPOINT_EVENT(mm_vmscan_kswapd_wake
,
42 TP_PROTO(int nid
, int zid
, int order
),
44 TP_ARGS(nid
, zid
, order
),
47 ctf_integer(int, nid
, nid
)
48 ctf_integer(int, zid
, zid
)
49 ctf_integer(int, order
, order
)
53 LTTNG_TRACEPOINT_EVENT(mm_vmscan_wakeup_kswapd
,
55 TP_PROTO(int nid
, int zid
, int order
, gfp_t gfp_flags
),
57 TP_ARGS(nid
, zid
, order
, gfp_flags
),
60 ctf_integer(int, nid
, nid
)
61 ctf_integer(int, zid
, zid
)
62 ctf_integer(int, order
, order
)
63 ctf_integer(gfp_t
, gfp_flags
, gfp_flags
)
67 LTTNG_TRACEPOINT_EVENT_CLASS(mm_vmscan_direct_reclaim_begin_template
,
69 TP_PROTO(int order
, gfp_t gfp_flags
),
71 TP_ARGS(order
, gfp_flags
),
74 ctf_integer(int, order
, order
)
75 ctf_integer(gfp_t
, gfp_flags
, gfp_flags
)
79 LTTNG_TRACEPOINT_EVENT_INSTANCE(mm_vmscan_direct_reclaim_begin_template
, mm_vmscan_direct_reclaim_begin
,
81 TP_PROTO(int order
, gfp_t gfp_flags
),
83 TP_ARGS(order
, gfp_flags
)
86 LTTNG_TRACEPOINT_EVENT_INSTANCE(mm_vmscan_direct_reclaim_begin_template
, mm_vmscan_memcg_reclaim_begin
,
88 TP_PROTO(int order
, gfp_t gfp_flags
),
90 TP_ARGS(order
, gfp_flags
)
93 LTTNG_TRACEPOINT_EVENT_INSTANCE(mm_vmscan_direct_reclaim_begin_template
, mm_vmscan_memcg_softlimit_reclaim_begin
,
95 TP_PROTO(int order
, gfp_t gfp_flags
),
97 TP_ARGS(order
, gfp_flags
)
100 LTTNG_TRACEPOINT_EVENT_CLASS(mm_vmscan_direct_reclaim_end_template
,
102 TP_PROTO(unsigned long nr_reclaimed
),
104 TP_ARGS(nr_reclaimed
),
107 ctf_integer(unsigned long, nr_reclaimed
, nr_reclaimed
)
111 LTTNG_TRACEPOINT_EVENT_INSTANCE(mm_vmscan_direct_reclaim_end_template
, mm_vmscan_direct_reclaim_end
,
113 TP_PROTO(unsigned long nr_reclaimed
),
115 TP_ARGS(nr_reclaimed
)
118 LTTNG_TRACEPOINT_EVENT_INSTANCE(mm_vmscan_direct_reclaim_end_template
, mm_vmscan_memcg_reclaim_end
,
120 TP_PROTO(unsigned long nr_reclaimed
),
122 TP_ARGS(nr_reclaimed
)
125 LTTNG_TRACEPOINT_EVENT_INSTANCE(mm_vmscan_direct_reclaim_end_template
, mm_vmscan_memcg_softlimit_reclaim_end
,
127 TP_PROTO(unsigned long nr_reclaimed
),
129 TP_ARGS(nr_reclaimed
)
132 LTTNG_TRACEPOINT_EVENT_MAP(mm_shrink_slab_start
,
134 mm_vmscan_shrink_slab_start
,
136 TP_PROTO(struct shrinker
*shr
, struct shrink_control
*sc
,
137 long nr_objects_to_shrink
, unsigned long cache_items
,
138 unsigned long long delta
, unsigned long total_scan
,
141 TP_ARGS(shr
, sc
, nr_objects_to_shrink
, cache_items
, delta
, total_scan
,
145 ctf_integer_hex(struct shrinker
*, shr
, shr
)
146 ctf_integer_hex(void *, shrink
, shr
->scan_objects
)
147 ctf_integer(int, nid
, sc
->nid
)
148 ctf_integer(long, nr_objects_to_shrink
, nr_objects_to_shrink
)
149 ctf_integer(gfp_t
, gfp_flags
, sc
->gfp_mask
)
150 ctf_integer(unsigned long, cache_items
, cache_items
)
151 ctf_integer(unsigned long long, delta
, delta
)
152 ctf_integer(unsigned long, total_scan
, total_scan
)
153 ctf_integer(int, priority
, priority
)
157 LTTNG_TRACEPOINT_EVENT_MAP(mm_shrink_slab_end
,
159 mm_vmscan_shrink_slab_end
,
161 TP_PROTO(struct shrinker
*shr
, int nid
, int shrinker_retval
,
162 long unused_scan_cnt
, long new_scan_cnt
, long total_scan
),
164 TP_ARGS(shr
, nid
, shrinker_retval
, unused_scan_cnt
, new_scan_cnt
,
168 ctf_integer_hex(struct shrinker
*, shr
, shr
)
169 ctf_integer(int, nid
, nid
)
170 ctf_integer_hex(void *, shrink
, shr
->scan_objects
)
171 ctf_integer(long, unused_scan
, unused_scan_cnt
)
172 ctf_integer(long, new_scan
, new_scan_cnt
)
173 ctf_integer(int, retval
, shrinker_retval
)
174 ctf_integer(long, total_scan
, total_scan
)
178 LTTNG_TRACEPOINT_EVENT(mm_vmscan_lru_isolate
,
180 TP_PROTO(int classzone_idx
,
182 unsigned long nr_requested
,
183 unsigned long nr_scanned
,
184 unsigned long nr_skipped
,
185 unsigned long nr_taken
,
186 isolate_mode_t isolate_mode
,
190 TP_ARGS(classzone_idx
, order
, nr_requested
, nr_scanned
, nr_skipped
,
191 nr_taken
, isolate_mode
, lru
195 ctf_integer(int, classzone_idx
, classzone_idx
)
196 ctf_integer(int, order
, order
)
197 ctf_integer(unsigned long, nr_requested
, nr_requested
)
198 ctf_integer(unsigned long, nr_scanned
, nr_scanned
)
199 ctf_integer(unsigned long, nr_skipped
, nr_skipped
)
200 ctf_integer(unsigned long, nr_taken
, nr_taken
)
201 ctf_integer(isolate_mode_t
, isolate_mode
, isolate_mode
)
202 ctf_integer(int, lru
, lru
)
206 LTTNG_TRACEPOINT_EVENT(mm_vmscan_writepage
,
208 TP_PROTO(struct page
*page
),
213 ctf_integer_hex(struct page
*, page
, page
)
214 ctf_integer(int, reclaim_flags
, trace_reclaim_flags(
215 page_is_file_lru(page
)))
219 LTTNG_TRACEPOINT_EVENT(mm_vmscan_lru_shrink_inactive
,
222 unsigned long nr_scanned
, unsigned long nr_reclaimed
,
223 struct reclaim_stat
*stat
, int priority
, int file
),
225 TP_ARGS(nid
, nr_scanned
, nr_reclaimed
, stat
, priority
, file
),
228 ctf_integer(int, nid
, nid
)
229 ctf_integer(unsigned long, nr_scanned
, nr_scanned
)
230 ctf_integer(unsigned long, nr_reclaimed
, nr_reclaimed
)
231 ctf_integer(unsigned long, nr_dirty
, stat
->nr_dirty
)
232 ctf_integer(unsigned long, nr_writeback
, stat
->nr_writeback
)
233 ctf_integer(unsigned long, nr_congested
, stat
->nr_congested
)
234 ctf_integer(unsigned long, nr_immediate
, stat
->nr_immediate
)
235 ctf_integer(unsigned long, nr_activate_anon
, stat
->nr_activate
[0])
236 ctf_integer(unsigned long, nr_activate_file
, stat
->nr_activate
[1])
237 ctf_integer(unsigned long, nr_ref_keep
, stat
->nr_ref_keep
)
238 ctf_integer(unsigned long, nr_unmap_fail
, stat
->nr_unmap_fail
)
239 ctf_integer(int, priority
, priority
)
240 ctf_integer(int, reclaim_flags
, trace_reclaim_flags(file
))
244 #endif /* LTTNG_TRACE_MM_VMSCAN_H */
246 /* This part must be outside protection */
247 #include <lttng/define_trace.h>