1b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */ 233906bc5SMel Gorman #undef TRACE_SYSTEM 333906bc5SMel Gorman #define TRACE_SYSTEM vmscan 433906bc5SMel Gorman 533906bc5SMel Gorman #if !defined(_TRACE_VMSCAN_H) || defined(TRACE_HEADER_MULTI_READ) 633906bc5SMel Gorman #define _TRACE_VMSCAN_H 733906bc5SMel Gorman 833906bc5SMel Gorman #include <linux/types.h> 933906bc5SMel Gorman #include <linux/tracepoint.h> 1083cd81a3SKOSAKI Motohiro #include <linux/mm.h> 1183cd81a3SKOSAKI Motohiro #include <linux/memcontrol.h> 12420adbe9SVlastimil Babka #include <trace/events/mmflags.h> 1333906bc5SMel Gorman 14755f0225SMel Gorman #define RECLAIM_WB_ANON 0x0001u 15755f0225SMel Gorman #define RECLAIM_WB_FILE 0x0002u 16e11da5b4SMel Gorman #define RECLAIM_WB_MIXED 0x0010u 1741ac1999SMel Gorman #define RECLAIM_WB_SYNC 0x0004u /* Unused, all reclaim async */ 18755f0225SMel Gorman #define RECLAIM_WB_ASYNC 0x0008u 19dcec0b60SMichal Hocko #define RECLAIM_WB_LRU (RECLAIM_WB_ANON|RECLAIM_WB_FILE) 20755f0225SMel Gorman 21755f0225SMel Gorman #define show_reclaim_flags(flags) \ 22755f0225SMel Gorman (flags) ? __print_flags(flags, "|", \ 23755f0225SMel Gorman {RECLAIM_WB_ANON, "RECLAIM_WB_ANON"}, \ 24755f0225SMel Gorman {RECLAIM_WB_FILE, "RECLAIM_WB_FILE"}, \ 25e11da5b4SMel Gorman {RECLAIM_WB_MIXED, "RECLAIM_WB_MIXED"}, \ 26755f0225SMel Gorman {RECLAIM_WB_SYNC, "RECLAIM_WB_SYNC"}, \ 27755f0225SMel Gorman {RECLAIM_WB_ASYNC, "RECLAIM_WB_ASYNC"} \ 28755f0225SMel Gorman ) : "RECLAIM_WB_NONE" 29755f0225SMel Gorman 308cd7c588SMel Gorman #define _VMSCAN_THROTTLE_WRITEBACK (1 << VMSCAN_THROTTLE_WRITEBACK) 31d818fca1SMel Gorman #define _VMSCAN_THROTTLE_ISOLATED (1 << VMSCAN_THROTTLE_ISOLATED) 3269392a40SMel Gorman #define _VMSCAN_THROTTLE_NOPROGRESS (1 << VMSCAN_THROTTLE_NOPROGRESS) 331b4e3f26SMel Gorman #define _VMSCAN_THROTTLE_CONGESTED (1 << VMSCAN_THROTTLE_CONGESTED) 348cd7c588SMel Gorman 358cd7c588SMel Gorman #define show_throttle_flags(flags) \ 368cd7c588SMel Gorman (flags) ? __print_flags(flags, "|", \ 37d818fca1SMel Gorman {_VMSCAN_THROTTLE_WRITEBACK, "VMSCAN_THROTTLE_WRITEBACK"}, \ 3869392a40SMel Gorman {_VMSCAN_THROTTLE_ISOLATED, "VMSCAN_THROTTLE_ISOLATED"}, \ 391b4e3f26SMel Gorman {_VMSCAN_THROTTLE_NOPROGRESS, "VMSCAN_THROTTLE_NOPROGRESS"}, \ 401b4e3f26SMel Gorman {_VMSCAN_THROTTLE_CONGESTED, "VMSCAN_THROTTLE_CONGESTED"} \ 418cd7c588SMel Gorman ) : "VMSCAN_THROTTLE_NONE" 428cd7c588SMel Gorman 438cd7c588SMel Gorman 4460b62ff7SYafang Shao #define trace_reclaim_flags(file) ( \ 4541ac1999SMel Gorman (file ? RECLAIM_WB_FILE : RECLAIM_WB_ANON) | \ 4641ac1999SMel Gorman (RECLAIM_WB_ASYNC) \ 47e11da5b4SMel Gorman ) 48e11da5b4SMel Gorman 4933906bc5SMel Gorman TRACE_EVENT(mm_vmscan_kswapd_sleep, 5033906bc5SMel Gorman 5133906bc5SMel Gorman TP_PROTO(int nid), 5233906bc5SMel Gorman 5333906bc5SMel Gorman TP_ARGS(nid), 5433906bc5SMel Gorman 5533906bc5SMel Gorman TP_STRUCT__entry( 5633906bc5SMel Gorman __field( int, nid ) 5733906bc5SMel Gorman ), 5833906bc5SMel Gorman 5933906bc5SMel Gorman TP_fast_assign( 6033906bc5SMel Gorman __entry->nid = nid; 6133906bc5SMel Gorman ), 6233906bc5SMel Gorman 6333906bc5SMel Gorman TP_printk("nid=%d", __entry->nid) 6433906bc5SMel Gorman ); 6533906bc5SMel Gorman 6633906bc5SMel Gorman TRACE_EVENT(mm_vmscan_kswapd_wake, 6733906bc5SMel Gorman 68e5146b12SMel Gorman TP_PROTO(int nid, int zid, int order), 6933906bc5SMel Gorman 70e5146b12SMel Gorman TP_ARGS(nid, zid, order), 7133906bc5SMel Gorman 7233906bc5SMel Gorman TP_STRUCT__entry( 7333906bc5SMel Gorman __field( int, nid ) 74e5146b12SMel Gorman __field( int, zid ) 7533906bc5SMel Gorman __field( int, order ) 7633906bc5SMel Gorman ), 7733906bc5SMel Gorman 7833906bc5SMel Gorman TP_fast_assign( 7933906bc5SMel Gorman __entry->nid = nid; 80e5146b12SMel Gorman __entry->zid = zid; 8133906bc5SMel Gorman __entry->order = order; 8233906bc5SMel Gorman ), 8333906bc5SMel Gorman 843b775998SYafang Shao TP_printk("nid=%d order=%d", 853b775998SYafang Shao __entry->nid, 863b775998SYafang Shao __entry->order) 8733906bc5SMel Gorman ); 8833906bc5SMel Gorman 8933906bc5SMel Gorman TRACE_EVENT(mm_vmscan_wakeup_kswapd, 9033906bc5SMel Gorman 915ecd9d40SDavid Rientjes TP_PROTO(int nid, int zid, int order, gfp_t gfp_flags), 9233906bc5SMel Gorman 935ecd9d40SDavid Rientjes TP_ARGS(nid, zid, order, gfp_flags), 9433906bc5SMel Gorman 9533906bc5SMel Gorman TP_STRUCT__entry( 9633906bc5SMel Gorman __field( int, nid ) 9733906bc5SMel Gorman __field( int, zid ) 9833906bc5SMel Gorman __field( int, order ) 99fe573327SVasily Averin __field( unsigned long, gfp_flags ) 10033906bc5SMel Gorman ), 10133906bc5SMel Gorman 10233906bc5SMel Gorman TP_fast_assign( 10333906bc5SMel Gorman __entry->nid = nid; 10433906bc5SMel Gorman __entry->zid = zid; 10533906bc5SMel Gorman __entry->order = order; 106fe573327SVasily Averin __entry->gfp_flags = (__force unsigned long)gfp_flags; 10733906bc5SMel Gorman ), 10833906bc5SMel Gorman 1093b775998SYafang Shao TP_printk("nid=%d order=%d gfp_flags=%s", 11033906bc5SMel Gorman __entry->nid, 1115ecd9d40SDavid Rientjes __entry->order, 1125ecd9d40SDavid Rientjes show_gfp_flags(__entry->gfp_flags)) 11333906bc5SMel Gorman ); 11433906bc5SMel Gorman 115cf4dcc3eSKOSAKI Motohiro DECLARE_EVENT_CLASS(mm_vmscan_direct_reclaim_begin_template, 11633906bc5SMel Gorman 1173481c37fSYafang Shao TP_PROTO(int order, gfp_t gfp_flags), 11833906bc5SMel Gorman 1193481c37fSYafang Shao TP_ARGS(order, gfp_flags), 12033906bc5SMel Gorman 12133906bc5SMel Gorman TP_STRUCT__entry( 12233906bc5SMel Gorman __field( int, order ) 123fe573327SVasily Averin __field( unsigned long, gfp_flags ) 12433906bc5SMel Gorman ), 12533906bc5SMel Gorman 12633906bc5SMel Gorman TP_fast_assign( 12733906bc5SMel Gorman __entry->order = order; 128fe573327SVasily Averin __entry->gfp_flags = (__force unsigned long)gfp_flags; 12933906bc5SMel Gorman ), 13033906bc5SMel Gorman 1313481c37fSYafang Shao TP_printk("order=%d gfp_flags=%s", 13233906bc5SMel Gorman __entry->order, 1333481c37fSYafang Shao show_gfp_flags(__entry->gfp_flags)) 13433906bc5SMel Gorman ); 13533906bc5SMel Gorman 136cf4dcc3eSKOSAKI Motohiro DEFINE_EVENT(mm_vmscan_direct_reclaim_begin_template, mm_vmscan_direct_reclaim_begin, 137cf4dcc3eSKOSAKI Motohiro 1383481c37fSYafang Shao TP_PROTO(int order, gfp_t gfp_flags), 139cf4dcc3eSKOSAKI Motohiro 1403481c37fSYafang Shao TP_ARGS(order, gfp_flags) 141cf4dcc3eSKOSAKI Motohiro ); 142cf4dcc3eSKOSAKI Motohiro 143f40a37cbSSteven Rostedt (VMware) #ifdef CONFIG_MEMCG 144bdce6d9eSKOSAKI Motohiro DEFINE_EVENT(mm_vmscan_direct_reclaim_begin_template, mm_vmscan_memcg_reclaim_begin, 145bdce6d9eSKOSAKI Motohiro 1463481c37fSYafang Shao TP_PROTO(int order, gfp_t gfp_flags), 147bdce6d9eSKOSAKI Motohiro 1483481c37fSYafang Shao TP_ARGS(order, gfp_flags) 149bdce6d9eSKOSAKI Motohiro ); 150bdce6d9eSKOSAKI Motohiro 151bdce6d9eSKOSAKI Motohiro DEFINE_EVENT(mm_vmscan_direct_reclaim_begin_template, mm_vmscan_memcg_softlimit_reclaim_begin, 152bdce6d9eSKOSAKI Motohiro 1533481c37fSYafang Shao TP_PROTO(int order, gfp_t gfp_flags), 154bdce6d9eSKOSAKI Motohiro 1553481c37fSYafang Shao TP_ARGS(order, gfp_flags) 156bdce6d9eSKOSAKI Motohiro ); 157f40a37cbSSteven Rostedt (VMware) #endif /* CONFIG_MEMCG */ 158cf4dcc3eSKOSAKI Motohiro 159cf4dcc3eSKOSAKI Motohiro DECLARE_EVENT_CLASS(mm_vmscan_direct_reclaim_end_template, 16033906bc5SMel Gorman 16133906bc5SMel Gorman TP_PROTO(unsigned long nr_reclaimed), 16233906bc5SMel Gorman 16333906bc5SMel Gorman TP_ARGS(nr_reclaimed), 16433906bc5SMel Gorman 16533906bc5SMel Gorman TP_STRUCT__entry( 16633906bc5SMel Gorman __field( unsigned long, nr_reclaimed ) 16733906bc5SMel Gorman ), 16833906bc5SMel Gorman 16933906bc5SMel Gorman TP_fast_assign( 17033906bc5SMel Gorman __entry->nr_reclaimed = nr_reclaimed; 17133906bc5SMel Gorman ), 17233906bc5SMel Gorman 17333906bc5SMel Gorman TP_printk("nr_reclaimed=%lu", __entry->nr_reclaimed) 17433906bc5SMel Gorman ); 17533906bc5SMel Gorman 176cf4dcc3eSKOSAKI Motohiro DEFINE_EVENT(mm_vmscan_direct_reclaim_end_template, mm_vmscan_direct_reclaim_end, 177cf4dcc3eSKOSAKI Motohiro 178cf4dcc3eSKOSAKI Motohiro TP_PROTO(unsigned long nr_reclaimed), 179cf4dcc3eSKOSAKI Motohiro 180cf4dcc3eSKOSAKI Motohiro TP_ARGS(nr_reclaimed) 181cf4dcc3eSKOSAKI Motohiro ); 182cf4dcc3eSKOSAKI Motohiro 183f40a37cbSSteven Rostedt (VMware) #ifdef CONFIG_MEMCG 184bdce6d9eSKOSAKI Motohiro DEFINE_EVENT(mm_vmscan_direct_reclaim_end_template, mm_vmscan_memcg_reclaim_end, 185bdce6d9eSKOSAKI Motohiro 186bdce6d9eSKOSAKI Motohiro TP_PROTO(unsigned long nr_reclaimed), 187bdce6d9eSKOSAKI Motohiro 188bdce6d9eSKOSAKI Motohiro TP_ARGS(nr_reclaimed) 189bdce6d9eSKOSAKI Motohiro ); 190bdce6d9eSKOSAKI Motohiro 191bdce6d9eSKOSAKI Motohiro DEFINE_EVENT(mm_vmscan_direct_reclaim_end_template, mm_vmscan_memcg_softlimit_reclaim_end, 192bdce6d9eSKOSAKI Motohiro 193bdce6d9eSKOSAKI Motohiro TP_PROTO(unsigned long nr_reclaimed), 194bdce6d9eSKOSAKI Motohiro 195bdce6d9eSKOSAKI Motohiro TP_ARGS(nr_reclaimed) 196bdce6d9eSKOSAKI Motohiro ); 197f40a37cbSSteven Rostedt (VMware) #endif /* CONFIG_MEMCG */ 198bdce6d9eSKOSAKI Motohiro 19909576073SDave Chinner TRACE_EVENT(mm_shrink_slab_start, 20009576073SDave Chinner TP_PROTO(struct shrinker *shr, struct shrink_control *sc, 2019092c71bSJosef Bacik long nr_objects_to_shrink, unsigned long cache_items, 2029092c71bSJosef Bacik unsigned long long delta, unsigned long total_scan, 2039092c71bSJosef Bacik int priority), 20409576073SDave Chinner 2059092c71bSJosef Bacik TP_ARGS(shr, sc, nr_objects_to_shrink, cache_items, delta, total_scan, 2069092c71bSJosef Bacik priority), 20709576073SDave Chinner 20809576073SDave Chinner TP_STRUCT__entry( 20909576073SDave Chinner __field(struct shrinker *, shr) 21009576073SDave Chinner __field(void *, shrink) 211df9024a8SDave Hansen __field(int, nid) 21209576073SDave Chinner __field(long, nr_objects_to_shrink) 213fe573327SVasily Averin __field(unsigned long, gfp_flags) 21409576073SDave Chinner __field(unsigned long, cache_items) 21509576073SDave Chinner __field(unsigned long long, delta) 21609576073SDave Chinner __field(unsigned long, total_scan) 2179092c71bSJosef Bacik __field(int, priority) 21809576073SDave Chinner ), 21909576073SDave Chinner 22009576073SDave Chinner TP_fast_assign( 22109576073SDave Chinner __entry->shr = shr; 222a0b02131SDave Chinner __entry->shrink = shr->scan_objects; 223df9024a8SDave Hansen __entry->nid = sc->nid; 22409576073SDave Chinner __entry->nr_objects_to_shrink = nr_objects_to_shrink; 225fe573327SVasily Averin __entry->gfp_flags = (__force unsigned long)sc->gfp_mask; 22609576073SDave Chinner __entry->cache_items = cache_items; 22709576073SDave Chinner __entry->delta = delta; 22809576073SDave Chinner __entry->total_scan = total_scan; 2299092c71bSJosef Bacik __entry->priority = priority; 23009576073SDave Chinner ), 23109576073SDave Chinner 232d75f773cSSakari Ailus TP_printk("%pS %p: nid: %d objects to shrink %ld gfp_flags %s cache items %ld delta %lld total_scan %ld priority %d", 23309576073SDave Chinner __entry->shrink, 23409576073SDave Chinner __entry->shr, 235df9024a8SDave Hansen __entry->nid, 23609576073SDave Chinner __entry->nr_objects_to_shrink, 23709576073SDave Chinner show_gfp_flags(__entry->gfp_flags), 23809576073SDave Chinner __entry->cache_items, 23909576073SDave Chinner __entry->delta, 2409092c71bSJosef Bacik __entry->total_scan, 2419092c71bSJosef Bacik __entry->priority) 24209576073SDave Chinner ); 24309576073SDave Chinner 24409576073SDave Chinner TRACE_EVENT(mm_shrink_slab_end, 245df9024a8SDave Hansen TP_PROTO(struct shrinker *shr, int nid, int shrinker_retval, 2467fe70475SDave Hansen long unused_scan_cnt, long new_scan_cnt, long total_scan), 24709576073SDave Chinner 248df9024a8SDave Hansen TP_ARGS(shr, nid, shrinker_retval, unused_scan_cnt, new_scan_cnt, 249df9024a8SDave Hansen total_scan), 25009576073SDave Chinner 25109576073SDave Chinner TP_STRUCT__entry( 25209576073SDave Chinner __field(struct shrinker *, shr) 253df9024a8SDave Hansen __field(int, nid) 25409576073SDave Chinner __field(void *, shrink) 25509576073SDave Chinner __field(long, unused_scan) 25609576073SDave Chinner __field(long, new_scan) 25709576073SDave Chinner __field(int, retval) 25809576073SDave Chinner __field(long, total_scan) 25909576073SDave Chinner ), 26009576073SDave Chinner 26109576073SDave Chinner TP_fast_assign( 26209576073SDave Chinner __entry->shr = shr; 263df9024a8SDave Hansen __entry->nid = nid; 264a0b02131SDave Chinner __entry->shrink = shr->scan_objects; 26509576073SDave Chinner __entry->unused_scan = unused_scan_cnt; 26609576073SDave Chinner __entry->new_scan = new_scan_cnt; 26709576073SDave Chinner __entry->retval = shrinker_retval; 2687fe70475SDave Hansen __entry->total_scan = total_scan; 26909576073SDave Chinner ), 27009576073SDave Chinner 271d75f773cSSakari Ailus TP_printk("%pS %p: nid: %d unused scan count %ld new scan count %ld total_scan %ld last shrinker return val %d", 27209576073SDave Chinner __entry->shrink, 27309576073SDave Chinner __entry->shr, 274df9024a8SDave Hansen __entry->nid, 27509576073SDave Chinner __entry->unused_scan, 27609576073SDave Chinner __entry->new_scan, 27709576073SDave Chinner __entry->total_scan, 27809576073SDave Chinner __entry->retval) 27909576073SDave Chinner ); 280bdce6d9eSKOSAKI Motohiro 28130b9aed8SMichal Hocko TRACE_EVENT(mm_vmscan_lru_isolate, 28297a225e6SJoonsoo Kim TP_PROTO(int highest_zoneidx, 283e5146b12SMel Gorman int order, 284a8a94d15SMel Gorman unsigned long nr_requested, 285a8a94d15SMel Gorman unsigned long nr_scanned, 2861265e3a6SMichal Hocko unsigned long nr_skipped, 287a8a94d15SMel Gorman unsigned long nr_taken, 288ea4d349fSTao Ma isolate_mode_t isolate_mode, 28932b3f297SMichal Hocko int lru), 290a8a94d15SMel Gorman 29197a225e6SJoonsoo Kim TP_ARGS(highest_zoneidx, order, nr_requested, nr_scanned, nr_skipped, nr_taken, isolate_mode, lru), 292a8a94d15SMel Gorman 293a8a94d15SMel Gorman TP_STRUCT__entry( 29497a225e6SJoonsoo Kim __field(int, highest_zoneidx) 295a8a94d15SMel Gorman __field(int, order) 296a8a94d15SMel Gorman __field(unsigned long, nr_requested) 297a8a94d15SMel Gorman __field(unsigned long, nr_scanned) 2981265e3a6SMichal Hocko __field(unsigned long, nr_skipped) 299a8a94d15SMel Gorman __field(unsigned long, nr_taken) 300*2b132903SVasily Averin __field(unsigned int, isolate_mode) 30132b3f297SMichal Hocko __field(int, lru) 302a8a94d15SMel Gorman ), 303a8a94d15SMel Gorman 304a8a94d15SMel Gorman TP_fast_assign( 30597a225e6SJoonsoo Kim __entry->highest_zoneidx = highest_zoneidx; 306a8a94d15SMel Gorman __entry->order = order; 307a8a94d15SMel Gorman __entry->nr_requested = nr_requested; 308a8a94d15SMel Gorman __entry->nr_scanned = nr_scanned; 3091265e3a6SMichal Hocko __entry->nr_skipped = nr_skipped; 310a8a94d15SMel Gorman __entry->nr_taken = nr_taken; 311*2b132903SVasily Averin __entry->isolate_mode = (__force unsigned int)isolate_mode; 31232b3f297SMichal Hocko __entry->lru = lru; 313a8a94d15SMel Gorman ), 314a8a94d15SMel Gorman 31597a225e6SJoonsoo Kim /* 31697a225e6SJoonsoo Kim * classzone is previous name of the highest_zoneidx. 31797a225e6SJoonsoo Kim * Reason not to change it is the ABI requirement of the tracepoint. 31897a225e6SJoonsoo Kim */ 31932b3f297SMichal Hocko TP_printk("isolate_mode=%d classzone=%d order=%d nr_requested=%lu nr_scanned=%lu nr_skipped=%lu nr_taken=%lu lru=%s", 320a8a94d15SMel Gorman __entry->isolate_mode, 32197a225e6SJoonsoo Kim __entry->highest_zoneidx, 322a8a94d15SMel Gorman __entry->order, 323a8a94d15SMel Gorman __entry->nr_requested, 324a8a94d15SMel Gorman __entry->nr_scanned, 3251265e3a6SMichal Hocko __entry->nr_skipped, 326a8a94d15SMel Gorman __entry->nr_taken, 32732b3f297SMichal Hocko __print_symbolic(__entry->lru, LRU_NAMES)) 328a8a94d15SMel Gorman ); 329a8a94d15SMel Gorman 330e0cd5e7fSMatthew Wilcox (Oracle) TRACE_EVENT(mm_vmscan_write_folio, 331755f0225SMel Gorman 332e0cd5e7fSMatthew Wilcox (Oracle) TP_PROTO(struct folio *folio), 333755f0225SMel Gorman 334e0cd5e7fSMatthew Wilcox (Oracle) TP_ARGS(folio), 335755f0225SMel Gorman 336755f0225SMel Gorman TP_STRUCT__entry( 3379fdd8a87SNamhyung Kim __field(unsigned long, pfn) 338755f0225SMel Gorman __field(int, reclaim_flags) 339755f0225SMel Gorman ), 340755f0225SMel Gorman 341755f0225SMel Gorman TP_fast_assign( 342e0cd5e7fSMatthew Wilcox (Oracle) __entry->pfn = folio_pfn(folio); 34360b62ff7SYafang Shao __entry->reclaim_flags = trace_reclaim_flags( 344e0cd5e7fSMatthew Wilcox (Oracle) folio_is_file_lru(folio)); 345755f0225SMel Gorman ), 346755f0225SMel Gorman 34753d884a6SVincent Whitchurch TP_printk("page=%p pfn=0x%lx flags=%s", 3489fdd8a87SNamhyung Kim pfn_to_page(__entry->pfn), 3499fdd8a87SNamhyung Kim __entry->pfn, 350755f0225SMel Gorman show_reclaim_flags(__entry->reclaim_flags)) 351755f0225SMel Gorman ); 352755f0225SMel Gorman 353e11da5b4SMel Gorman TRACE_EVENT(mm_vmscan_lru_shrink_inactive, 354e11da5b4SMel Gorman 355599d0c95SMel Gorman TP_PROTO(int nid, 356e11da5b4SMel Gorman unsigned long nr_scanned, unsigned long nr_reclaimed, 357d51d1e64SSteven Rostedt struct reclaim_stat *stat, int priority, int file), 358e11da5b4SMel Gorman 359d51d1e64SSteven Rostedt TP_ARGS(nid, nr_scanned, nr_reclaimed, stat, priority, file), 360e11da5b4SMel Gorman 361e11da5b4SMel Gorman TP_STRUCT__entry( 362e11da5b4SMel Gorman __field(int, nid) 363e11da5b4SMel Gorman __field(unsigned long, nr_scanned) 364e11da5b4SMel Gorman __field(unsigned long, nr_reclaimed) 3655bccd166SMichal Hocko __field(unsigned long, nr_dirty) 3665bccd166SMichal Hocko __field(unsigned long, nr_writeback) 3675bccd166SMichal Hocko __field(unsigned long, nr_congested) 3685bccd166SMichal Hocko __field(unsigned long, nr_immediate) 369886cf190SKirill Tkhai __field(unsigned int, nr_activate0) 370886cf190SKirill Tkhai __field(unsigned int, nr_activate1) 3715bccd166SMichal Hocko __field(unsigned long, nr_ref_keep) 3725bccd166SMichal Hocko __field(unsigned long, nr_unmap_fail) 373e11da5b4SMel Gorman __field(int, priority) 374e11da5b4SMel Gorman __field(int, reclaim_flags) 375e11da5b4SMel Gorman ), 376e11da5b4SMel Gorman 377e11da5b4SMel Gorman TP_fast_assign( 378599d0c95SMel Gorman __entry->nid = nid; 379e11da5b4SMel Gorman __entry->nr_scanned = nr_scanned; 380e11da5b4SMel Gorman __entry->nr_reclaimed = nr_reclaimed; 381d51d1e64SSteven Rostedt __entry->nr_dirty = stat->nr_dirty; 382d51d1e64SSteven Rostedt __entry->nr_writeback = stat->nr_writeback; 383d51d1e64SSteven Rostedt __entry->nr_congested = stat->nr_congested; 384d51d1e64SSteven Rostedt __entry->nr_immediate = stat->nr_immediate; 385886cf190SKirill Tkhai __entry->nr_activate0 = stat->nr_activate[0]; 386886cf190SKirill Tkhai __entry->nr_activate1 = stat->nr_activate[1]; 387d51d1e64SSteven Rostedt __entry->nr_ref_keep = stat->nr_ref_keep; 388d51d1e64SSteven Rostedt __entry->nr_unmap_fail = stat->nr_unmap_fail; 389e11da5b4SMel Gorman __entry->priority = priority; 39060b62ff7SYafang Shao __entry->reclaim_flags = trace_reclaim_flags(file); 391e11da5b4SMel Gorman ), 392e11da5b4SMel Gorman 393886cf190SKirill Tkhai 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", 394599d0c95SMel Gorman __entry->nid, 395e11da5b4SMel Gorman __entry->nr_scanned, __entry->nr_reclaimed, 3965bccd166SMichal Hocko __entry->nr_dirty, __entry->nr_writeback, 3975bccd166SMichal Hocko __entry->nr_congested, __entry->nr_immediate, 398886cf190SKirill Tkhai __entry->nr_activate0, __entry->nr_activate1, 399886cf190SKirill Tkhai __entry->nr_ref_keep, __entry->nr_unmap_fail, 400886cf190SKirill Tkhai __entry->priority, 401e11da5b4SMel Gorman show_reclaim_flags(__entry->reclaim_flags)) 402e11da5b4SMel Gorman ); 403e11da5b4SMel Gorman 4049d998b4fSMichal Hocko TRACE_EVENT(mm_vmscan_lru_shrink_active, 4059d998b4fSMichal Hocko 4069d998b4fSMichal Hocko TP_PROTO(int nid, unsigned long nr_taken, 4079d998b4fSMichal Hocko unsigned long nr_active, unsigned long nr_deactivated, 4089d998b4fSMichal Hocko unsigned long nr_referenced, int priority, int file), 4099d998b4fSMichal Hocko 4109d998b4fSMichal Hocko TP_ARGS(nid, nr_taken, nr_active, nr_deactivated, nr_referenced, priority, file), 4119d998b4fSMichal Hocko 4129d998b4fSMichal Hocko TP_STRUCT__entry( 4139d998b4fSMichal Hocko __field(int, nid) 4149d998b4fSMichal Hocko __field(unsigned long, nr_taken) 4159d998b4fSMichal Hocko __field(unsigned long, nr_active) 4169d998b4fSMichal Hocko __field(unsigned long, nr_deactivated) 4179d998b4fSMichal Hocko __field(unsigned long, nr_referenced) 4189d998b4fSMichal Hocko __field(int, priority) 4199d998b4fSMichal Hocko __field(int, reclaim_flags) 4209d998b4fSMichal Hocko ), 4219d998b4fSMichal Hocko 4229d998b4fSMichal Hocko TP_fast_assign( 4239d998b4fSMichal Hocko __entry->nid = nid; 4249d998b4fSMichal Hocko __entry->nr_taken = nr_taken; 4259d998b4fSMichal Hocko __entry->nr_active = nr_active; 4269d998b4fSMichal Hocko __entry->nr_deactivated = nr_deactivated; 4279d998b4fSMichal Hocko __entry->nr_referenced = nr_referenced; 4289d998b4fSMichal Hocko __entry->priority = priority; 42960b62ff7SYafang Shao __entry->reclaim_flags = trace_reclaim_flags(file); 4309d998b4fSMichal Hocko ), 4319d998b4fSMichal Hocko 4329d998b4fSMichal Hocko TP_printk("nid=%d nr_taken=%ld nr_active=%ld nr_deactivated=%ld nr_referenced=%ld priority=%d flags=%s", 4339d998b4fSMichal Hocko __entry->nid, 4349d998b4fSMichal Hocko __entry->nr_taken, 4359d998b4fSMichal Hocko __entry->nr_active, __entry->nr_deactivated, __entry->nr_referenced, 4369d998b4fSMichal Hocko __entry->priority, 4379d998b4fSMichal Hocko show_reclaim_flags(__entry->reclaim_flags)) 4389d998b4fSMichal Hocko ); 4399d998b4fSMichal Hocko 440132bb8cfSYafang Shao TRACE_EVENT(mm_vmscan_node_reclaim_begin, 441132bb8cfSYafang Shao 442132bb8cfSYafang Shao TP_PROTO(int nid, int order, gfp_t gfp_flags), 443132bb8cfSYafang Shao 444132bb8cfSYafang Shao TP_ARGS(nid, order, gfp_flags), 445132bb8cfSYafang Shao 446132bb8cfSYafang Shao TP_STRUCT__entry( 447132bb8cfSYafang Shao __field(int, nid) 448132bb8cfSYafang Shao __field(int, order) 449fe573327SVasily Averin __field(unsigned long, gfp_flags) 450132bb8cfSYafang Shao ), 451132bb8cfSYafang Shao 452132bb8cfSYafang Shao TP_fast_assign( 453132bb8cfSYafang Shao __entry->nid = nid; 454132bb8cfSYafang Shao __entry->order = order; 455fe573327SVasily Averin __entry->gfp_flags = (__force unsigned long)gfp_flags; 456132bb8cfSYafang Shao ), 457132bb8cfSYafang Shao 458132bb8cfSYafang Shao TP_printk("nid=%d order=%d gfp_flags=%s", 459132bb8cfSYafang Shao __entry->nid, 460132bb8cfSYafang Shao __entry->order, 461132bb8cfSYafang Shao show_gfp_flags(__entry->gfp_flags)) 462132bb8cfSYafang Shao ); 463132bb8cfSYafang Shao 464132bb8cfSYafang Shao DEFINE_EVENT(mm_vmscan_direct_reclaim_end_template, mm_vmscan_node_reclaim_end, 465132bb8cfSYafang Shao 466132bb8cfSYafang Shao TP_PROTO(unsigned long nr_reclaimed), 467132bb8cfSYafang Shao 468132bb8cfSYafang Shao TP_ARGS(nr_reclaimed) 469132bb8cfSYafang Shao ); 470132bb8cfSYafang Shao 4718cd7c588SMel Gorman TRACE_EVENT(mm_vmscan_throttled, 4728cd7c588SMel Gorman 4738cd7c588SMel Gorman TP_PROTO(int nid, int usec_timeout, int usec_delayed, int reason), 4748cd7c588SMel Gorman 4758cd7c588SMel Gorman TP_ARGS(nid, usec_timeout, usec_delayed, reason), 4768cd7c588SMel Gorman 4778cd7c588SMel Gorman TP_STRUCT__entry( 4788cd7c588SMel Gorman __field(int, nid) 4798cd7c588SMel Gorman __field(int, usec_timeout) 4808cd7c588SMel Gorman __field(int, usec_delayed) 4818cd7c588SMel Gorman __field(int, reason) 4828cd7c588SMel Gorman ), 4838cd7c588SMel Gorman 4848cd7c588SMel Gorman TP_fast_assign( 4858cd7c588SMel Gorman __entry->nid = nid; 4868cd7c588SMel Gorman __entry->usec_timeout = usec_timeout; 4878cd7c588SMel Gorman __entry->usec_delayed = usec_delayed; 4888cd7c588SMel Gorman __entry->reason = 1U << reason; 4898cd7c588SMel Gorman ), 4908cd7c588SMel Gorman 4918cd7c588SMel Gorman TP_printk("nid=%d usec_timeout=%d usect_delayed=%d reason=%s", 4928cd7c588SMel Gorman __entry->nid, 4938cd7c588SMel Gorman __entry->usec_timeout, 4948cd7c588SMel Gorman __entry->usec_delayed, 4958cd7c588SMel Gorman show_throttle_flags(__entry->reason)) 4968cd7c588SMel Gorman ); 49733906bc5SMel Gorman #endif /* _TRACE_VMSCAN_H */ 49833906bc5SMel Gorman 49933906bc5SMel Gorman /* This part must be outside protection */ 50033906bc5SMel Gorman #include <trace/define_trace.h> 501