mm, vmscan: add classzone information to tracepoints
This is convenient when tracking down why the skip count is high because it'll show what classzone kswapd woke up at and what zones are being isolated. Link: http://lkml.kernel.org/r/1467970510-21195-29-git-send-email-mgorman@techsingularity.net Signed-off-by: Mel Gorman <mgorman@techsingularity.net> Acked-by: Vlastimil Babka <vbabka@suse.cz> Cc: Hillf Danton <hillf.zj@alibaba-inc.com> Acked-by: Johannes Weiner <hannes@cmpxchg.org> Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com> Cc: Michal Hocko <mhocko@kernel.org> Cc: Minchan Kim <minchan@kernel.org> Cc: Rik van Riel <riel@surriel.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:

committed by
Linus Torvalds

parent
84c7a7771f
commit
e5146b12e2
@@ -55,21 +55,23 @@ TRACE_EVENT(mm_vmscan_kswapd_sleep,
|
||||
|
||||
TRACE_EVENT(mm_vmscan_kswapd_wake,
|
||||
|
||||
TP_PROTO(int nid, int order),
|
||||
TP_PROTO(int nid, int zid, int order),
|
||||
|
||||
TP_ARGS(nid, order),
|
||||
TP_ARGS(nid, zid, order),
|
||||
|
||||
TP_STRUCT__entry(
|
||||
__field( int, nid )
|
||||
__field( int, zid )
|
||||
__field( int, order )
|
||||
),
|
||||
|
||||
TP_fast_assign(
|
||||
__entry->nid = nid;
|
||||
__entry->zid = zid;
|
||||
__entry->order = order;
|
||||
),
|
||||
|
||||
TP_printk("nid=%d order=%d", __entry->nid, __entry->order)
|
||||
TP_printk("nid=%d zid=%d order=%d", __entry->nid, __entry->zid, __entry->order)
|
||||
);
|
||||
|
||||
TRACE_EVENT(mm_vmscan_wakeup_kswapd,
|
||||
@@ -98,47 +100,50 @@ TRACE_EVENT(mm_vmscan_wakeup_kswapd,
|
||||
|
||||
DECLARE_EVENT_CLASS(mm_vmscan_direct_reclaim_begin_template,
|
||||
|
||||
TP_PROTO(int order, int may_writepage, gfp_t gfp_flags),
|
||||
TP_PROTO(int order, int may_writepage, gfp_t gfp_flags, int classzone_idx),
|
||||
|
||||
TP_ARGS(order, may_writepage, gfp_flags),
|
||||
TP_ARGS(order, may_writepage, gfp_flags, classzone_idx),
|
||||
|
||||
TP_STRUCT__entry(
|
||||
__field( int, order )
|
||||
__field( int, may_writepage )
|
||||
__field( gfp_t, gfp_flags )
|
||||
__field( int, classzone_idx )
|
||||
),
|
||||
|
||||
TP_fast_assign(
|
||||
__entry->order = order;
|
||||
__entry->may_writepage = may_writepage;
|
||||
__entry->gfp_flags = gfp_flags;
|
||||
__entry->classzone_idx = classzone_idx;
|
||||
),
|
||||
|
||||
TP_printk("order=%d may_writepage=%d gfp_flags=%s",
|
||||
TP_printk("order=%d may_writepage=%d gfp_flags=%s classzone_idx=%d",
|
||||
__entry->order,
|
||||
__entry->may_writepage,
|
||||
show_gfp_flags(__entry->gfp_flags))
|
||||
show_gfp_flags(__entry->gfp_flags),
|
||||
__entry->classzone_idx)
|
||||
);
|
||||
|
||||
DEFINE_EVENT(mm_vmscan_direct_reclaim_begin_template, mm_vmscan_direct_reclaim_begin,
|
||||
|
||||
TP_PROTO(int order, int may_writepage, gfp_t gfp_flags),
|
||||
TP_PROTO(int order, int may_writepage, gfp_t gfp_flags, int classzone_idx),
|
||||
|
||||
TP_ARGS(order, may_writepage, gfp_flags)
|
||||
TP_ARGS(order, may_writepage, gfp_flags, classzone_idx)
|
||||
);
|
||||
|
||||
DEFINE_EVENT(mm_vmscan_direct_reclaim_begin_template, mm_vmscan_memcg_reclaim_begin,
|
||||
|
||||
TP_PROTO(int order, int may_writepage, gfp_t gfp_flags),
|
||||
TP_PROTO(int order, int may_writepage, gfp_t gfp_flags, int classzone_idx),
|
||||
|
||||
TP_ARGS(order, may_writepage, gfp_flags)
|
||||
TP_ARGS(order, may_writepage, gfp_flags, classzone_idx)
|
||||
);
|
||||
|
||||
DEFINE_EVENT(mm_vmscan_direct_reclaim_begin_template, mm_vmscan_memcg_softlimit_reclaim_begin,
|
||||
|
||||
TP_PROTO(int order, int may_writepage, gfp_t gfp_flags),
|
||||
TP_PROTO(int order, int may_writepage, gfp_t gfp_flags, int classzone_idx),
|
||||
|
||||
TP_ARGS(order, may_writepage, gfp_flags)
|
||||
TP_ARGS(order, may_writepage, gfp_flags, classzone_idx)
|
||||
);
|
||||
|
||||
DECLARE_EVENT_CLASS(mm_vmscan_direct_reclaim_end_template,
|
||||
@@ -266,16 +271,18 @@ TRACE_EVENT(mm_shrink_slab_end,
|
||||
|
||||
DECLARE_EVENT_CLASS(mm_vmscan_lru_isolate_template,
|
||||
|
||||
TP_PROTO(int order,
|
||||
TP_PROTO(int classzone_idx,
|
||||
int order,
|
||||
unsigned long nr_requested,
|
||||
unsigned long nr_scanned,
|
||||
unsigned long nr_taken,
|
||||
isolate_mode_t isolate_mode,
|
||||
int file),
|
||||
|
||||
TP_ARGS(order, nr_requested, nr_scanned, nr_taken, isolate_mode, file),
|
||||
TP_ARGS(classzone_idx, order, nr_requested, nr_scanned, nr_taken, isolate_mode, file),
|
||||
|
||||
TP_STRUCT__entry(
|
||||
__field(int, classzone_idx)
|
||||
__field(int, order)
|
||||
__field(unsigned long, nr_requested)
|
||||
__field(unsigned long, nr_scanned)
|
||||
@@ -285,6 +292,7 @@ DECLARE_EVENT_CLASS(mm_vmscan_lru_isolate_template,
|
||||
),
|
||||
|
||||
TP_fast_assign(
|
||||
__entry->classzone_idx = classzone_idx;
|
||||
__entry->order = order;
|
||||
__entry->nr_requested = nr_requested;
|
||||
__entry->nr_scanned = nr_scanned;
|
||||
@@ -293,8 +301,9 @@ DECLARE_EVENT_CLASS(mm_vmscan_lru_isolate_template,
|
||||
__entry->file = file;
|
||||
),
|
||||
|
||||
TP_printk("isolate_mode=%d order=%d nr_requested=%lu nr_scanned=%lu nr_taken=%lu file=%d",
|
||||
TP_printk("isolate_mode=%d classzone=%d order=%d nr_requested=%lu nr_scanned=%lu nr_taken=%lu file=%d",
|
||||
__entry->isolate_mode,
|
||||
__entry->classzone_idx,
|
||||
__entry->order,
|
||||
__entry->nr_requested,
|
||||
__entry->nr_scanned,
|
||||
@@ -304,27 +313,29 @@ DECLARE_EVENT_CLASS(mm_vmscan_lru_isolate_template,
|
||||
|
||||
DEFINE_EVENT(mm_vmscan_lru_isolate_template, mm_vmscan_lru_isolate,
|
||||
|
||||
TP_PROTO(int order,
|
||||
TP_PROTO(int classzone_idx,
|
||||
int order,
|
||||
unsigned long nr_requested,
|
||||
unsigned long nr_scanned,
|
||||
unsigned long nr_taken,
|
||||
isolate_mode_t isolate_mode,
|
||||
int file),
|
||||
|
||||
TP_ARGS(order, nr_requested, nr_scanned, nr_taken, isolate_mode, file)
|
||||
TP_ARGS(classzone_idx, order, nr_requested, nr_scanned, nr_taken, isolate_mode, file)
|
||||
|
||||
);
|
||||
|
||||
DEFINE_EVENT(mm_vmscan_lru_isolate_template, mm_vmscan_memcg_isolate,
|
||||
|
||||
TP_PROTO(int order,
|
||||
TP_PROTO(int classzone_idx,
|
||||
int order,
|
||||
unsigned long nr_requested,
|
||||
unsigned long nr_scanned,
|
||||
unsigned long nr_taken,
|
||||
isolate_mode_t isolate_mode,
|
||||
int file),
|
||||
|
||||
TP_ARGS(order, nr_requested, nr_scanned, nr_taken, isolate_mode, file)
|
||||
TP_ARGS(classzone_idx, order, nr_requested, nr_scanned, nr_taken, isolate_mode, file)
|
||||
|
||||
);
|
||||
|
||||
|
Reference in New Issue
Block a user