All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/2] nfs-iostat: Fix columnarization of RPC statistics
@ 2014-04-25 16:52 Chuck Lever
  2014-04-25 16:52 ` [PATCH 2/2] nfs-iostat: Fix attribute cache statistics Chuck Lever
  2014-04-30 16:30 ` [PATCH 1/2] nfs-iostat: Fix columnarization of RPC statistics Steve Dickson
  0 siblings, 2 replies; 4+ messages in thread
From: Chuck Lever @ 2014-04-25 16:52 UTC (permalink / raw)
  To: steved; +Cc: linux-nfs

Note: format() is new with Python 2.6

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
---

 tools/nfs-iostat/nfs-iostat.py |   31 +++++++++++++++++++------------
 1 files changed, 19 insertions(+), 12 deletions(-)

diff --git a/tools/nfs-iostat/nfs-iostat.py b/tools/nfs-iostat/nfs-iostat.py
index 341cdbf..6831c12 100644
--- a/tools/nfs-iostat/nfs-iostat.py
+++ b/tools/nfs-iostat/nfs-iostat.py
@@ -353,15 +353,21 @@ class DeviceData:
             exe_per_op = 0.0
 
         op += ':'
-        print('%s' % op.lower().ljust(15), end='')
-        print('  ops/s\t\t   kB/s\t\t  kB/op\t\tretrans\t\tavg RTT (ms)\tavg exe (ms)')
-
-        print('\t\t%7.3f' % (ops / sample_time), end='')
-        print('\t%7.3f' % (kilobytes / sample_time), end='')
-        print('\t%7.3f' % kb_per_op, end='')
-        print(' %7d (%3.1f%%)' % (retrans, retrans_percent), end='')
-        print('\t%7.3f' % rtt_per_op, end='')
-        print('\t%7.3f' % exe_per_op)
+        print(format(op.lower(), '<16s'), end='')
+        print(format('ops/s', '>8s'), end='')
+        print(format('kB/s', '>16s'), end='')
+        print(format('kB/op', '>16s'), end='')
+        print(format('retrans', '>16s'), end='')
+        print(format('avg RTT (ms)', '>16s'), end='')
+        print(format('avg exe (ms)', '>16s'))
+
+        print(format((ops / sample_time), '>24.3f'), end='')
+        print(format((kilobytes / sample_time), '>16.3f'), end='')
+        print(format(kb_per_op, '>16.3f'), end='')
+        retransmits = '{0:>10.0f} ({1:>3.1f}%)'.format(retrans, retrans_percent).strip()
+        print(format(retransmits, '>16'), end='')
+        print(format(rtt_per_op, '>16.3f'), end='')
+        print(format(exe_per_op, '>16.3f'))
 
     def ops(self, sample_time):
         sends = float(self.__rpc_data['rpcsends'])
@@ -391,9 +397,10 @@ class DeviceData:
             (self.__nfs_data['export'], self.__nfs_data['mountpoint']))
         print()
 
-        print('   op/s\t\trpc bklog')
-        print('%7.2f' % (sends / sample_time), end='')
-        print('\t%7.2f' % backlog)
+        print(format('ops/s', '>16') + format('rpc bklog', '>16'))
+        print(format((sends / sample_time), '>16.3f'), end='')
+        print(format(backlog, '>16.3f'))
+        print()
 
         if which == 0:
             self.__print_rpc_op_stats('READ', sample_time)


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [PATCH 2/2] nfs-iostat: Fix attribute cache statistics
  2014-04-25 16:52 [PATCH 1/2] nfs-iostat: Fix columnarization of RPC statistics Chuck Lever
@ 2014-04-25 16:52 ` Chuck Lever
  2014-04-30 16:31   ` Steve Dickson
  2014-04-30 16:30 ` [PATCH 1/2] nfs-iostat: Fix columnarization of RPC statistics Steve Dickson
  1 sibling, 1 reply; 4+ messages in thread
From: Chuck Lever @ 2014-04-25 16:52 UTC (permalink / raw)
  To: steved; +Cc: linux-nfs

"nfs-iostat.py --attr" was displaying nonsense (like negative
counts and percentages).

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
---

 tools/nfs-iostat/nfs-iostat.py |   28 ++++++++--------------------
 1 files changed, 8 insertions(+), 20 deletions(-)

diff --git a/tools/nfs-iostat/nfs-iostat.py b/tools/nfs-iostat/nfs-iostat.py
index 6831c12..b324cd8 100644
--- a/tools/nfs-iostat/nfs-iostat.py
+++ b/tools/nfs-iostat/nfs-iostat.py
@@ -243,27 +243,15 @@ class DeviceData:
         """Print attribute cache efficiency stats
         """
         nfs_stats = self.__nfs_data
-        getattr_stats = self.__rpc_data['GETATTR']
-
-        if nfs_stats['inoderevalidates'] != 0:
-            getattr_ops = float(getattr_stats[1])
-            opens = float(nfs_stats['vfsopen'])
-            revalidates = float(nfs_stats['inoderevalidates']) - opens
-            if revalidates != 0:
-                ratio = ((revalidates - getattr_ops) * 100) / revalidates
-            else:
-                ratio = 0.0
-
-            data_invalidates = float(nfs_stats['datainvalidates'])
-            attr_invalidates = float(nfs_stats['attrinvalidates'])
 
-            print()
-            print('%d inode revalidations, hitting in cache %4.2f%% of the time' % \
-                (revalidates, ratio))
-            print('%d open operations (mandatory GETATTR requests)' % opens)
-            if getattr_ops != 0:
-                print('%4.2f%% of GETATTRs resulted in data cache invalidations' % \
-                   ((data_invalidates * 100) / getattr_ops))
+        print()
+        print('%d VFS opens' % (nfs_stats['vfsopen']))
+        print('%d inoderevalidates (forced GETATTRs)' % \
+            (nfs_stats['inoderevalidates']))
+        print('%d page cache invalidations' % \
+            (nfs_stats['datainvalidates']))
+        print('%d attribute cache invalidations' % \
+            (nfs_stats['attrinvalidates']))
 
     def __print_dir_cache_stats(self, sample_time):
         """Print directory stats


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH 1/2] nfs-iostat: Fix columnarization of RPC statistics
  2014-04-25 16:52 [PATCH 1/2] nfs-iostat: Fix columnarization of RPC statistics Chuck Lever
  2014-04-25 16:52 ` [PATCH 2/2] nfs-iostat: Fix attribute cache statistics Chuck Lever
@ 2014-04-30 16:30 ` Steve Dickson
  1 sibling, 0 replies; 4+ messages in thread
From: Steve Dickson @ 2014-04-30 16:30 UTC (permalink / raw)
  To: Chuck Lever; +Cc: linux-nfs



On 04/25/2014 12:52 PM, Chuck Lever wrote:
> Note: format() is new with Python 2.6
> 
> Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Committed...

steved.
> ---
> 
>  tools/nfs-iostat/nfs-iostat.py |   31 +++++++++++++++++++------------
>  1 files changed, 19 insertions(+), 12 deletions(-)
> 
> diff --git a/tools/nfs-iostat/nfs-iostat.py b/tools/nfs-iostat/nfs-iostat.py
> index 341cdbf..6831c12 100644
> --- a/tools/nfs-iostat/nfs-iostat.py
> +++ b/tools/nfs-iostat/nfs-iostat.py
> @@ -353,15 +353,21 @@ class DeviceData:
>              exe_per_op = 0.0
>  
>          op += ':'
> -        print('%s' % op.lower().ljust(15), end='')
> -        print('  ops/s\t\t   kB/s\t\t  kB/op\t\tretrans\t\tavg RTT (ms)\tavg exe (ms)')
> -
> -        print('\t\t%7.3f' % (ops / sample_time), end='')
> -        print('\t%7.3f' % (kilobytes / sample_time), end='')
> -        print('\t%7.3f' % kb_per_op, end='')
> -        print(' %7d (%3.1f%%)' % (retrans, retrans_percent), end='')
> -        print('\t%7.3f' % rtt_per_op, end='')
> -        print('\t%7.3f' % exe_per_op)
> +        print(format(op.lower(), '<16s'), end='')
> +        print(format('ops/s', '>8s'), end='')
> +        print(format('kB/s', '>16s'), end='')
> +        print(format('kB/op', '>16s'), end='')
> +        print(format('retrans', '>16s'), end='')
> +        print(format('avg RTT (ms)', '>16s'), end='')
> +        print(format('avg exe (ms)', '>16s'))
> +
> +        print(format((ops / sample_time), '>24.3f'), end='')
> +        print(format((kilobytes / sample_time), '>16.3f'), end='')
> +        print(format(kb_per_op, '>16.3f'), end='')
> +        retransmits = '{0:>10.0f} ({1:>3.1f}%)'.format(retrans, retrans_percent).strip()
> +        print(format(retransmits, '>16'), end='')
> +        print(format(rtt_per_op, '>16.3f'), end='')
> +        print(format(exe_per_op, '>16.3f'))
>  
>      def ops(self, sample_time):
>          sends = float(self.__rpc_data['rpcsends'])
> @@ -391,9 +397,10 @@ class DeviceData:
>              (self.__nfs_data['export'], self.__nfs_data['mountpoint']))
>          print()
>  
> -        print('   op/s\t\trpc bklog')
> -        print('%7.2f' % (sends / sample_time), end='')
> -        print('\t%7.2f' % backlog)
> +        print(format('ops/s', '>16') + format('rpc bklog', '>16'))
> +        print(format((sends / sample_time), '>16.3f'), end='')
> +        print(format(backlog, '>16.3f'))
> +        print()
>  
>          if which == 0:
>              self.__print_rpc_op_stats('READ', sample_time)
> 

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH 2/2] nfs-iostat: Fix attribute cache statistics
  2014-04-25 16:52 ` [PATCH 2/2] nfs-iostat: Fix attribute cache statistics Chuck Lever
@ 2014-04-30 16:31   ` Steve Dickson
  0 siblings, 0 replies; 4+ messages in thread
From: Steve Dickson @ 2014-04-30 16:31 UTC (permalink / raw)
  To: Chuck Lever; +Cc: linux-nfs



On 04/25/2014 12:52 PM, Chuck Lever wrote:
> "nfs-iostat.py --attr" was displaying nonsense (like negative
> counts and percentages).
> 
> Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Committed... 

steved.
> ---
> 
>  tools/nfs-iostat/nfs-iostat.py |   28 ++++++++--------------------
>  1 files changed, 8 insertions(+), 20 deletions(-)
> 
> diff --git a/tools/nfs-iostat/nfs-iostat.py b/tools/nfs-iostat/nfs-iostat.py
> index 6831c12..b324cd8 100644
> --- a/tools/nfs-iostat/nfs-iostat.py
> +++ b/tools/nfs-iostat/nfs-iostat.py
> @@ -243,27 +243,15 @@ class DeviceData:
>          """Print attribute cache efficiency stats
>          """
>          nfs_stats = self.__nfs_data
> -        getattr_stats = self.__rpc_data['GETATTR']
> -
> -        if nfs_stats['inoderevalidates'] != 0:
> -            getattr_ops = float(getattr_stats[1])
> -            opens = float(nfs_stats['vfsopen'])
> -            revalidates = float(nfs_stats['inoderevalidates']) - opens
> -            if revalidates != 0:
> -                ratio = ((revalidates - getattr_ops) * 100) / revalidates
> -            else:
> -                ratio = 0.0
> -
> -            data_invalidates = float(nfs_stats['datainvalidates'])
> -            attr_invalidates = float(nfs_stats['attrinvalidates'])
>  
> -            print()
> -            print('%d inode revalidations, hitting in cache %4.2f%% of the time' % \
> -                (revalidates, ratio))
> -            print('%d open operations (mandatory GETATTR requests)' % opens)
> -            if getattr_ops != 0:
> -                print('%4.2f%% of GETATTRs resulted in data cache invalidations' % \
> -                   ((data_invalidates * 100) / getattr_ops))
> +        print()
> +        print('%d VFS opens' % (nfs_stats['vfsopen']))
> +        print('%d inoderevalidates (forced GETATTRs)' % \
> +            (nfs_stats['inoderevalidates']))
> +        print('%d page cache invalidations' % \
> +            (nfs_stats['datainvalidates']))
> +        print('%d attribute cache invalidations' % \
> +            (nfs_stats['attrinvalidates']))
>  
>      def __print_dir_cache_stats(self, sample_time):
>          """Print directory stats
> 

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2014-04-30 16:31 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-04-25 16:52 [PATCH 1/2] nfs-iostat: Fix columnarization of RPC statistics Chuck Lever
2014-04-25 16:52 ` [PATCH 2/2] nfs-iostat: Fix attribute cache statistics Chuck Lever
2014-04-30 16:31   ` Steve Dickson
2014-04-30 16:30 ` [PATCH 1/2] nfs-iostat: Fix columnarization of RPC statistics Steve Dickson

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.