#!/usr/bin/python2
-import os, re
+import os, re, sys
def load_results(prefix):
settings_file = open(prefix + ".settings")
return (settings, results)
def extract(data, params={}, ty='read', index=0):
+ if ty == 'mixed':
+ ty = ('read', 'write')
+ else:
+ ty = (ty,)
+
results = {}
for (s, r) in data:
match = True
ops = int(s['BENCH_OPS'])
- vals = [x[ty][index] for x in r]
- vals = vals[5:]
+ vs = 0.0
+ for t in ty:
+ vals = [x[t][index] for x in r]
+ vals = vals[5:]
+ vs += sum(vals) / (len(vals) or 1)
+ results[ops] = vs
- results[ops] = sum(vals) / len(vals)
return results
data = []
if __name__ == '__main__':
- for f in os.listdir('results'):
+ dirname = '20110310'
+ for f in os.listdir(dirname):
if f.endswith('.settings'):
- data.append(load_results('results/' + f[:-len('.settings')]))
+ data.append(load_results(dirname + '/' + f[:-len('.settings')]))
+
+ratios = {'read': '0.0', 'write': '1.0', 'mixed': '0.5'}
+
+blocksizes = set(int(s[0]['BENCH_BLOCKSIZE'])
+ or int(s[0]['BENCH_FILESIZE'])
+ for s in data)
+print blocksizes
+sizes = set(int(s[0]['BENCH_FILESIZE']) * int(s[0]['BENCH_FILECOUNT']) / 1024**2
+ for s in data)
+print sizes
-for size in [128, 512, 1024, 2048]:
- params = {'BLUESKY_TARGET': 'native', 'BENCH_WRITERATIO': '1.0',
- 'BENCH_FILECOUNT': str(size / 4)}
+for size in sorted(sizes):
+ for blocksize in sorted(blocksizes):
+ for ratio in ratios:
+ params = {'BLUESKY_TARGET': 's3:mvrable-bluesky-west',
+ 'BENCH_WRITERATIO': ratios[ratio],
+ 'BENCH_FILECOUNT': str(size),
+ 'BENCH_BLOCKSIZE': str(blocksize)}
+ basesize = 1 << 20
+ if blocksize < basesize:
+ params['BENCH_BLOCKSIZE'] = str(blocksize)
+ params['BENCH_FILESIZE'] = str(basesize)
+ elif blocksize >= basesize:
+ params['BENCH_BLOCKSIZE'] = str(0)
+ params['BENCH_FILESIZE'] = str(blocksize)
- d0 = extract(data, params, ty='write', index=0)
- d1 = extract(data, params, ty='write', index=1)
+ d0 = extract(data, params, ty=ratio, index=0)
+ d1 = extract(data, params, ty=ratio, index=1)
- fp = open('%s-%d-write.data' % (params['BLUESKY_TARGET'], size), 'w')
- for k in sorted(d0.keys()):
- fp.write("%d\t%f\t%f\n" % (k, d0[k], d1[k]))
- fp.close()
+ fp = open('%s-%d-%s-%dk.data' % (params['BLUESKY_TARGET'], size, ratio, blocksize / 1024), 'w')
+ for k in sorted(d0.keys()):
+ fp.write("%d\t%f\t%f\n" % (k, d0[k], d1[k]))
+ fp.close()