Updates to synthetic read data processing script
[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/sec\tbandwidth (MB/s)\tLatency(ms)"
34     print "%s\t%s\t%s" % (len(truncated) / duration,
35                           len(truncated) / duration * blocksize / 1024.0**2,
36                           sum(d[1] for d in truncated) / len(truncated) / 1000)