This replicates the functionality in the nfsiostat command. --- tools/mountstats/mountstats.py | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/tools/mountstats/mountstats.py b/tools/mountstats/mountstats.py index 2f525f4b..5f13bf8e 100755 --- a/tools/mountstats/mountstats.py +++ b/tools/mountstats/mountstats.py @@ -607,6 +607,8 @@ class DeviceData: queued_for = float(rpc_stats[5]) rtt = float(rpc_stats[6]) exe = float(rpc_stats[7]) + if self.__rpc_data['statsvers'] >= 1.1: + errs = int(rpc_stats[8]) # prevent floating point exceptions if ops != 0: @@ -615,6 +617,8 @@ class DeviceData: rtt_per_op = rtt / ops exe_per_op = exe / ops queued_for_per_op = queued_for / ops + if self.__rpc_data['statsvers'] >= 1.1: + errs_percent = (errs * 100) / ops else: kb_per_op = 0.0 retrans_percent = 0.0 @@ -630,7 +634,10 @@ class DeviceData: print(format('retrans', '>16s'), end='') print(format('avg RTT (ms)', '>16s'), end='') print(format('avg exe (ms)', '>16s'), end='') - print(format('avg queue (ms)', '>16s')) + print(format('avg queue (ms)', '>16s'), end='') + if self.__rpc_data['statsvers'] >= 1.1: + print(format('errors', '>16s'), end='') + print() print(format((ops / sample_time), '>24.3f'), end='') print(format((kilobytes / sample_time), '>16.3f'), end='') @@ -639,7 +646,11 @@ class DeviceData: print(format(retransmits, '>16'), end='') print(format(rtt_per_op, '>16.3f'), end='') print(format(exe_per_op, '>16.3f'), end='') - print(format(queued_for_per_op, '>16.3f')) + print(format(queued_for_per_op, '>16.3f'), end='') + if self.__rpc_data['statsvers'] >= 1.1: + errors = '{0:>10.0f} ({1:>3.1f}%)'.format(errs, errs_percent).strip() + print(format(errors, '>16'), end='') + print() def display_iostats(self, sample_time): """Display NFS and RPC stats in an iostat-like way -- 2.20.1