Skip to content
Snippets Groups Projects
plot_fio_test_results.py 1.81 KiB
Newer Older
Fornari's avatar
Fornari committed
#!/usr/bin/python

import os, sys
import numpy as np
import matplotlib.pyplot as plt

try:
    myfullpath = os.path.dirname(os.path.realpath(__file__))
except NameError:
    myfullpath = os.path.abspath(os.path.curdir)

def convert_to_MB(value, unit):
    if unit == 'kB/s':
        return value/1000.
    if unit == 'MB/s':
        return value
    if unit == 'GB/s':
        return value*1000.

su = ['65536', '131072', '262144', '524288']
bs = ['64k', '128k', '256k', '512k']
cl = ['ds-001', 'ds-004', 'ds-517', 'ds-518']
cl_v = ['ds_001', 'ds_004', 'ds_517', 'ds_518']
su_v = ['64', '128', '256', '512']
ms = ['bs', 'g^', 'co', 'pr']
nj = ['50', '100', '150', '200']
sp = ['221', '222', '223', '224']

for i in range(len(cl)):
    plt.figure(i)
    for l in range(len(nj)):
        plt.subplot(sp[l])
        plt.tight_layout()
        for j in range(len(bs)):
            bw_plt = []
            for k in range(len(su)):
                fn = os.path.join(myfullpath, 'test_fio_%s_su_%s_bs_%s_nj_%s/fio_test.log' % (cl[i], su[k], bs[j], nj[l]))
                if os.path.isfile(fn):
                    f = open(fn, 'r')
                    lines = list(f)
                    value = '0'
                    unit = 'kB/s'
                    if "WRITE: bw=" in lines[-1]:
                        value = lines[-1].split("(")[1].split(")")[0][:-4]
                        unit = lines[-1].split("(")[1].split(")")[0][-4:]
                    bw_plt.append(convert_to_MB(float(value), unit))
            if len(bw_plt) == len(su_v):
                plt.plot(su_v, bw_plt, ms[j], label=('bs=%s' % bs[j]))

        plt.legend(loc='upper left', prop={'size': 6})
        plt.title('%s jobs' % nj[l])
        plt.ylabel('BandWidth (MB/s)')
        plt.xlabel('stripe unit (kiB)')
        plt.grid(True)

    plt.savefig('%s.pdf' % cl[i])
    plt.close(i)