Skip to content
Snippets Groups Projects
Commit 9ebfb3f2 authored by Peter Cai's avatar Peter Cai
Browse files

add instructions per request figures

parent fb006686
No related branches found
No related tags found
No related merge requests found
......@@ -15,26 +15,24 @@ def parse_perf_stat(s):
lines = s.split('\n')
llc_misses_u = int(list(filter(None, lines[5].split(' ')))[0].replace(',', ''))
llc_misses_k = int(list(filter(None, lines[6].split(' ')))[0].replace(',', ''))
return llc_misses_u + llc_misses_k
instructions_u = int(list(filter(None, lines[16].split(' ')))[0].replace(',', ''))
instructions_k = int(list(filter(None, lines[17].split(' ')))[0].replace(',', ''))
return (llc_misses_u + llc_misses_k, instructions_u + instructions_k)
def extract_conn_qps_exp(exp):
ret = ([10, 20, 40, 80, 160, 240, 320], [], [], [], [])
ret = ([10, 20, 40, 80, 160, 240, 320], [], [], [], [], [], [])
for f in ret[0]:
(qps_avg, qps_stddev) = util.extract_exp_avg_stddev(exp, 'c%d' % (f,), parse_memcached_output)
ret[1].append(qps_avg)
ret[2].append(qps_stddev)
#with open(os.path.join('../data/', exp, 'c%d.txt' % (f,)), 'r') as fi:
# qps = parse_memcached_output(fi.read())
# ret[1].append(qps)
#with open(os.path.join('../data/', exp, 'stat_c%d.txt' % (f,)), 'r') as fi:
# misses = parse_perf_stat(fi.read()) / (qps * 30)
# ret[2].append(misses)
(misses_avg, misses_stddev) = util.extract_exp_avg_stddev(exp, 'stat_c%d' % (f,), parse_perf_stat)
((misses_avg, instructions_avg), (misses_stddev, instructions_stddev)) = \
util.extract_exp_avg_stddev(exp, 'stat_c%d' % (f,), parse_perf_stat)
ret[3].append(misses_avg / (qps_avg * 30))
ret[4].append(misses_stddev / (qps_avg * 30))
ret[5].append(instructions_avg / (qps_avg * 30))
ret[6].append(instructions_stddev / (qps_avg * 30))
return ret
......@@ -71,7 +69,7 @@ def show_plot(threads, include_caladan = False):
# but we half the QPS
name = 'caladan'
data[name] = extract_conn_qps_exp('memcached_conn_scan.5.4.0-136-generic.caladan.t2')
data[name] = (data[name][0], [qps / 2 for qps in data[name][1]], [qps / 2 for qps in data[name][2]], data[name][3], data[name][4])
data[name] = (data[name][0], [qps / 2 for qps in data[name][1]], [qps / 2 for qps in data[name][2]], data[name][3], data[name][4], data[name][5], data[name][6])
for k in data:
plt.errorbar(data[k][0], data[k][1], yerr = data[k][2], capsize = 4, label = k, marker = markers[k], color = colors[k])
......@@ -112,6 +110,27 @@ def show_plot(threads, include_caladan = False):
else:
plt.savefig('../data/figs/memcached_conn_scan.llc_misses.t%d.png' % (threads,), dpi = 192)
if not include_caladan or threads == 1:
return
plt.cla()
plt.title('Memcached Instructions per Request, c160, %d threads' % (threads,))
plt.bar(range(len(data)), [data[k][5][4] for k in data], yerr = [data[k][6][4] for k in data], capsize=4)
plt.xticks(range(len(data)), data.keys())
plt.ylabel('Instructions per Request')
plt.legend()
if os.getenv('SAVE_FIGURE') != 'true':
plt.rcParams.update({'font.size': 16})
plt.show()
else:
if include_caladan:
plt.savefig('../data/figs/memcached_conn_scan.ipr.t%d.caladan.png' % (threads,), dpi = 192)
else:
plt.savefig('../data/figs/memcached_conn_scan.ipr.t%d.png' % (threads,), dpi = 192)
show_plot(1)
show_plot(1, True)
show_plot(8)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment