All of lore.kernel.org
 help / color / mirror / Atom feed
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
> 

      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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.