hc
2024-10-22 8ac6c7a54ed1b98d142dce24b11c6de6a1e239a5
kernel/include/trace/events/vmscan.h
....@@ -27,15 +27,9 @@
2727 {RECLAIM_WB_ASYNC, "RECLAIM_WB_ASYNC"} \
2828 ) : "RECLAIM_WB_NONE"
2929
30
-#define trace_reclaim_flags(page) ( \
31
- (page_is_file_cache(page) ? RECLAIM_WB_FILE : RECLAIM_WB_ANON) | \
30
+#define trace_reclaim_flags(file) ( \
31
+ (file ? RECLAIM_WB_FILE : RECLAIM_WB_ANON) | \
3232 (RECLAIM_WB_ASYNC) \
33
- )
34
-
35
-#define trace_shrink_flags(file) \
36
- ( \
37
- (file ? RECLAIM_WB_FILE : RECLAIM_WB_ANON) | \
38
- (RECLAIM_WB_ASYNC) \
3933 )
4034
4135 TRACE_EVENT(mm_vmscan_kswapd_sleep,
....@@ -73,7 +67,9 @@
7367 __entry->order = order;
7468 ),
7569
76
- TP_printk("nid=%d zid=%d order=%d", __entry->nid, __entry->zid, __entry->order)
70
+ TP_printk("nid=%d order=%d",
71
+ __entry->nid,
72
+ __entry->order)
7773 );
7874
7975 TRACE_EVENT(mm_vmscan_wakeup_kswapd,
....@@ -96,60 +92,53 @@
9692 __entry->gfp_flags = gfp_flags;
9793 ),
9894
99
- TP_printk("nid=%d zid=%d order=%d gfp_flags=%s",
95
+ TP_printk("nid=%d order=%d gfp_flags=%s",
10096 __entry->nid,
101
- __entry->zid,
10297 __entry->order,
10398 show_gfp_flags(__entry->gfp_flags))
10499 );
105100
106101 DECLARE_EVENT_CLASS(mm_vmscan_direct_reclaim_begin_template,
107102
108
- TP_PROTO(int order, int may_writepage, gfp_t gfp_flags, int classzone_idx),
103
+ TP_PROTO(int order, gfp_t gfp_flags),
109104
110
- TP_ARGS(order, may_writepage, gfp_flags, classzone_idx),
105
+ TP_ARGS(order, gfp_flags),
111106
112107 TP_STRUCT__entry(
113108 __field( int, order )
114
- __field( int, may_writepage )
115109 __field( gfp_t, gfp_flags )
116
- __field( int, classzone_idx )
117110 ),
118111
119112 TP_fast_assign(
120113 __entry->order = order;
121
- __entry->may_writepage = may_writepage;
122114 __entry->gfp_flags = gfp_flags;
123
- __entry->classzone_idx = classzone_idx;
124115 ),
125116
126
- TP_printk("order=%d may_writepage=%d gfp_flags=%s classzone_idx=%d",
117
+ TP_printk("order=%d gfp_flags=%s",
127118 __entry->order,
128
- __entry->may_writepage,
129
- show_gfp_flags(__entry->gfp_flags),
130
- __entry->classzone_idx)
119
+ show_gfp_flags(__entry->gfp_flags))
131120 );
132121
133122 DEFINE_EVENT(mm_vmscan_direct_reclaim_begin_template, mm_vmscan_direct_reclaim_begin,
134123
135
- TP_PROTO(int order, int may_writepage, gfp_t gfp_flags, int classzone_idx),
124
+ TP_PROTO(int order, gfp_t gfp_flags),
136125
137
- TP_ARGS(order, may_writepage, gfp_flags, classzone_idx)
126
+ TP_ARGS(order, gfp_flags)
138127 );
139128
140129 #ifdef CONFIG_MEMCG
141130 DEFINE_EVENT(mm_vmscan_direct_reclaim_begin_template, mm_vmscan_memcg_reclaim_begin,
142131
143
- TP_PROTO(int order, int may_writepage, gfp_t gfp_flags, int classzone_idx),
132
+ TP_PROTO(int order, gfp_t gfp_flags),
144133
145
- TP_ARGS(order, may_writepage, gfp_flags, classzone_idx)
134
+ TP_ARGS(order, gfp_flags)
146135 );
147136
148137 DEFINE_EVENT(mm_vmscan_direct_reclaim_begin_template, mm_vmscan_memcg_softlimit_reclaim_begin,
149138
150
- TP_PROTO(int order, int may_writepage, gfp_t gfp_flags, int classzone_idx),
139
+ TP_PROTO(int order, gfp_t gfp_flags),
151140
152
- TP_ARGS(order, may_writepage, gfp_flags, classzone_idx)
141
+ TP_ARGS(order, gfp_flags)
153142 );
154143 #endif /* CONFIG_MEMCG */
155144
....@@ -226,7 +215,7 @@
226215 __entry->priority = priority;
227216 ),
228217
229
- TP_printk("%pF %p: nid: %d objects to shrink %ld gfp_flags %s cache items %ld delta %lld total_scan %ld priority %d",
218
+ TP_printk("%pS %p: nid: %d objects to shrink %ld gfp_flags %s cache items %ld delta %lld total_scan %ld priority %d",
230219 __entry->shrink,
231220 __entry->shr,
232221 __entry->nid,
....@@ -265,7 +254,7 @@
265254 __entry->total_scan = total_scan;
266255 ),
267256
268
- TP_printk("%pF %p: nid: %d unused scan count %ld new scan count %ld total_scan %ld last shrinker return val %d",
257
+ TP_printk("%pS %p: nid: %d unused scan count %ld new scan count %ld total_scan %ld last shrinker return val %d",
269258 __entry->shrink,
270259 __entry->shr,
271260 __entry->nid,
....@@ -276,7 +265,7 @@
276265 );
277266
278267 TRACE_EVENT(mm_vmscan_lru_isolate,
279
- TP_PROTO(int classzone_idx,
268
+ TP_PROTO(int highest_zoneidx,
280269 int order,
281270 unsigned long nr_requested,
282271 unsigned long nr_scanned,
....@@ -285,33 +274,37 @@
285274 isolate_mode_t isolate_mode,
286275 int lru),
287276
288
- TP_ARGS(classzone_idx, order, nr_requested, nr_scanned, nr_skipped, nr_taken, isolate_mode, lru),
277
+ TP_ARGS(highest_zoneidx, order, nr_requested, nr_scanned, nr_skipped, nr_taken, isolate_mode, lru),
289278
290279 TP_STRUCT__entry(
291
- __field(int, classzone_idx)
280
+ __field(int, highest_zoneidx)
292281 __field(int, order)
293282 __field(unsigned long, nr_requested)
294283 __field(unsigned long, nr_scanned)
295284 __field(unsigned long, nr_skipped)
296285 __field(unsigned long, nr_taken)
297
- __field(isolate_mode_t, isolate_mode)
286
+ __field(unsigned int, isolate_mode)
298287 __field(int, lru)
299288 ),
300289
301290 TP_fast_assign(
302
- __entry->classzone_idx = classzone_idx;
291
+ __entry->highest_zoneidx = highest_zoneidx;
303292 __entry->order = order;
304293 __entry->nr_requested = nr_requested;
305294 __entry->nr_scanned = nr_scanned;
306295 __entry->nr_skipped = nr_skipped;
307296 __entry->nr_taken = nr_taken;
308
- __entry->isolate_mode = isolate_mode;
297
+ __entry->isolate_mode = (__force unsigned int)isolate_mode;
309298 __entry->lru = lru;
310299 ),
311300
301
+ /*
302
+ * classzone is previous name of the highest_zoneidx.
303
+ * Reason not to change it is the ABI requirement of the tracepoint.
304
+ */
312305 TP_printk("isolate_mode=%d classzone=%d order=%d nr_requested=%lu nr_scanned=%lu nr_skipped=%lu nr_taken=%lu lru=%s",
313306 __entry->isolate_mode,
314
- __entry->classzone_idx,
307
+ __entry->highest_zoneidx,
315308 __entry->order,
316309 __entry->nr_requested,
317310 __entry->nr_scanned,
....@@ -333,7 +326,8 @@
333326
334327 TP_fast_assign(
335328 __entry->pfn = page_to_pfn(page);
336
- __entry->reclaim_flags = trace_reclaim_flags(page);
329
+ __entry->reclaim_flags = trace_reclaim_flags(
330
+ page_is_file_lru(page));
337331 ),
338332
339333 TP_printk("page=%p pfn=%lu flags=%s",
....@@ -358,7 +352,8 @@
358352 __field(unsigned long, nr_writeback)
359353 __field(unsigned long, nr_congested)
360354 __field(unsigned long, nr_immediate)
361
- __field(unsigned long, nr_activate)
355
+ __field(unsigned int, nr_activate0)
356
+ __field(unsigned int, nr_activate1)
362357 __field(unsigned long, nr_ref_keep)
363358 __field(unsigned long, nr_unmap_fail)
364359 __field(int, priority)
....@@ -373,20 +368,22 @@
373368 __entry->nr_writeback = stat->nr_writeback;
374369 __entry->nr_congested = stat->nr_congested;
375370 __entry->nr_immediate = stat->nr_immediate;
376
- __entry->nr_activate = stat->nr_activate;
371
+ __entry->nr_activate0 = stat->nr_activate[0];
372
+ __entry->nr_activate1 = stat->nr_activate[1];
377373 __entry->nr_ref_keep = stat->nr_ref_keep;
378374 __entry->nr_unmap_fail = stat->nr_unmap_fail;
379375 __entry->priority = priority;
380
- __entry->reclaim_flags = trace_shrink_flags(file);
376
+ __entry->reclaim_flags = trace_reclaim_flags(file);
381377 ),
382378
383
- TP_printk("nid=%d nr_scanned=%ld nr_reclaimed=%ld nr_dirty=%ld nr_writeback=%ld nr_congested=%ld nr_immediate=%ld nr_activate=%ld nr_ref_keep=%ld nr_unmap_fail=%ld priority=%d flags=%s",
379
+ TP_printk("nid=%d nr_scanned=%ld nr_reclaimed=%ld nr_dirty=%ld nr_writeback=%ld nr_congested=%ld nr_immediate=%ld nr_activate_anon=%d nr_activate_file=%d nr_ref_keep=%ld nr_unmap_fail=%ld priority=%d flags=%s",
384380 __entry->nid,
385381 __entry->nr_scanned, __entry->nr_reclaimed,
386382 __entry->nr_dirty, __entry->nr_writeback,
387383 __entry->nr_congested, __entry->nr_immediate,
388
- __entry->nr_activate, __entry->nr_ref_keep,
389
- __entry->nr_unmap_fail, __entry->priority,
384
+ __entry->nr_activate0, __entry->nr_activate1,
385
+ __entry->nr_ref_keep, __entry->nr_unmap_fail,
386
+ __entry->priority,
390387 show_reclaim_flags(__entry->reclaim_flags))
391388 );
392389
....@@ -415,7 +412,7 @@
415412 __entry->nr_deactivated = nr_deactivated;
416413 __entry->nr_referenced = nr_referenced;
417414 __entry->priority = priority;
418
- __entry->reclaim_flags = trace_shrink_flags(file);
415
+ __entry->reclaim_flags = trace_reclaim_flags(file);
419416 ),
420417
421418 TP_printk("nid=%d nr_taken=%ld nr_active=%ld nr_deactivated=%ld nr_referenced=%ld priority=%d flags=%s",
....@@ -454,7 +451,8 @@
454451 __entry->total_active = total_active;
455452 __entry->active = active;
456453 __entry->ratio = ratio;
457
- __entry->reclaim_flags = trace_shrink_flags(file) & RECLAIM_WB_LRU;
454
+ __entry->reclaim_flags = trace_reclaim_flags(file) &
455
+ RECLAIM_WB_LRU;
458456 ),
459457
460458 TP_printk("nid=%d reclaim_idx=%d total_inactive=%ld inactive=%ld total_active=%ld active=%ld ratio=%ld flags=%s",
....@@ -465,6 +463,38 @@
465463 __entry->ratio,
466464 show_reclaim_flags(__entry->reclaim_flags))
467465 );
466
+
467
+TRACE_EVENT(mm_vmscan_node_reclaim_begin,
468
+
469
+ TP_PROTO(int nid, int order, gfp_t gfp_flags),
470
+
471
+ TP_ARGS(nid, order, gfp_flags),
472
+
473
+ TP_STRUCT__entry(
474
+ __field(int, nid)
475
+ __field(int, order)
476
+ __field(gfp_t, gfp_flags)
477
+ ),
478
+
479
+ TP_fast_assign(
480
+ __entry->nid = nid;
481
+ __entry->order = order;
482
+ __entry->gfp_flags = gfp_flags;
483
+ ),
484
+
485
+ TP_printk("nid=%d order=%d gfp_flags=%s",
486
+ __entry->nid,
487
+ __entry->order,
488
+ show_gfp_flags(__entry->gfp_flags))
489
+);
490
+
491
+DEFINE_EVENT(mm_vmscan_direct_reclaim_end_template, mm_vmscan_node_reclaim_end,
492
+
493
+ TP_PROTO(unsigned long nr_reclaimed),
494
+
495
+ TP_ARGS(nr_reclaimed)
496
+);
497
+
468498 #endif /* _TRACE_VMSCAN_H */
469499
470500 /* This part must be outside protection */