On Apr 21, 2009, at 1:57 PM, Kevin Constantine wrote:
Chuck Lever wrote:
On Apr 20, 2009, at 10:03 PM, Kevin Constantine wrote:
Print statistics about bytes written by NFS
Signed-off-by: Kevin Constantine <kevin.constantine@xxxxxxxxxxxxxxxxxxx
>
---
tools/nfs-iostat/nfs-iostat.py | 10 ++++++++++
1 files changed, 10 insertions(+), 0 deletions(-)
diff --git a/tools/nfs-iostat/nfs-iostat.py b/tools/nfs-iostat/nfs-
iostat.py
index d331a72..5f2e232 100644
--- a/tools/nfs-iostat/nfs-iostat.py
+++ b/tools/nfs-iostat/nfs-iostat.py
@@ -221,6 +221,7 @@ class DeviceData:
"""
nfs_stats = self.__nfs_data
app_bytes_read = float(nfs_stats['normalreadbytes'] +
nfs_stats['directreadbytes'])
+ bytes_written_by_app =
float(nfs_stats['normalwritebytes'] + nfs_stats['directwritebytes'])
if app_bytes_read != 0:
read_bytes_from_server =
float(nfs_stats['serverreadbytes'])
directio_bytes_from_server =
float(nfs_stats['directreadbytes'])
@@ -234,6 +235,15 @@ class DeviceData:
cached_read_bytes / 1024.0 / 1024.0, \
app_bytes_read / 1024.0 / 1024.0, \
ratio)
+ if bytes_written_by_app != 0:
+ bytes_written_by_nfs = float(nfs_stats['serverwritebytes'])
+ cached_write_bytes = float(bytes_written_by_app -
bytes_written_by_nfs);
Again, I don't see why this computation is necessary: The
"normalwritebytes" statistic is what was written through the
client's cache, and "directwritebytes" counts the number of bytes
that were written via O_DIRECT.
As I said in the email preceding these patches:
"I'm not quire sure about this patch. I'm seeing oddities where the
number of bytes in "NORMALWRITTENBYTES + DIRECTWRITTENBYTES" does
not equal SERVERWRITTENBYTES. In some cases the amount of data
written by the app (normalwrittenbytes + directwrittenbytes) is
greater than the amount of data written to the server, and in other
cases it's less than the amount of data written to the server. At
the moment, i've ascribed that difference to data being written to
the local cache and not flushed, but that doesn't make a whole lot
of sense."
Our e-mail system may have barfed on my earlier reply, but I would
like to understand why you need this statistic. What kind of analysis
are you looking for on the write side?
+ print
+ print '%13s %12s %15s %15s' % ("Data Written:", "To
Server", "To Cache", "Total")
+ print '%10s %13.4fMB %13.4fMB %13.4fMB' % ("", \
+ bytes_written_by_nfs / 1024.0 /
1024.0, \
+ cached_write_bytes / 1024.0 / 1024.0, \
+ bytes_written_by_app / 1024.0 / 1024.0)
def __print_attr_cache_stats(self, sample_time):
"""Print attribute cache efficiency stats
--
Chuck Lever
chuck[dot]lever[at]oracle[dot]com
--
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