From: Dave Chinner <david@fromorbit.com>
To: Christoph Hellwig <hch@infradead.org>
Cc: viro@ZenIV.linux.org.uk, linux-fsdevel@vger.kernel.org,
linux-kernel@vger.kernel.org, linux-mm@kvack.org
Subject: Re: [PATCH 02/14] vmscan: add shrink_slab tracepoints
Date: Mon, 18 Jul 2011 11:14:45 +1000 [thread overview]
Message-ID: <20110718011445.GA30254@dastard> (raw)
In-Reply-To: <20110711095708.GB19354@infradead.org>
On Mon, Jul 11, 2011 at 05:57:08AM -0400, Christoph Hellwig wrote:
> On Fri, Jul 08, 2011 at 02:14:34PM +1000, Dave Chinner wrote:
> > From: Dave Chinner <dchinner@redhat.com>
> >
> > ??t is impossible to understand what the shrinkers are actually doing
> > without instrumenting the code, so add a some tracepoints to allow
> > insight to be gained.
> >
> > Signed-off-by: Dave Chinner <dchinner@redhat.com>
>
> Looks good. But wouldn't it be a good idea to give the shrinkers names
> so that we can pretty print those in the trace event?
Incremental patch below.
Cheers,
Dave.
--
Dave Chinner
david@fromorbit.com
vmscan: add shrinker name to shrink_slab tracepoints.
From: Dave Chinner <dchinner@redhat.com>
Allow people to see what shrinker the tracepoints belong to by
outputing the shrinker function name as well as the shrinker
instance.
This results in output like:
mm_shrink_slab_end: rpcauth_cache_shrinker+0x0 0xffffffff81f9be20 ....
mm_shrink_slab_end: mb_cache_shrink_fn+0x0 0xffffffff81f2310 ....
mm_shrink_slab_end: shrink_dqcache_memory+0x0 0xffffffff81f2320 ....
mm_shrink_slab_end: prune_super+0x0 0xffff88007ce1330 ....
mm_shrink_slab_end: nfs_access_cache_shrinker+0x0 0xffffffff81f30aa ....
mm_shrink_slab_end: gfs2_shrink_glock_memory+0x0 0xffffffff81f59a8 ....
mm_shrink_slab_end: gfs2_shrink_qd_memory+0x0 0xffffffff81f59cc ....
mm_shrink_slab_end: prune_super+0x0 0xffff88007c3f930 ....
mm_shrink_slab_end: prune_super+0x0 0xffff88007be6bb0 ....
mm_shrink_slab_end: prune_super+0x0 0xffff88007be8db0 ....
mm_shrink_slab_end: prune_super+0x0 0xffff88007c5bb70 ....
mm_shrink_slab_end: prune_super+0x0 0xffff88007be8d70 ....
mm_shrink_slab_end: prune_super+0x0 0xffff88007b9c270 ....
mm_shrink_slab_end: prune_super+0x0 0xffff88007ba44b0 ....
mm_shrink_slab_end: prune_super+0x0 0xffff88007b9bbf0 ....
mm_shrink_slab_end: xfs_buftarg_shrink+0x0 0xffff88007b1ef1d8 ....
mm_shrink_slab_end: prune_super+0x0 0xffff88007b132f0 ....
mm_shrink_slab_end: xfs_buftarg_shrink+0x0 0xffff88007bcda258 ....
Signed-off-by: Dave Chinner <dchinner@redhat.com>
---
include/trace/events/vmscan.h | 10 ++++++++--
1 files changed, 8 insertions(+), 2 deletions(-)
diff --git a/include/trace/events/vmscan.h b/include/trace/events/vmscan.h
index 5f3fea4..36851f7 100644
--- a/include/trace/events/vmscan.h
+++ b/include/trace/events/vmscan.h
@@ -190,6 +190,7 @@ TRACE_EVENT(mm_shrink_slab_start,
TP_STRUCT__entry(
__field(struct shrinker *, shr)
+ __field(void *, shrink)
__field(long, nr_objects_to_shrink)
__field(gfp_t, gfp_flags)
__field(unsigned long, pgs_scanned)
@@ -201,6 +202,7 @@ TRACE_EVENT(mm_shrink_slab_start,
TP_fast_assign(
__entry->shr = shr;
+ __entry->shrink = shr->shrink;
__entry->nr_objects_to_shrink = nr_objects_to_shrink;
__entry->gfp_flags = sc->gfp_mask;
__entry->pgs_scanned = pgs_scanned;
@@ -210,7 +212,8 @@ TRACE_EVENT(mm_shrink_slab_start,
__entry->total_scan = total_scan;
),
- TP_printk("shrinker %p: objects to shrink %ld gfp_flags %s pgs_scanned %ld lru_pgs %ld cache items %ld delta %lld total_scan %ld",
+ TP_printk("%pF %p: objects to shrink %ld gfp_flags %s pgs_scanned %ld lru_pgs %ld cache items %ld delta %lld total_scan %ld",
+ __entry->shrink,
__entry->shr,
__entry->nr_objects_to_shrink,
show_gfp_flags(__entry->gfp_flags),
@@ -229,6 +232,7 @@ TRACE_EVENT(mm_shrink_slab_end,
TP_STRUCT__entry(
__field(struct shrinker *, shr)
+ __field(void *, shrink)
__field(long, unused_scan)
__field(long, new_scan)
__field(int, retval)
@@ -237,13 +241,15 @@ TRACE_EVENT(mm_shrink_slab_end,
TP_fast_assign(
__entry->shr = shr;
+ __entry->shrink = shr->shrink;
__entry->unused_scan = unused_scan_cnt;
__entry->new_scan = new_scan_cnt;
__entry->retval = shrinker_retval;
__entry->total_scan = new_scan_cnt - unused_scan_cnt;
),
- TP_printk("shrinker %p: unused scan count %ld new scan count %ld total_scan %ld last shrinker return val %d",
+ TP_printk("%pF %p: unused scan count %ld new scan count %ld total_scan %ld last shrinker return val %d",
+ __entry->shrink,
__entry->shr,
__entry->unused_scan,
__entry->new_scan,
next prev parent reply other threads:[~2011-07-18 1:14 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-07-08 4:14 [PATCH 0/14] Per superblock cache reclaim Dave Chinner
2011-07-08 4:14 ` [PATCH 01/14] dcache: fix __d_alloc prototype to use const Dave Chinner
2011-07-08 4:14 ` [PATCH 02/14] vmscan: add shrink_slab tracepoints Dave Chinner
2011-07-11 9:57 ` Christoph Hellwig
2011-07-18 1:14 ` Dave Chinner [this message]
2011-07-08 4:14 ` [PATCH 03/14] vmscan: shrinker->nr updates race and go wrong Dave Chinner
2011-07-08 4:14 ` [PATCH 04/14] vmscan: reduce wind up shrinker->nr when shrinker can't do work Dave Chinner
2011-07-08 4:14 ` [PATCH 05/14] vmscan: add customisable shrinker batch size Dave Chinner
2011-07-08 4:14 ` [PATCH 06/14] inode: convert inode_stat.nr_unused to per-cpu counters Dave Chinner
2011-07-08 4:14 ` [PATCH 07/14] inode: Make unused inode LRU per superblock Dave Chinner
2011-07-08 4:14 ` [PATCH 08/14] inode: move to per-sb LRU locks Dave Chinner
2011-07-11 19:21 ` Christoph Hellwig
2011-07-12 0:34 ` Dave Chinner
2011-07-08 4:14 ` [PATCH 09/14] superblock: move pin_sb_for_writeback() to fs/super.c Dave Chinner
2011-07-08 4:14 ` [PATCH 10/14] superblock: introduce per-sb cache shrinker infrastructure Dave Chinner
2011-07-08 4:14 ` [PATCH 11/14] inode: remove iprune_sem Dave Chinner
2011-07-08 4:14 ` [PATCH 12/14] superblock: add filesystem shrinker operations Dave Chinner
2011-07-08 4:14 ` [PATCH 13/14] vfs: increase shrinker batch size Dave Chinner
2011-07-11 10:05 ` Christoph Hellwig
2011-07-08 4:14 ` [PATCH 14/14] xfs: make use of new shrinker callout for the inode cache Dave Chinner
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20110718011445.GA30254@dastard \
--to=david@fromorbit.com \
--cc=hch@infradead.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=viro@ZenIV.linux.org.uk \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).