.. | .. |
---|
27 | 27 | {RECLAIM_WB_ASYNC, "RECLAIM_WB_ASYNC"} \ |
---|
28 | 28 | ) : "RECLAIM_WB_NONE" |
---|
29 | 29 | |
---|
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) | \ |
---|
32 | 32 | (RECLAIM_WB_ASYNC) \ |
---|
33 | | - ) |
---|
34 | | - |
---|
35 | | -#define trace_shrink_flags(file) \ |
---|
36 | | - ( \ |
---|
37 | | - (file ? RECLAIM_WB_FILE : RECLAIM_WB_ANON) | \ |
---|
38 | | - (RECLAIM_WB_ASYNC) \ |
---|
39 | 33 | ) |
---|
40 | 34 | |
---|
41 | 35 | TRACE_EVENT(mm_vmscan_kswapd_sleep, |
---|
.. | .. |
---|
73 | 67 | __entry->order = order; |
---|
74 | 68 | ), |
---|
75 | 69 | |
---|
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) |
---|
77 | 73 | ); |
---|
78 | 74 | |
---|
79 | 75 | TRACE_EVENT(mm_vmscan_wakeup_kswapd, |
---|
.. | .. |
---|
96 | 92 | __entry->gfp_flags = gfp_flags; |
---|
97 | 93 | ), |
---|
98 | 94 | |
---|
99 | | - TP_printk("nid=%d zid=%d order=%d gfp_flags=%s", |
---|
| 95 | + TP_printk("nid=%d order=%d gfp_flags=%s", |
---|
100 | 96 | __entry->nid, |
---|
101 | | - __entry->zid, |
---|
102 | 97 | __entry->order, |
---|
103 | 98 | show_gfp_flags(__entry->gfp_flags)) |
---|
104 | 99 | ); |
---|
105 | 100 | |
---|
106 | 101 | DECLARE_EVENT_CLASS(mm_vmscan_direct_reclaim_begin_template, |
---|
107 | 102 | |
---|
108 | | - TP_PROTO(int order, int may_writepage, gfp_t gfp_flags, int classzone_idx), |
---|
| 103 | + TP_PROTO(int order, gfp_t gfp_flags), |
---|
109 | 104 | |
---|
110 | | - TP_ARGS(order, may_writepage, gfp_flags, classzone_idx), |
---|
| 105 | + TP_ARGS(order, gfp_flags), |
---|
111 | 106 | |
---|
112 | 107 | TP_STRUCT__entry( |
---|
113 | 108 | __field( int, order ) |
---|
114 | | - __field( int, may_writepage ) |
---|
115 | 109 | __field( gfp_t, gfp_flags ) |
---|
116 | | - __field( int, classzone_idx ) |
---|
117 | 110 | ), |
---|
118 | 111 | |
---|
119 | 112 | TP_fast_assign( |
---|
120 | 113 | __entry->order = order; |
---|
121 | | - __entry->may_writepage = may_writepage; |
---|
122 | 114 | __entry->gfp_flags = gfp_flags; |
---|
123 | | - __entry->classzone_idx = classzone_idx; |
---|
124 | 115 | ), |
---|
125 | 116 | |
---|
126 | | - TP_printk("order=%d may_writepage=%d gfp_flags=%s classzone_idx=%d", |
---|
| 117 | + TP_printk("order=%d gfp_flags=%s", |
---|
127 | 118 | __entry->order, |
---|
128 | | - __entry->may_writepage, |
---|
129 | | - show_gfp_flags(__entry->gfp_flags), |
---|
130 | | - __entry->classzone_idx) |
---|
| 119 | + show_gfp_flags(__entry->gfp_flags)) |
---|
131 | 120 | ); |
---|
132 | 121 | |
---|
133 | 122 | DEFINE_EVENT(mm_vmscan_direct_reclaim_begin_template, mm_vmscan_direct_reclaim_begin, |
---|
134 | 123 | |
---|
135 | | - TP_PROTO(int order, int may_writepage, gfp_t gfp_flags, int classzone_idx), |
---|
| 124 | + TP_PROTO(int order, gfp_t gfp_flags), |
---|
136 | 125 | |
---|
137 | | - TP_ARGS(order, may_writepage, gfp_flags, classzone_idx) |
---|
| 126 | + TP_ARGS(order, gfp_flags) |
---|
138 | 127 | ); |
---|
139 | 128 | |
---|
140 | 129 | #ifdef CONFIG_MEMCG |
---|
141 | 130 | DEFINE_EVENT(mm_vmscan_direct_reclaim_begin_template, mm_vmscan_memcg_reclaim_begin, |
---|
142 | 131 | |
---|
143 | | - TP_PROTO(int order, int may_writepage, gfp_t gfp_flags, int classzone_idx), |
---|
| 132 | + TP_PROTO(int order, gfp_t gfp_flags), |
---|
144 | 133 | |
---|
145 | | - TP_ARGS(order, may_writepage, gfp_flags, classzone_idx) |
---|
| 134 | + TP_ARGS(order, gfp_flags) |
---|
146 | 135 | ); |
---|
147 | 136 | |
---|
148 | 137 | DEFINE_EVENT(mm_vmscan_direct_reclaim_begin_template, mm_vmscan_memcg_softlimit_reclaim_begin, |
---|
149 | 138 | |
---|
150 | | - TP_PROTO(int order, int may_writepage, gfp_t gfp_flags, int classzone_idx), |
---|
| 139 | + TP_PROTO(int order, gfp_t gfp_flags), |
---|
151 | 140 | |
---|
152 | | - TP_ARGS(order, may_writepage, gfp_flags, classzone_idx) |
---|
| 141 | + TP_ARGS(order, gfp_flags) |
---|
153 | 142 | ); |
---|
154 | 143 | #endif /* CONFIG_MEMCG */ |
---|
155 | 144 | |
---|
.. | .. |
---|
226 | 215 | __entry->priority = priority; |
---|
227 | 216 | ), |
---|
228 | 217 | |
---|
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", |
---|
230 | 219 | __entry->shrink, |
---|
231 | 220 | __entry->shr, |
---|
232 | 221 | __entry->nid, |
---|
.. | .. |
---|
265 | 254 | __entry->total_scan = total_scan; |
---|
266 | 255 | ), |
---|
267 | 256 | |
---|
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", |
---|
269 | 258 | __entry->shrink, |
---|
270 | 259 | __entry->shr, |
---|
271 | 260 | __entry->nid, |
---|
.. | .. |
---|
276 | 265 | ); |
---|
277 | 266 | |
---|
278 | 267 | TRACE_EVENT(mm_vmscan_lru_isolate, |
---|
279 | | - TP_PROTO(int classzone_idx, |
---|
| 268 | + TP_PROTO(int highest_zoneidx, |
---|
280 | 269 | int order, |
---|
281 | 270 | unsigned long nr_requested, |
---|
282 | 271 | unsigned long nr_scanned, |
---|
.. | .. |
---|
285 | 274 | isolate_mode_t isolate_mode, |
---|
286 | 275 | int lru), |
---|
287 | 276 | |
---|
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), |
---|
289 | 278 | |
---|
290 | 279 | TP_STRUCT__entry( |
---|
291 | | - __field(int, classzone_idx) |
---|
| 280 | + __field(int, highest_zoneidx) |
---|
292 | 281 | __field(int, order) |
---|
293 | 282 | __field(unsigned long, nr_requested) |
---|
294 | 283 | __field(unsigned long, nr_scanned) |
---|
295 | 284 | __field(unsigned long, nr_skipped) |
---|
296 | 285 | __field(unsigned long, nr_taken) |
---|
297 | | - __field(isolate_mode_t, isolate_mode) |
---|
| 286 | + __field(unsigned int, isolate_mode) |
---|
298 | 287 | __field(int, lru) |
---|
299 | 288 | ), |
---|
300 | 289 | |
---|
301 | 290 | TP_fast_assign( |
---|
302 | | - __entry->classzone_idx = classzone_idx; |
---|
| 291 | + __entry->highest_zoneidx = highest_zoneidx; |
---|
303 | 292 | __entry->order = order; |
---|
304 | 293 | __entry->nr_requested = nr_requested; |
---|
305 | 294 | __entry->nr_scanned = nr_scanned; |
---|
306 | 295 | __entry->nr_skipped = nr_skipped; |
---|
307 | 296 | __entry->nr_taken = nr_taken; |
---|
308 | | - __entry->isolate_mode = isolate_mode; |
---|
| 297 | + __entry->isolate_mode = (__force unsigned int)isolate_mode; |
---|
309 | 298 | __entry->lru = lru; |
---|
310 | 299 | ), |
---|
311 | 300 | |
---|
| 301 | + /* |
---|
| 302 | + * classzone is previous name of the highest_zoneidx. |
---|
| 303 | + * Reason not to change it is the ABI requirement of the tracepoint. |
---|
| 304 | + */ |
---|
312 | 305 | TP_printk("isolate_mode=%d classzone=%d order=%d nr_requested=%lu nr_scanned=%lu nr_skipped=%lu nr_taken=%lu lru=%s", |
---|
313 | 306 | __entry->isolate_mode, |
---|
314 | | - __entry->classzone_idx, |
---|
| 307 | + __entry->highest_zoneidx, |
---|
315 | 308 | __entry->order, |
---|
316 | 309 | __entry->nr_requested, |
---|
317 | 310 | __entry->nr_scanned, |
---|
.. | .. |
---|
333 | 326 | |
---|
334 | 327 | TP_fast_assign( |
---|
335 | 328 | __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)); |
---|
337 | 331 | ), |
---|
338 | 332 | |
---|
339 | 333 | TP_printk("page=%p pfn=%lu flags=%s", |
---|
.. | .. |
---|
358 | 352 | __field(unsigned long, nr_writeback) |
---|
359 | 353 | __field(unsigned long, nr_congested) |
---|
360 | 354 | __field(unsigned long, nr_immediate) |
---|
361 | | - __field(unsigned long, nr_activate) |
---|
| 355 | + __field(unsigned int, nr_activate0) |
---|
| 356 | + __field(unsigned int, nr_activate1) |
---|
362 | 357 | __field(unsigned long, nr_ref_keep) |
---|
363 | 358 | __field(unsigned long, nr_unmap_fail) |
---|
364 | 359 | __field(int, priority) |
---|
.. | .. |
---|
373 | 368 | __entry->nr_writeback = stat->nr_writeback; |
---|
374 | 369 | __entry->nr_congested = stat->nr_congested; |
---|
375 | 370 | __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]; |
---|
377 | 373 | __entry->nr_ref_keep = stat->nr_ref_keep; |
---|
378 | 374 | __entry->nr_unmap_fail = stat->nr_unmap_fail; |
---|
379 | 375 | __entry->priority = priority; |
---|
380 | | - __entry->reclaim_flags = trace_shrink_flags(file); |
---|
| 376 | + __entry->reclaim_flags = trace_reclaim_flags(file); |
---|
381 | 377 | ), |
---|
382 | 378 | |
---|
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", |
---|
384 | 380 | __entry->nid, |
---|
385 | 381 | __entry->nr_scanned, __entry->nr_reclaimed, |
---|
386 | 382 | __entry->nr_dirty, __entry->nr_writeback, |
---|
387 | 383 | __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, |
---|
390 | 387 | show_reclaim_flags(__entry->reclaim_flags)) |
---|
391 | 388 | ); |
---|
392 | 389 | |
---|
.. | .. |
---|
415 | 412 | __entry->nr_deactivated = nr_deactivated; |
---|
416 | 413 | __entry->nr_referenced = nr_referenced; |
---|
417 | 414 | __entry->priority = priority; |
---|
418 | | - __entry->reclaim_flags = trace_shrink_flags(file); |
---|
| 415 | + __entry->reclaim_flags = trace_reclaim_flags(file); |
---|
419 | 416 | ), |
---|
420 | 417 | |
---|
421 | 418 | TP_printk("nid=%d nr_taken=%ld nr_active=%ld nr_deactivated=%ld nr_referenced=%ld priority=%d flags=%s", |
---|
.. | .. |
---|
454 | 451 | __entry->total_active = total_active; |
---|
455 | 452 | __entry->active = active; |
---|
456 | 453 | __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; |
---|
458 | 456 | ), |
---|
459 | 457 | |
---|
460 | 458 | TP_printk("nid=%d reclaim_idx=%d total_inactive=%ld inactive=%ld total_active=%ld active=%ld ratio=%ld flags=%s", |
---|
.. | .. |
---|
465 | 463 | __entry->ratio, |
---|
466 | 464 | show_reclaim_flags(__entry->reclaim_flags)) |
---|
467 | 465 | ); |
---|
| 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 | + |
---|
468 | 498 | #endif /* _TRACE_VMSCAN_H */ |
---|
469 | 499 | |
---|
470 | 500 | /* This part must be outside protection */ |
---|