689ae56c051d774ffba8f1fd58a8a332d06b8668
[bluesky.git] / nfs3 / parse-synread.py
1 #!/usr/bin/python
2
3 import struct, sys
4
5 DATAPOINT = '<II'
6
7 def load_log(f):
8     data = []
9     size = struct.calcsize(DATAPOINT)
10     d = f.read(size)
11     while len(d) == size:
12         i = struct.unpack(DATAPOINT, d)
13         data.append(i)
14         d = f.read(size)
15     return data
16
17 if __name__ == '__main__':
18     blocksize = int(sys.argv[1])
19     data = []
20     for f in sys.argv[2:]:
21         data += load_log(open(f))
22     data.sort()
23
24     duration = data[-1][0] - data[0][0]
25     print "Time span: %d to %d (%d seconds)" % (data[0][0], data[-1][0], duration)
26
27     start = data[0][0] + 5
28     end = data[-1][0] - 5
29     truncated = [d for d in data if start <= d[0] <= end]
30     print len(data), len(truncated)
31     duration = float(end - start + 1)
32     print duration
33     print "Ops per second:", len(truncated) / duration
34     print "Bandwidth (MB/s):", len(truncated) / duration * blocksize / 1024.0**2
35     print "Average latency (ms):", sum(d[1] for d in truncated) / len(truncated) / 1000