Skip to content

Instantly share code, notes, and snippets.

@concubidated
Created November 30, 2012 05:38
Show Gist options
  • Save concubidated/4173949 to your computer and use it in GitHub Desktop.
Save concubidated/4173949 to your computer and use it in GitHub Desktop.
#!/usr/bin/python
import sys
import csv
import string
class Row:
def __init__(self, size):
self.size = size
self.node = []
self.run = []
def toBytes(s):
bw = s.split('K')
if bw[0] != s:
return int(bw[0]) * 1024
bw = s.split('M')
if bw[0] != s:
return int(bw[0]) * 1024 * 1024
dataset = []
for n in sys.argv[1:]:
x = Row(4096)
y = Row(131072)
z = Row(4194304)
with open(n, 'rb') as csvfile:
results = csv.reader(csvfile, delimiter = ',' )
for row in results:
if row[0] != 'Test name':
x.disk = row[0]
y.disk = row[0]
z.disk = row[0]
name = row[1].split('-')
size = name[2]
case = name[3]
if size == '4k':
case = name[3]
if case == 'w':
x.w = toBytes(row[5])
x.w_iops = row[3]
if case == 'randw':
x.rw = toBytes(row[5])
x.rw_iops = row[3]
if case == 'randr':
x.rr = toBytes(row[4])
x.rr_iops = row[2]
if case == 'r':
x.r = toBytes(row[4])
x.r_iops = row[2]
if size == '128k':
if case == 'w':
y.w = toBytes(row[5])
y.w_iops = row[3]
if case == 'randw':
y.rw = toBytes(row[5])
y.rw_iops = row[3]
if case == 'randr':
y.rr = toBytes(row[4])
y.rr_iops = row[2]
if case == 'r':
y.r = toBytes(row[4])
y.r_iops = row[2]
if size == '4m':
if case == 'w':
z.w = toBytes(row[5])
z.w_iops = row[3]
if case == 'randw':
z.rw = toBytes(row[5])
z.rw_iops = row[3]
if case == 'randr':
z.rr = toBytes(row[4])
z.rr_iops = row[2]
if case == 'r':
z.r = toBytes(row[4])
z.r_iops = row[2]
dataset.append(x)
dataset.append(y)
dataset.append(z)
newfile = open('performance_results.csv', 'w')
writer = csv.writer(newfile, delimiter=',')
writer.writerow(['Server','Disk','Size','Run','Seq Read BW','Seq Write BW','Random Read BW','Random Write BW','Read IOPS','Write IOPS','Random Write IOPS','Random Read IOPS'])
dataset = sorted(dataset, key=lambda row: row.size)
i = 1
length = len(dataset)
for n in dataset:
row = []
if i == 1:
size = n.size
rownum = 2
if size != n.size:
size = n.size
writer.writerow(['Average','','','','=AVERAGE(E%s:E%s)' %(rownum, i),'=AVERAGE(F%s:F%s)' %(rownum, i),'=AVERAGE(G%s:G%s)' %(rownum, i),'=AVERAGE(H%s:H%s)' %(rownum, i),'=AVERAGE(I%s:I%s)' %(rownum, i),'=average(J%s:J%s)' %(rownum, i),'=average(K%s:K%s)' %(rownum, i),'=average(L%s:L%s)' %(rownum, i)])
writer.writerow(['Sigma','','','','=STDEV(E%s:E%s)' %(rownum, i),'=STDEV(F%s:F%s)' %(rownum, i),'=STDEV(G%s:G%s)' %(rownum, i),'=STDEV(H%s:H%s)' %(rownum, i),'=STDEV(I%s:I%s)' %(rownum, i),'=STDEV(J%s:J%s)' %(rownum, i),'=STDEV(K%s:K%s)' %(rownum, i),'=STDEV(L%s:L%s)' %(rownum, i)])
rownum = i
row.append(n.node)
row.append(n.disk)
row.append(n.size)
row.append(n.run)
row.append(n.r)
row.append(n.w)
row.append(n.rr)
row.append(n.rw)
row.append(n.r_iops)
row.append(n.w_iops)
row.append(n.rr_iops)
row.append(n.rw_iops)
writer.writerow(row)
if i == (length):
writer.writerow(['Average','','','','=AVERAGE(E%s:E%s)' %(rownum, i),'=AVERAGE(F%s:F%s)' %(rownum, i),'=AVERAGE(G%s:G%s)' %(rownum, i),'=AVERAGE(H%s:H%s)' %(rownum, i),'=AVERAGE(I%s:I%s)' %(rownum, i),'=average(J%s:J%s)' %(rownum, i),'=average(K%s:K%s)' %(rownum, i),'=average(L%s:L%s)' %(rownum, i)])
writer.writerow(['Sigma','','','','=STDEV(E%s:E%s)' %(rownum, i),'=STDEV(F%s:F%s)' %(rownum, i),'=STDEV(G%s:G%s)' %(rownum, i),'=STDEV(H%s:H%s)' %(rownum, i),'=STDEV(I%s:I%s)' %(rownum, i),'=STDEV(J%s:J%s)' %(rownum, i),'=STDEV(K%s:K%s)' %(rownum, i),'=STDEV(L%s:L%s)' %(rownum, i)])
i+=1
newfile.close()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment