^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) /* SPDX-License-Identifier: GPL-2.0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) #undef TRACE_SYSTEM
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) #define TRACE_SYSTEM vmscan
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) #if !defined(_TRACE_VMSCAN_H) || defined(TRACE_HEADER_MULTI_READ)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) #define _TRACE_VMSCAN_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) #include <linux/types.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) #include <linux/tracepoint.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) #include <linux/mm.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) #include <linux/memcontrol.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) #include <trace/events/mmflags.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) #define RECLAIM_WB_ANON 0x0001u
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) #define RECLAIM_WB_FILE 0x0002u
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) #define RECLAIM_WB_MIXED 0x0010u
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) #define RECLAIM_WB_SYNC 0x0004u /* Unused, all reclaim async */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) #define RECLAIM_WB_ASYNC 0x0008u
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) #define RECLAIM_WB_LRU (RECLAIM_WB_ANON|RECLAIM_WB_FILE)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) #define show_reclaim_flags(flags) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) (flags) ? __print_flags(flags, "|", \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) {RECLAIM_WB_ANON, "RECLAIM_WB_ANON"}, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) {RECLAIM_WB_FILE, "RECLAIM_WB_FILE"}, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) {RECLAIM_WB_MIXED, "RECLAIM_WB_MIXED"}, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) {RECLAIM_WB_SYNC, "RECLAIM_WB_SYNC"}, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) {RECLAIM_WB_ASYNC, "RECLAIM_WB_ASYNC"} \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) ) : "RECLAIM_WB_NONE"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) #define trace_reclaim_flags(file) ( \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) (file ? RECLAIM_WB_FILE : RECLAIM_WB_ANON) | \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) (RECLAIM_WB_ASYNC) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) TRACE_EVENT(mm_vmscan_kswapd_sleep,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) TP_PROTO(int nid),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) TP_ARGS(nid),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) __field( int, nid )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) __entry->nid = nid;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) TP_printk("nid=%d", __entry->nid)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) TRACE_EVENT(mm_vmscan_kswapd_wake,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) TP_PROTO(int nid, int zid, int order),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) TP_ARGS(nid, zid, order),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) __field( int, nid )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) __field( int, zid )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) __field( int, order )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) __entry->nid = nid;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) __entry->zid = zid;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) __entry->order = order;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) TP_printk("nid=%d order=%d",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) __entry->nid,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) __entry->order)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) TRACE_EVENT(mm_vmscan_wakeup_kswapd,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77) TP_PROTO(int nid, int zid, int order, gfp_t gfp_flags),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79) TP_ARGS(nid, zid, order, gfp_flags),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82) __field( int, nid )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83) __field( int, zid )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84) __field( int, order )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85) __field( gfp_t, gfp_flags )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89) __entry->nid = nid;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90) __entry->zid = zid;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 91) __entry->order = order;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 92) __entry->gfp_flags = gfp_flags;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 93) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 94)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 95) TP_printk("nid=%d order=%d gfp_flags=%s",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 96) __entry->nid,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 97) __entry->order,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 98) show_gfp_flags(__entry->gfp_flags))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 99) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) DECLARE_EVENT_CLASS(mm_vmscan_direct_reclaim_begin_template,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) TP_PROTO(int order, gfp_t gfp_flags),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) TP_ARGS(order, gfp_flags),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) __field( int, order )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) __field( gfp_t, gfp_flags )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) __entry->order = order;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) __entry->gfp_flags = gfp_flags;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) TP_printk("order=%d gfp_flags=%s",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) __entry->order,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) show_gfp_flags(__entry->gfp_flags))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) DEFINE_EVENT(mm_vmscan_direct_reclaim_begin_template, mm_vmscan_direct_reclaim_begin,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) TP_PROTO(int order, gfp_t gfp_flags),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) TP_ARGS(order, gfp_flags)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129) #ifdef CONFIG_MEMCG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) DEFINE_EVENT(mm_vmscan_direct_reclaim_begin_template, mm_vmscan_memcg_reclaim_begin,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) TP_PROTO(int order, gfp_t gfp_flags),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134) TP_ARGS(order, gfp_flags)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137) DEFINE_EVENT(mm_vmscan_direct_reclaim_begin_template, mm_vmscan_memcg_softlimit_reclaim_begin,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139) TP_PROTO(int order, gfp_t gfp_flags),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141) TP_ARGS(order, gfp_flags)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143) #endif /* CONFIG_MEMCG */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145) DECLARE_EVENT_CLASS(mm_vmscan_direct_reclaim_end_template,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147) TP_PROTO(unsigned long nr_reclaimed),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149) TP_ARGS(nr_reclaimed),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 150)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 151) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 152) __field( unsigned long, nr_reclaimed )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 155) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 156) __entry->nr_reclaimed = nr_reclaimed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 157) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 158)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 159) TP_printk("nr_reclaimed=%lu", __entry->nr_reclaimed)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 160) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 161)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 162) DEFINE_EVENT(mm_vmscan_direct_reclaim_end_template, mm_vmscan_direct_reclaim_end,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 163)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 164) TP_PROTO(unsigned long nr_reclaimed),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 165)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 166) TP_ARGS(nr_reclaimed)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 167) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 168)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 169) #ifdef CONFIG_MEMCG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 170) DEFINE_EVENT(mm_vmscan_direct_reclaim_end_template, mm_vmscan_memcg_reclaim_end,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 171)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 172) TP_PROTO(unsigned long nr_reclaimed),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 173)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 174) TP_ARGS(nr_reclaimed)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 175) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 176)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 177) DEFINE_EVENT(mm_vmscan_direct_reclaim_end_template, mm_vmscan_memcg_softlimit_reclaim_end,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 178)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 179) TP_PROTO(unsigned long nr_reclaimed),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 180)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 181) TP_ARGS(nr_reclaimed)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 182) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 183) #endif /* CONFIG_MEMCG */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 184)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 185) TRACE_EVENT(mm_shrink_slab_start,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 186) TP_PROTO(struct shrinker *shr, struct shrink_control *sc,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 187) long nr_objects_to_shrink, unsigned long cache_items,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 188) unsigned long long delta, unsigned long total_scan,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 189) int priority),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 190)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 191) TP_ARGS(shr, sc, nr_objects_to_shrink, cache_items, delta, total_scan,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 192) priority),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 193)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 194) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 195) __field(struct shrinker *, shr)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 196) __field(void *, shrink)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 197) __field(int, nid)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 198) __field(long, nr_objects_to_shrink)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 199) __field(gfp_t, gfp_flags)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 200) __field(unsigned long, cache_items)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 201) __field(unsigned long long, delta)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 202) __field(unsigned long, total_scan)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 203) __field(int, priority)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 204) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 205)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 206) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 207) __entry->shr = shr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 208) __entry->shrink = shr->scan_objects;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 209) __entry->nid = sc->nid;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 210) __entry->nr_objects_to_shrink = nr_objects_to_shrink;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 211) __entry->gfp_flags = sc->gfp_mask;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 212) __entry->cache_items = cache_items;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 213) __entry->delta = delta;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 214) __entry->total_scan = total_scan;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 215) __entry->priority = priority;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 216) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 217)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 218) TP_printk("%pS %p: nid: %d objects to shrink %ld gfp_flags %s cache items %ld delta %lld total_scan %ld priority %d",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 219) __entry->shrink,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 220) __entry->shr,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 221) __entry->nid,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 222) __entry->nr_objects_to_shrink,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 223) show_gfp_flags(__entry->gfp_flags),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 224) __entry->cache_items,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 225) __entry->delta,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 226) __entry->total_scan,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 227) __entry->priority)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 228) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 229)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 230) TRACE_EVENT(mm_shrink_slab_end,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 231) TP_PROTO(struct shrinker *shr, int nid, int shrinker_retval,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 232) long unused_scan_cnt, long new_scan_cnt, long total_scan),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 233)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 234) TP_ARGS(shr, nid, shrinker_retval, unused_scan_cnt, new_scan_cnt,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 235) total_scan),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 236)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 237) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 238) __field(struct shrinker *, shr)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 239) __field(int, nid)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 240) __field(void *, shrink)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 241) __field(long, unused_scan)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 242) __field(long, new_scan)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 243) __field(int, retval)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 244) __field(long, total_scan)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 245) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 246)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 247) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 248) __entry->shr = shr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 249) __entry->nid = nid;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 250) __entry->shrink = shr->scan_objects;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 251) __entry->unused_scan = unused_scan_cnt;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 252) __entry->new_scan = new_scan_cnt;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 253) __entry->retval = shrinker_retval;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 254) __entry->total_scan = total_scan;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 255) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 256)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 257) TP_printk("%pS %p: nid: %d unused scan count %ld new scan count %ld total_scan %ld last shrinker return val %d",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 258) __entry->shrink,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 259) __entry->shr,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 260) __entry->nid,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 261) __entry->unused_scan,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 262) __entry->new_scan,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 263) __entry->total_scan,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 264) __entry->retval)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 265) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 266)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 267) TRACE_EVENT(mm_vmscan_lru_isolate,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 268) TP_PROTO(int highest_zoneidx,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 269) int order,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 270) unsigned long nr_requested,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 271) unsigned long nr_scanned,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 272) unsigned long nr_skipped,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 273) unsigned long nr_taken,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 274) isolate_mode_t isolate_mode,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 275) int lru),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 276)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 277) TP_ARGS(highest_zoneidx, order, nr_requested, nr_scanned, nr_skipped, nr_taken, isolate_mode, lru),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 278)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 279) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 280) __field(int, highest_zoneidx)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 281) __field(int, order)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 282) __field(unsigned long, nr_requested)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 283) __field(unsigned long, nr_scanned)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 284) __field(unsigned long, nr_skipped)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 285) __field(unsigned long, nr_taken)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 286) __field(isolate_mode_t, isolate_mode)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 287) __field(int, lru)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 288) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 289)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 290) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 291) __entry->highest_zoneidx = highest_zoneidx;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 292) __entry->order = order;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 293) __entry->nr_requested = nr_requested;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 294) __entry->nr_scanned = nr_scanned;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 295) __entry->nr_skipped = nr_skipped;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 296) __entry->nr_taken = nr_taken;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 297) __entry->isolate_mode = isolate_mode;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 298) __entry->lru = lru;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 299) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 300)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 301) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 302) * classzone is previous name of the highest_zoneidx.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 303) * Reason not to change it is the ABI requirement of the tracepoint.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 304) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 305) TP_printk("isolate_mode=%d classzone=%d order=%d nr_requested=%lu nr_scanned=%lu nr_skipped=%lu nr_taken=%lu lru=%s",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 306) __entry->isolate_mode,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 307) __entry->highest_zoneidx,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 308) __entry->order,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 309) __entry->nr_requested,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 310) __entry->nr_scanned,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 311) __entry->nr_skipped,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 312) __entry->nr_taken,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 313) __print_symbolic(__entry->lru, LRU_NAMES))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 314) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 315)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 316) TRACE_EVENT(mm_vmscan_writepage,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 317)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 318) TP_PROTO(struct page *page),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 319)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 320) TP_ARGS(page),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 321)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 322) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 323) __field(unsigned long, pfn)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 324) __field(int, reclaim_flags)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 325) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 326)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 327) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 328) __entry->pfn = page_to_pfn(page);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 329) __entry->reclaim_flags = trace_reclaim_flags(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 330) page_is_file_lru(page));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 331) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 332)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 333) TP_printk("page=%p pfn=%lu flags=%s",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 334) pfn_to_page(__entry->pfn),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 335) __entry->pfn,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 336) show_reclaim_flags(__entry->reclaim_flags))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 337) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 338)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 339) TRACE_EVENT(mm_vmscan_lru_shrink_inactive,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 340)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 341) TP_PROTO(int nid,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 342) unsigned long nr_scanned, unsigned long nr_reclaimed,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 343) struct reclaim_stat *stat, int priority, int file),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 344)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 345) TP_ARGS(nid, nr_scanned, nr_reclaimed, stat, priority, file),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 346)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 347) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 348) __field(int, nid)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 349) __field(unsigned long, nr_scanned)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 350) __field(unsigned long, nr_reclaimed)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 351) __field(unsigned long, nr_dirty)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 352) __field(unsigned long, nr_writeback)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 353) __field(unsigned long, nr_congested)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 354) __field(unsigned long, nr_immediate)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 355) __field(unsigned int, nr_activate0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 356) __field(unsigned int, nr_activate1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 357) __field(unsigned long, nr_ref_keep)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 358) __field(unsigned long, nr_unmap_fail)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 359) __field(int, priority)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 360) __field(int, reclaim_flags)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 361) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 362)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 363) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 364) __entry->nid = nid;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 365) __entry->nr_scanned = nr_scanned;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 366) __entry->nr_reclaimed = nr_reclaimed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 367) __entry->nr_dirty = stat->nr_dirty;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 368) __entry->nr_writeback = stat->nr_writeback;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 369) __entry->nr_congested = stat->nr_congested;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 370) __entry->nr_immediate = stat->nr_immediate;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 371) __entry->nr_activate0 = stat->nr_activate[0];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 372) __entry->nr_activate1 = stat->nr_activate[1];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 373) __entry->nr_ref_keep = stat->nr_ref_keep;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 374) __entry->nr_unmap_fail = stat->nr_unmap_fail;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 375) __entry->priority = priority;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 376) __entry->reclaim_flags = trace_reclaim_flags(file);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 377) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 378)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 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",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 380) __entry->nid,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 381) __entry->nr_scanned, __entry->nr_reclaimed,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 382) __entry->nr_dirty, __entry->nr_writeback,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 383) __entry->nr_congested, __entry->nr_immediate,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 384) __entry->nr_activate0, __entry->nr_activate1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 385) __entry->nr_ref_keep, __entry->nr_unmap_fail,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 386) __entry->priority,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 387) show_reclaim_flags(__entry->reclaim_flags))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 388) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 389)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 390) TRACE_EVENT(mm_vmscan_lru_shrink_active,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 391)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 392) TP_PROTO(int nid, unsigned long nr_taken,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 393) unsigned long nr_active, unsigned long nr_deactivated,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 394) unsigned long nr_referenced, int priority, int file),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 395)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 396) TP_ARGS(nid, nr_taken, nr_active, nr_deactivated, nr_referenced, priority, file),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 397)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 398) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 399) __field(int, nid)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 400) __field(unsigned long, nr_taken)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 401) __field(unsigned long, nr_active)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 402) __field(unsigned long, nr_deactivated)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 403) __field(unsigned long, nr_referenced)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 404) __field(int, priority)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 405) __field(int, reclaim_flags)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 406) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 407)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 408) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 409) __entry->nid = nid;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 410) __entry->nr_taken = nr_taken;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 411) __entry->nr_active = nr_active;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 412) __entry->nr_deactivated = nr_deactivated;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 413) __entry->nr_referenced = nr_referenced;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 414) __entry->priority = priority;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 415) __entry->reclaim_flags = trace_reclaim_flags(file);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 416) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 417)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 418) TP_printk("nid=%d nr_taken=%ld nr_active=%ld nr_deactivated=%ld nr_referenced=%ld priority=%d flags=%s",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 419) __entry->nid,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 420) __entry->nr_taken,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 421) __entry->nr_active, __entry->nr_deactivated, __entry->nr_referenced,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 422) __entry->priority,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 423) show_reclaim_flags(__entry->reclaim_flags))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 424) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 425)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 426) TRACE_EVENT(mm_vmscan_inactive_list_is_low,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 427)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 428) TP_PROTO(int nid, int reclaim_idx,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 429) unsigned long total_inactive, unsigned long inactive,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 430) unsigned long total_active, unsigned long active,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 431) unsigned long ratio, int file),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 432)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 433) TP_ARGS(nid, reclaim_idx, total_inactive, inactive, total_active, active, ratio, file),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 434)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 435) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 436) __field(int, nid)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 437) __field(int, reclaim_idx)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 438) __field(unsigned long, total_inactive)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 439) __field(unsigned long, inactive)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 440) __field(unsigned long, total_active)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 441) __field(unsigned long, active)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 442) __field(unsigned long, ratio)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 443) __field(int, reclaim_flags)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 444) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 445)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 446) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 447) __entry->nid = nid;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 448) __entry->reclaim_idx = reclaim_idx;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 449) __entry->total_inactive = total_inactive;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 450) __entry->inactive = inactive;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 451) __entry->total_active = total_active;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 452) __entry->active = active;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 453) __entry->ratio = ratio;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 454) __entry->reclaim_flags = trace_reclaim_flags(file) &
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 455) RECLAIM_WB_LRU;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 456) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 457)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 458) TP_printk("nid=%d reclaim_idx=%d total_inactive=%ld inactive=%ld total_active=%ld active=%ld ratio=%ld flags=%s",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 459) __entry->nid,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 460) __entry->reclaim_idx,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 461) __entry->total_inactive, __entry->inactive,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 462) __entry->total_active, __entry->active,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 463) __entry->ratio,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 464) show_reclaim_flags(__entry->reclaim_flags))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 465) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 466)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 467) TRACE_EVENT(mm_vmscan_node_reclaim_begin,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 468)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 469) TP_PROTO(int nid, int order, gfp_t gfp_flags),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 470)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 471) TP_ARGS(nid, order, gfp_flags),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 472)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 473) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 474) __field(int, nid)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 475) __field(int, order)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 476) __field(gfp_t, gfp_flags)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 477) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 478)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 479) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 480) __entry->nid = nid;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 481) __entry->order = order;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 482) __entry->gfp_flags = gfp_flags;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 483) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 484)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 485) TP_printk("nid=%d order=%d gfp_flags=%s",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 486) __entry->nid,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 487) __entry->order,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 488) show_gfp_flags(__entry->gfp_flags))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 489) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 490)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 491) DEFINE_EVENT(mm_vmscan_direct_reclaim_end_template, mm_vmscan_node_reclaim_end,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 492)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 493) TP_PROTO(unsigned long nr_reclaimed),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 494)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 495) TP_ARGS(nr_reclaimed)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 496) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 497)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 498) #endif /* _TRACE_VMSCAN_H */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 499)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 500) /* This part must be outside protection */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 501) #include <trace/define_trace.h>