I rolled the read cache, and write patches into a single patch below. add --data flag to print data cache statistics print read cache stats from __print_data_cache_stats print stats about bytes written by NFS Signed-off-by: Kevin Constantine <kevin.constantine@xxxxxxxxxxxxxxxxxxx> --- tools/nfs-iostat/nfs-iostat.py | 28 ++++++++++++++++++++++------ 1 files changed, 22 insertions(+), 6 deletions(-) diff --git a/tools/nfs-iostat/nfs-iostat.py b/tools/nfs-iostat/nfs-iostat.py index 9626d42..cb3da59 100644 --- a/tools/nfs-iostat/nfs-iostat.py +++ b/tools/nfs-iostat/nfs-iostat.py @@ -220,14 +220,22 @@ class DeviceData: """Print the data cache hit rate """ nfs_stats = self.__nfs_data - app_bytes_read = float(nfs_stats['normalreadbytes']) + app_bytes_read = float(nfs_stats['normalreadbytes'] + nfs_stats['directreadbytes']) if app_bytes_read != 0: - client_bytes_read = float(nfs_stats['serverreadbytes'] - nfs_stats['directreadbytes']) - ratio = ((app_bytes_read - client_bytes_read) * 100) / app_bytes_read - + cached_read_bytes = float(app_bytes_read - float(nfs_stats['serverreadbytes'])) + ratio = (cached_read_bytes * 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 '%10s %15s %15s %15s %7s' % ("Data Read:", "From Server", "From Cache", "Total", "Hit %") + print '%10s %13.4fMB %13.4fMB %13.4fMB %6.2f%%' % ("", \ + float(nfs_stats['serverreadbytes']) / 1024.0 / 1024.0, \ + cached_read_bytes / 1024.0 / 1024.0, \ + app_bytes_read / 1024.0 / 1024.0, \ + ratio) + bytes_written_by_nfs = float(nfs_stats['serverwritebytes']) + if bytes_written_by_nfs != 0: + print + print '%13s %12s' % ("Data Written:", "To Server") + print '%10s %13.4fMB' % ("", bytes_written_by_nfs / 1024.0 / 1024.0) def __print_attr_cache_stats(self, sample_time): """Print attribute cache efficiency stats @@ -390,6 +398,10 @@ class DeviceData: self.__print_rpc_op_stats('READ', sample_time) self.__print_rpc_op_stats('WRITE', sample_time) self.__print_page_stats(sample_time) + elif which == 4: + self.__print_rpc_op_stats('READ', sample_time) + self.__print_rpc_op_stats('WRITE', sample_time) + self.__print_data_cache_stats() # # Functions @@ -487,6 +499,10 @@ def iostat_command(name): if arg in ['-p', '--page']: which = 3 continue + + if arg in ['--data']: + which = 4 + continue if arg == sys.argv[0]: continue -- 1.6.2.1 -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html