From: Steve Dickson <SteveD@redhat.com>
To: Mike Frysinger <vapier@gentoo.org>
Cc: linux-nfs@vger.kernel.org
Subject: Re: [PATCH] nfsiostat: make it work w/python3
Date: Mon, 25 Mar 2013 10:18:35 -0400 [thread overview]
Message-ID: <51505CBB.9010608@RedHat.com> (raw)
In-Reply-To: <1364155277-30394-1-git-send-email-vapier@gentoo.org>
On 24/03/13 16:01, Mike Frysinger wrote:
> Simple fixes here to work with python 2 & 3:
> - use print() everywhere
> - dict.iteritems() -> dict.items()
> - file() -> open()
> - sys.maxint -> sys.maxsize
>
> Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Committed...
steved.
> ---
> tools/nfs-iostat/nfs-iostat.py | 130 +++++++++++++++++++++--------------------
> 1 file changed, 66 insertions(+), 64 deletions(-)
>
> diff --git a/tools/nfs-iostat/nfs-iostat.py b/tools/nfs-iostat/nfs-iostat.py
> index d909632..dfbef87 100644
> --- a/tools/nfs-iostat/nfs-iostat.py
> +++ b/tools/nfs-iostat/nfs-iostat.py
> @@ -3,6 +3,8 @@
> """Emulate iostat for NFS mount points using /proc/self/mountstats
> """
>
> +from __future__ import print_function
> +
> __copyright__ = """
> Copyright (C) 2005, Chuck Lever <cel@netapp.com>
>
> @@ -201,9 +203,9 @@ class DeviceData:
> result = DeviceData()
>
> # copy self into result
> - for key, value in self.__nfs_data.iteritems():
> + for key, value in self.__nfs_data.items():
> result.__nfs_data[key] = value
> - for key, value in self.__rpc_data.iteritems():
> + for key, value in self.__rpc_data.items():
> result.__rpc_data[key] = value
>
> # compute the difference of each item in the list
> @@ -233,9 +235,9 @@ class DeviceData:
> client_bytes_read = float(nfs_stats['serverreadbytes'] - nfs_stats['directreadbytes'])
> ratio = ((app_bytes_read - client_bytes_read) * 100) / app_bytes_read
>
> - print
> - print 'app bytes: %f client bytes %f' % (app_bytes_read, client_bytes_read)
> - print 'Data cache hit ratio: %4.2f%%' % ratio
> + print()
> + print('app bytes: %f client bytes %f' % (app_bytes_read, client_bytes_read))
> + print('Data cache hit ratio: %4.2f%%' % ratio)
>
> def __print_attr_cache_stats(self, sample_time):
> """Print attribute cache efficiency stats
> @@ -255,13 +257,13 @@ class DeviceData:
> 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
> + 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('%4.2f%% of GETATTRs resulted in data cache invalidations' % \
> + ((data_invalidates * 100) / getattr_ops))
>
> def __print_dir_cache_stats(self, sample_time):
> """Print directory stats
> @@ -277,13 +279,13 @@ class DeviceData:
> lookups = nfs_stats['vfslookup']
> getdents = nfs_stats['vfsreaddir']
>
> - print
> - print '%d open operations (pathname lookups)' % opens
> - print '%d dentry revalidates and %d vfs lookup requests' % \
> - (dentry_revals, lookups),
> - print 'resulted in %d LOOKUPs on the wire' % lookup_ops
> - print '%d vfs getdents calls resulted in %d READDIRs on the wire' % \
> - (getdents, readdir_ops)
> + print()
> + print('%d open operations (pathname lookups)' % opens)
> + print('%d dentry revalidates and %d vfs lookup requests' % \
> + (dentry_revals, lookups))
> + print('resulted in %d LOOKUPs on the wire' % lookup_ops)
> + print('%d vfs getdents calls resulted in %d READDIRs on the wire' % \
> + (getdents, readdir_ops))
>
> def __print_page_stats(self, sample_time):
> """Print page cache stats
> @@ -297,33 +299,33 @@ class DeviceData:
> vfswritepages = nfs_stats['vfswritepages']
> pages_written = nfs_stats['writepages']
>
> - print
> - print '%d nfs_readpage() calls read %d pages' % \
> - (vfsreadpage, vfsreadpage)
> - print '%d nfs_readpages() calls read %d pages' % \
> - (vfsreadpages, pages_read - vfsreadpage),
> + print()
> + print('%d nfs_readpage() calls read %d pages' % \
> + (vfsreadpage, vfsreadpage))
> + print('%d nfs_readpages() calls read %d pages' % \
> + (vfsreadpages, pages_read - vfsreadpage))
> if vfsreadpages != 0:
> - print '(%.1f pages per call)' % \
> - (float(pages_read - vfsreadpage) / vfsreadpages)
> + print('(%.1f pages per call)' % \
> + (float(pages_read - vfsreadpage) / vfsreadpages))
> else:
> - print
> -
> - print
> - print '%d nfs_updatepage() calls' % nfs_stats['vfsupdatepage']
> - print '%d nfs_writepage() calls wrote %d pages' % \
> - (vfswritepage, vfswritepage)
> - print '%d nfs_writepages() calls wrote %d pages' % \
> - (vfswritepages, pages_written - vfswritepage),
> + print()
> +
> + print()
> + print('%d nfs_updatepage() calls' % nfs_stats['vfsupdatepage'])
> + print('%d nfs_writepage() calls wrote %d pages' % \
> + (vfswritepage, vfswritepage))
> + print('%d nfs_writepages() calls wrote %d pages' % \
> + (vfswritepages, pages_written - vfswritepage))
> if (vfswritepages) != 0:
> - print '(%.1f pages per call)' % \
> - (float(pages_written - vfswritepage) / vfswritepages)
> + print('(%.1f pages per call)' % \
> + (float(pages_written - vfswritepage) / vfswritepages))
> else:
> - print
> + print()
>
> congestionwaits = nfs_stats['congestionwait']
> if congestionwaits != 0:
> - print
> - print '%d congestion waits' % congestionwaits
> + print()
> + print('%d congestion waits' % congestionwaits)
>
> def __print_rpc_op_stats(self, op, sample_time):
> """Print generic stats for one RPC op
> @@ -351,15 +353,15 @@ class DeviceData:
> exe_per_op = 0.0
>
> op += ':'
> - print '%s' % op.lower().ljust(15),
> - print ' ops/s\t\t kB/s\t\t kB/op\t\tretrans\t\tavg RTT (ms)\tavg exe (ms)'
> + print('%s' % op.lower().ljust(15))
> + 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),
> - print '\t%7.3f' % (kilobytes / sample_time),
> - print '\t%7.3f' % kb_per_op,
> - print ' %7d (%3.1f%%)' % (retrans, retrans_percent),
> - print '\t%7.3f' % rtt_per_op,
> - print '\t%7.3f' % exe_per_op
> + print('\t\t%7.3f' % (ops / sample_time))
> + print('\t%7.3f' % (kilobytes / sample_time))
> + print('\t%7.3f' % kb_per_op)
> + print(' %7d (%3.1f%%)' % (retrans, retrans_percent))
> + print('\t%7.3f' % rtt_per_op)
> + print('\t%7.3f' % exe_per_op)
>
> def ops(self, sample_time):
> sends = float(self.__rpc_data['rpcsends'])
> @@ -384,14 +386,14 @@ class DeviceData:
> else:
> backlog = 0.0
>
> - print
> - print '%s mounted on %s:' % \
> - (self.__nfs_data['export'], self.__nfs_data['mountpoint'])
> - print
> + print()
> + print('%s mounted on %s:' % \
> + (self.__nfs_data['export'], self.__nfs_data['mountpoint']))
> + print()
>
> - print ' op/s\t\trpc bklog'
> - print '%7.2f' % (sends / sample_time),
> - print '\t%7.2f' % backlog
> + print(' op/s\t\trpc bklog')
> + print('%7.2f' % (sends / sample_time))
> + print('\t%7.2f' % backlog)
>
> if which == 0:
> self.__print_rpc_op_stats('READ', sample_time)
> @@ -424,7 +426,7 @@ def parse_stats_file(filename):
> ms_dict = dict()
> key = ''
>
> - f = file(filename)
> + f = open(filename)
> for line in f.readlines():
> words = line.split()
> if len(words) == 0:
> @@ -494,7 +496,7 @@ def list_nfs_mounts(givenlist, mountstats):
> if stats.is_nfs_mountpoint():
> list += [device]
> else:
> - for device, descr in mountstats.iteritems():
> + for device, descr in mountstats.items():
> stats = DeviceData()
> stats.parse_stats(descr)
> if stats.is_nfs_mountpoint():
> @@ -527,7 +529,7 @@ client are listed.
> usage="usage: %prog [ <interval> [ <count> ] ] [ <options> ] [ <mount point> ]",
> description=mydescription,
> version='version %s' % Iostats_version)
> - parser.set_defaults(which=0, sort=False, list=sys.maxint)
> + parser.set_defaults(which=0, sort=False, list=sys.maxsize)
>
> statgroup = OptionGroup(parser, "Statistics Options",
> 'File I/O is displayed unless one of the following is specified:')
> @@ -572,29 +574,29 @@ client are listed.
> try:
> interval = int(arg)
> except:
> - print 'Illegal <interval> value %s' % arg
> + print('Illegal <interval> value %s' % arg)
> return
> if interval > 0:
> interval_seen = True
> else:
> - print 'Illegal <interval> value %s' % arg
> + print('Illegal <interval> value %s' % arg)
> return
> elif not count_seen:
> try:
> count = int(arg)
> except:
> - print 'Ilegal <count> value %s' % arg
> + print('Ilegal <count> value %s' % arg)
> return
> if count > 0:
> count_seen = True
> else:
> - print 'Illegal <count> value %s' % arg
> + print('Illegal <count> value %s' % arg)
> return
>
> # make certain devices contains only NFS mount points
> devices = list_nfs_mounts(origdevices, mountstats)
> if len(devices) == 0:
> - print 'No NFS mount points were found'
> + print('No NFS mount points were found')
> return
>
>
> @@ -616,7 +618,7 @@ client are listed.
> # we need to recheck the devices list when reparsing
> devices = list_nfs_mounts(origdevices,mountstats)
> if len(devices) == 0:
> - print 'No NFS mount points were found'
> + print('No NFS mount points were found')
> return
> count -= 1
> else:
> @@ -630,7 +632,7 @@ client are listed.
> # we need to recheck the devices list when reparsing
> devices = list_nfs_mounts(origdevices,mountstats)
> if len(devices) == 0:
> - print 'No NFS mount points were found'
> + print('No NFS mount points were found')
> return
>
> #
> @@ -641,7 +643,7 @@ prog = os.path.basename(sys.argv[0])
> try:
> iostat_command(prog)
> except KeyboardInterrupt:
> - print 'Caught ^C... exiting'
> + print('Caught ^C... exiting')
> sys.exit(1)
>
> sys.exit(0)
>
prev parent reply other threads:[~2013-03-25 14:18 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-03-24 20:01 [PATCH] nfsiostat: make it work w/python3 Mike Frysinger
2013-03-25 14:18 ` 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=51505CBB.9010608@RedHat.com \
--to=steved@redhat.com \
--cc=linux-nfs@vger.kernel.org \
--cc=vapier@gentoo.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.