From: Mark Fasheh <mfasheh@suse.de>
To: Christoph Hellwig <hch@infradead.org>
Cc: Jeff Mahoney <jeffm@suse.com>, xfs@oss.sgi.com
Subject: Re: xfs-trace-ilock-more
Date: Thu, 5 Jan 2012 14:38:59 -0800 [thread overview]
Message-ID: <20120105223859.GJ11114@wotan.suse.de> (raw)
In-Reply-To: <20111218202734.GB20799@infradead.org>
On Sun, Dec 18, 2011 at 03:27:34PM -0500, Christoph Hellwig wrote:
> Given that the patch is fairly clean can you send it to us for
> inclusion?
Here goes. I updated the patch for 3.2 and of course gave it a quick test.
--Mark
--
Mark Fasheh
From: Mark Fasheh <mfasheh@suse.com>
[PATCH] xfs: add more ilock tracing
Let's get a trace of the amount of time spent in xfs_ilock(). This has
helped us (SUSE) in investigating read/write performance issues in the past
when ilock() contention has come up as a possibile issue.
Signed-off-by: Mark Fasheh <mfasheh@suse.de>
---
fs/xfs/xfs_iget.c | 16 ++++++++++++----
fs/xfs/xfs_trace.h | 13 ++++++++-----
2 files changed, 20 insertions(+), 9 deletions(-)
diff --git a/fs/xfs/xfs_iget.c b/fs/xfs/xfs_iget.c
index 0fa98b1..b83108b 100644
--- a/fs/xfs/xfs_iget.c
+++ b/fs/xfs/xfs_iget.c
@@ -543,6 +543,8 @@ xfs_ilock(
xfs_inode_t *ip,
uint lock_flags)
{
+ unsigned long start = jiffies;
+
/*
* You can't set both SHARED and EXCL for the same lock,
* and only XFS_IOLOCK_SHARED, XFS_IOLOCK_EXCL, XFS_ILOCK_SHARED,
@@ -564,7 +566,7 @@ xfs_ilock(
else if (lock_flags & XFS_ILOCK_SHARED)
mraccess_nested(&ip->i_lock, XFS_ILOCK_DEP(lock_flags));
- trace_xfs_ilock(ip, lock_flags, _RET_IP_);
+ trace_xfs_ilock(ip, lock_flags, start, _RET_IP_);
}
/*
@@ -584,6 +586,8 @@ xfs_ilock_nowait(
xfs_inode_t *ip,
uint lock_flags)
{
+ unsigned long start = jiffies;
+
/*
* You can't set both SHARED and EXCL for the same lock,
* and only XFS_IOLOCK_SHARED, XFS_IOLOCK_EXCL, XFS_ILOCK_SHARED,
@@ -609,7 +613,7 @@ xfs_ilock_nowait(
if (!mrtryaccess(&ip->i_lock))
goto out_undo_iolock;
}
- trace_xfs_ilock_nowait(ip, lock_flags, _RET_IP_);
+ trace_xfs_ilock_nowait(ip, lock_flags, start, _RET_IP_);
return 1;
out_undo_iolock:
@@ -638,6 +642,8 @@ xfs_iunlock(
xfs_inode_t *ip,
uint lock_flags)
{
+ unsigned long start = jiffies;
+
/*
* You can't set both SHARED and EXCL for the same lock,
* and only XFS_IOLOCK_SHARED, XFS_IOLOCK_EXCL, XFS_ILOCK_SHARED,
@@ -671,7 +677,7 @@ xfs_iunlock(
xfs_trans_unlocked_item(ip->i_itemp->ili_item.li_ailp,
(xfs_log_item_t*)(ip->i_itemp));
}
- trace_xfs_iunlock(ip, lock_flags, _RET_IP_);
+ trace_xfs_iunlock(ip, lock_flags, start, _RET_IP_);
}
/*
@@ -683,6 +689,8 @@ xfs_ilock_demote(
xfs_inode_t *ip,
uint lock_flags)
{
+ unsigned long start = jiffies;
+
ASSERT(lock_flags & (XFS_IOLOCK_EXCL|XFS_ILOCK_EXCL));
ASSERT((lock_flags & ~(XFS_IOLOCK_EXCL|XFS_ILOCK_EXCL)) == 0);
@@ -691,7 +699,7 @@ xfs_ilock_demote(
if (lock_flags & XFS_IOLOCK_EXCL)
mrdemote(&ip->i_iolock);
- trace_xfs_ilock_demote(ip, lock_flags, _RET_IP_);
+ trace_xfs_ilock_demote(ip, lock_flags, start, _RET_IP_);
}
#ifdef DEBUG
diff --git a/fs/xfs/xfs_trace.h b/fs/xfs/xfs_trace.h
index 4940357..ef5523a 100644
--- a/fs/xfs/xfs_trace.h
+++ b/fs/xfs/xfs_trace.h
@@ -507,32 +507,35 @@ DEFINE_BUF_ITEM_EVENT(xfs_trans_binval);
DECLARE_EVENT_CLASS(xfs_lock_class,
TP_PROTO(struct xfs_inode *ip, unsigned lock_flags,
- unsigned long caller_ip),
- TP_ARGS(ip, lock_flags, caller_ip),
+ unsigned long start, unsigned long caller_ip),
+ TP_ARGS(ip,lock_flags, start, caller_ip),
TP_STRUCT__entry(
__field(dev_t, dev)
__field(xfs_ino_t, ino)
__field(int, lock_flags)
+ __field(unsigned long, start)
__field(unsigned long, caller_ip)
),
TP_fast_assign(
__entry->dev = VFS_I(ip)->i_sb->s_dev;
__entry->ino = ip->i_ino;
__entry->lock_flags = lock_flags;
+ __entry->start = start;
__entry->caller_ip = caller_ip;
),
- TP_printk("dev %d:%d ino 0x%llx flags %s caller %pf",
+ TP_printk("dev %d:%d ino 0x%llx flags %s wait %lu caller %pf",
MAJOR(__entry->dev), MINOR(__entry->dev),
__entry->ino,
__print_flags(__entry->lock_flags, "|", XFS_LOCK_FLAGS),
+ (jiffies - __entry->start),
(void *)__entry->caller_ip)
)
#define DEFINE_LOCK_EVENT(name) \
DEFINE_EVENT(xfs_lock_class, name, \
TP_PROTO(struct xfs_inode *ip, unsigned lock_flags, \
- unsigned long caller_ip), \
- TP_ARGS(ip, lock_flags, caller_ip))
+ unsigned long start, unsigned long caller_ip), \
+ TP_ARGS(ip, lock_flags, start, caller_ip))
DEFINE_LOCK_EVENT(xfs_ilock);
DEFINE_LOCK_EVENT(xfs_ilock_nowait);
DEFINE_LOCK_EVENT(xfs_ilock_demote);
--
1.7.6
_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs
next prev parent reply other threads:[~2012-01-05 22:39 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-12-14 2:40 xfs-trace-ilock-more Christoph Hellwig
2011-12-14 18:27 ` xfs-trace-ilock-more Mark Fasheh
2011-12-14 19:24 ` xfs-trace-ilock-more Jeff Mahoney
2011-12-14 20:32 ` xfs-trace-ilock-more Dave Chinner
2011-12-14 22:42 ` xfs-trace-ilock-more Jeff Mahoney
2011-12-18 20:26 ` xfs-trace-ilock-more Christoph Hellwig
2011-12-18 20:27 ` xfs-trace-ilock-more Christoph Hellwig
2012-01-05 22:38 ` Mark Fasheh [this message]
2012-01-05 23:54 ` xfs-trace-ilock-more 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=20120105223859.GJ11114@wotan.suse.de \
--to=mfasheh@suse.de \
--cc=hch@infradead.org \
--cc=jeffm@suse.com \
--cc=xfs@oss.sgi.com \
/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