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

Refactor memcached_conn_scan to use the new calculation for avg and stddev

parent 120c9e7d
No related branches found
No related tags found
No related merge requests found
import os
import matplotlib.pyplot as plt
from config import markers, colors
import util
experiments = [f for f in os.listdir('../data')
if f.startswith('memcached_conn_scan') and len(os.listdir(os.path.join('../data', f))) > 0]
......@@ -17,16 +18,23 @@ def parse_perf_stat(s):
return llc_misses_u + llc_misses_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]:
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)
(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)
ret[3].append(misses_avg / (qps_avg * 30))
ret[4].append(misses_stddev / (qps_avg * 30))
return ret
......@@ -63,10 +71,10 @@ 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]], data[name][2])
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])
for k in data:
plt.plot(data[k][0], data[k][1], label = k, marker = markers[k], color = colors[k])
plt.errorbar(data[k][0], data[k][1], yerr = data[k][2], capsize = 4, label = k, marker = markers[k], color = colors[k])
plt.ticklabel_format(axis = 'both', style = 'sci', scilimits = (0, 4))
plt.xlabel('Connections (per client w/ 7 * 8 clients)')
......@@ -89,7 +97,7 @@ def show_plot(threads, include_caladan = False):
plt.title('Memcached connections vs LLC misses, %d threads' % (threads,))
for k in data:
plt.plot(data[k][0], data[k][2], label = k, marker = markers[k], color = colors[k])
plt.errorbar(data[k][0], data[k][3], yerr=data[k][4], capsize = 4, label = k, marker = markers[k], color = colors[k])
plt.xlabel('Connections (per client w/ 7 * 8 clients)')
plt.ylabel('LLC misses per request')
......
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