From 098fc420bef6d33df89f8182463fc81ae71b607f Mon Sep 17 00:00:00 2001 From: Zach Brown Date: Fri, 22 Jan 2021 15:34:28 -0800 Subject: [PATCH] Add some item cache page tracing Signed-off-by: Zach Brown --- kmod/src/item.c | 4 ++++ kmod/src/scoutfs_trace.h | 47 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+) diff --git a/kmod/src/item.c b/kmod/src/item.c index 60cec43a..2b03c39f 100644 --- a/kmod/src/item.c +++ b/kmod/src/item.c @@ -1494,6 +1494,8 @@ retry: rbtree_erase(&rd->node, &root); rbtree_insert(&rd->node, par, pnode, &cinf->pg_root); lru_accessed(sb, cinf, rd); + trace_scoutfs_item_read_page(sb, key, &rd->start, + &rd->end); continue; } @@ -2345,6 +2347,8 @@ retry: write_lock(&pg->rwlock); pgi = trim_page_intersection(sb, cinf, pg, right, start, end); + trace_scoutfs_item_invalidate_page(sb, start, end, + &pg->start, &pg->end, pgi); BUG_ON(pgi == PGI_DISJOINT); /* walk wouldn't ret disjoint */ if (pgi == PGI_INSIDE) { diff --git a/kmod/src/scoutfs_trace.h b/kmod/src/scoutfs_trace.h index 580cb6a2..ca0471e4 100644 --- a/kmod/src/scoutfs_trace.h +++ b/kmod/src/scoutfs_trace.h @@ -2421,6 +2421,53 @@ TRACE_EVENT(scoutfs_alloc_move, __entry->ret) ); +TRACE_EVENT(scoutfs_item_read_page, + TP_PROTO(struct super_block *sb, struct scoutfs_key *key, + struct scoutfs_key *pg_start, struct scoutfs_key *pg_end), + TP_ARGS(sb, key, pg_start, pg_end), + TP_STRUCT__entry( + SCSB_TRACE_FIELDS + sk_trace_define(key) + sk_trace_define(pg_start) + sk_trace_define(pg_end) + ), + TP_fast_assign( + SCSB_TRACE_ASSIGN(sb); + sk_trace_assign(key, key); + sk_trace_assign(pg_start, pg_start); + sk_trace_assign(pg_end, pg_end); + ), + TP_printk(SCSBF" key "SK_FMT" pg_start "SK_FMT" pg_end "SK_FMT, + SCSB_TRACE_ARGS, sk_trace_args(key), sk_trace_args(pg_start), + sk_trace_args(pg_end)) +); + +TRACE_EVENT(scoutfs_item_invalidate_page, + TP_PROTO(struct super_block *sb, struct scoutfs_key *start, + struct scoutfs_key *end, struct scoutfs_key *pg_start, + struct scoutfs_key *pg_end, int pgi), + TP_ARGS(sb, start, end, pg_start, pg_end, pgi), + TP_STRUCT__entry( + SCSB_TRACE_FIELDS + sk_trace_define(start) + sk_trace_define(end) + sk_trace_define(pg_start) + sk_trace_define(pg_end) + __field(int, pgi) + ), + TP_fast_assign( + SCSB_TRACE_ASSIGN(sb); + sk_trace_assign(start, start); + sk_trace_assign(end, end); + sk_trace_assign(pg_start, pg_start); + sk_trace_assign(pg_end, pg_end); + __entry->pgi = pgi; + ), + TP_printk(SCSBF" start "SK_FMT" end "SK_FMT" pg_start "SK_FMT" pg_end "SK_FMT" pgi %d", + SCSB_TRACE_ARGS, sk_trace_args(start), sk_trace_args(end), + sk_trace_args(pg_start), sk_trace_args(pg_end), __entry->pgi) +); + #endif /* _TRACE_SCOUTFS_H */ /* This part must be outside protection */