In [50]:
import glob
import pandas as pd
%matplotlib inline
In [65]:
def fill_pushers(df, DATA):
pushers = glob.glob('%s/push_*.txt'%DATA)
for fname in pushers:
row=1
push_ind = int(fname.split('/')[2].strip().split('_')[1])
#print push_ind
f = open(fname,'r')
times = f.readlines()
start_time = float(times[0])
#print times[0]
cnt=1
name = fname.split('/')[2].strip().split('.')[0].strip()
for val in times[1:]:
cur_time = float(val)
cnt+=1
if (cnt%100000 == 0)and(row<=5):
#print '%s: Throughput: %s'%(nme, float(cnt/(cur_time-start_time)))
df.loc[row*100000]['Push_proc_%s'%push_ind] = float(cnt/(cur_time-start_time))
row+=1
return df
In [122]:
def fill_poppers(df, DATA):
poppers = glob.glob('%s/pop_*.txt'%DATA)
for fname in poppers:
row=1
pop_ind = int(fname.split('/')[2].strip().split('_')[1])
#print pop_ind
f = open(fname,'r')
times = f.readlines()
start_time = float(times[0])
#print times[0]
cnt=1
name = fname.split('/')[2].strip().split('.')[0].strip()
for val in times[1:]:
cur_time = float(val)
cnt+=1
if (cnt%100000 == 0)and(row<=5):
#print '%s: Throughput: %s'%(nme, float(cnt/(cur_time-start_time)))
df.loc[row*100000]['Pop_proc_%s'%pop_ind] = float(cnt/(cur_time-start_time))
row+=1
#print df
return df
In [124]:
def get_throughput_plot(num_push_procs, num_pop_procs, num_queues):
push_cols = ['Push_proc_%s'%i for i in range(num_push_procs)]
pop_cols = ['Pop_proc_%s'%i for i in range(num_pop_procs)]
cols = push_cols + pop_cols
DATA = './push_%s_pop_%s_q_%s'%(num_push_procs, num_pop_procs, num_queues)
df = pd.DataFrame(columns=cols, index=[100000,200000,300000,400000,500000])
df = fill_pushers(df, DATA)
df = fill_poppers(df, DATA)
maxx = 1.25* df.max().max()
ax = df.plot(kind='line', y=cols, use_index=True, ylim=(0,maxx),
title='Throughput with %s push proc(s), %s pop proc(s) and %s queue(s)'%(num_push_procs,
num_pop_procs,
num_queues)
)
ax.set_ylabel('Task per second')
ax.set_xlabel('Total number of tasks')
patches, labels = ax.get_legend_handles_labels()
ax.legend(patches, labels, loc='lower left',bbox_to_anchor=(1, 0.5))
In [126]:
num_push_procs_list = [1,2,3,4,5]
num_pop_procs = 1
num_queues = 1
for num_push_procs in num_push_procs_list:
get_throughput_plot(num_push_procs, num_pop_procs, num_queues)
In [125]:
num_push_procs = 1
num_pop_procs_list = [1,2,3,4,5]
num_queues = 1
for num_pop_procs in num_pop_procs_list:
get_throughput_plot(num_push_procs, num_pop_procs, num_queues)
In [128]:
num_queues_list = [1,2,3]
for num_queues in num_queues_list:
num_push_procs= num_queues
num_pop_procs= num_queues
get_throughput_plot(num_push_procs, num_pop_procs, num_queues)
In [ ]: