More work on the synthetic read benchmark
[bluesky.git] / nfs3 / parse-synread.py
diff --git a/nfs3/parse-synread.py b/nfs3/parse-synread.py
new file mode 100755 (executable)
index 0000000..be718b8
--- /dev/null
@@ -0,0 +1,33 @@
+#!/usr/bin/python
+
+import struct, sys
+
+DATAPOINT = '<II'
+
+def load_log(f):
+    data = []
+    size = struct.calcsize(DATAPOINT)
+    d = f.read(size)
+    while len(d) == size:
+        i = struct.unpack(DATAPOINT, d)
+        data.append(i)
+        d = f.read(size)
+    return data
+
+if __name__ == '__main__':
+    data = []
+    for f in sys.argv[1:]:
+        data += load_log(open(f))
+    data.sort()
+
+    duration = data[-1][0] - data[0][0]
+    print "Time span: %d to %d (%d seconds)" % (data[0][0], data[-1][0], duration)
+
+    start = data[0][0] + 5
+    end = data[-1][0] - 5
+    truncated = [d for d in data if start <= d[0] <= end]
+    print len(data), len(truncated)
+    duration = float(end - start + 1)
+    print duration
+    print "Ops per second:", len(truncated) / duration
+    print "Bandwidth:", len(truncated) / duration * 32768