From: Steve Dickson <SteveD@redhat.com>
To: Chuck Lever <chuck.lever@oracle.com>, linux-nfs@vger.kernel.org
Subject: Re: [PATCH] mountstats: Sort RPC statistics by operation count
Date: Sat, 06 Dec 2014 17:24:17 -0500 [thread overview]
Message-ID: <54838211.1070007@RedHat.com> (raw)
In-Reply-To: <20141104221043.13019.51333.stgit@manet.1015granger.net>
Hey Chuck,
First of all, my apologies for taking so long to get to this...
On 11/04/2014 05:14 PM, Chuck Lever wrote:
> Sort the RPC statistics in descending order by operation count, so
> that the most frequently executed operation appears at the top of
> the listing (a la `top`).
>
> Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
> ---
> Hey folks-
>
> Any opinions about this? I considered adding a "--sort" command line
> option to enable sorting, but instead made it always-on.
>
> Could also use --sort to specify which individual statistic is used
> for sorting (op count, RTT, retransmit rate, and so forth).
This is an interesting idea... But let me get in Scott's patches
and then we can build from there...
>
> Try: watch -d "mountstats --rpc /mnt/your-mount-here"
I had better luck with watch -n 0 "mountstats --rpc /mnt/your-mount-here"
But the output looks much better... Nice work!
Committed...
steved.
> 1 file changed, 14 insertions(+), 11 deletions(-)
>
> diff --git a/tools/mountstats/mountstats.py b/tools/mountstats/mountstats.py
> index 9a6ec43..f75103c 100644
> --- a/tools/mountstats/mountstats.py
> +++ b/tools/mountstats/mountstats.py
> @@ -24,6 +24,7 @@ MA 02110-1301 USA
> """
>
> import sys, os, time
> +from operator import itemgetter
>
> Mountstats_version = '0.2'
>
> @@ -262,27 +263,29 @@ class DeviceData:
> """
> sends = self.__rpc_data['rpcsends']
>
> - # XXX: these should be sorted by 'count'
> - print()
> + allstats = []
> for op in self.__rpc_data['ops']:
> - stats = self.__rpc_data[op]
> - count = stats[0]
> - retrans = stats[1] - count
> + allstats.append([op] + self.__rpc_data[op])
> +
> + print()
> + for stats in sorted(allstats, key=itemgetter(1), reverse=True):
> + count = stats[1]
> if count != 0:
> - print('%s:' % op)
> + print('%s:' % stats[0])
> print('\t%d ops (%d%%)' % \
> (count, ((count * 100) / sends)), end=' ')
> + retrans = stats[2] - count
> if retrans != 0:
> print('\t%d retrans (%d%%)' % (retrans, ((retrans * 100) / count)), end=' ')
> - print('\t%d major timeouts' % stats[2])
> + print('\t%d major timeouts' % stats[3])
> else:
> print('')
> print('\tavg bytes sent per op: %d\tavg bytes received per op: %d' % \
> - (stats[3] / count, stats[4] / count))
> - print('\tbacklog wait: %f' % (float(stats[5]) / count), end=' ')
> - print('\tRTT: %f' % (float(stats[6]) / count), end=' ')
> + (stats[4] / count, stats[5] / count))
> + print('\tbacklog wait: %f' % (float(stats[6]) / count), end=' ')
> + print('\tRTT: %f' % (float(stats[7]) / count), end=' ')
> print('\ttotal execute time: %f (milliseconds)' % \
> - (float(stats[7]) / count))
> + (float(stats[8]) / count))
>
> def compare_iostats(self, old_stats):
> """Return the difference between two sets of stats
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
prev parent reply other threads:[~2014-12-06 22:24 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-11-04 22:14 [PATCH] mountstats: Sort RPC statistics by operation count Chuck Lever
2014-12-06 22:24 ` Steve Dickson [this message]
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=54838211.1070007@RedHat.com \
--to=steved@redhat.com \
--cc=chuck.lever@oracle.com \
--cc=linux-nfs@vger.kernel.org \
/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