Commit | Line | Data |
---|---|---|
60023ade | 1 | #!/usr/bin/python2.7 |
1e613c9c KC |
2 | """ Cut the number bins in half in fio histogram output. Example usage: |
3 | ||
4 | $ half-bins.py -c 2 output_clat_hist.1.log > smaller_clat_hist.1.log | |
5 | ||
6 | Which merges e.g. bins [0 .. 3], [4 .. 7], ..., [1212 .. 1215] resulting in | |
7 | 304 = 1216 / (2**2) merged bins per histogram sample. | |
8 | ||
9 | @author Karl Cronburg <karl.cronburg@gmail.com> | |
10 | """ | |
11 | import sys | |
12 | ||
13 | def main(ctx): | |
14 | stride = 1 << ctx.coarseness | |
15 | with open(ctx.FILENAME, 'r') as fp: | |
16 | for line in fp.readlines(): | |
17 | vals = line.split(', ') | |
18 | sys.stdout.write("%s, %s, %s, " % tuple(vals[:3])) | |
19 | ||
20 | hist = list(map(int, vals[3:])) | |
21 | for i in range(0, len(hist) - stride, stride): | |
22 | sys.stdout.write("%d, " % sum(hist[i : i + stride],)) | |
23 | sys.stdout.write("%d\n" % sum(hist[len(hist) - stride:])) | |
24 | ||
25 | if __name__ == '__main__': | |
26 | import argparse | |
27 | p = argparse.ArgumentParser() | |
28 | arg = p.add_argument | |
29 | arg( 'FILENAME', help='clat_hist file for which we will reduce' | |
30 | ' (by half or more) the number of bins.') | |
31 | arg('-c', '--coarseness', | |
32 | default=1, | |
33 | type=int, | |
34 | help='number of times to reduce number of bins by half, ' | |
35 | 'e.g. coarseness of 4 merges each 2^4 = 16 consecutive ' | |
36 | 'bins.') | |
37 | main(p.parse_args()) |