Skip to content
Snippets Groups Projects
memcached_conn_scan.py 1.19 KiB
Newer Older
import os

def parse_memcached_output(s):
    lines = s.split('\n')
    qps = int(float(lines[6].split(' ')[3]))
    return qps

def parse_perf_stat(s, qps):
    lines = s.split('\n')
    load_misses = 0
    for line in lines:
        if line.startswith('#'):
            continue
        split = line.strip().split()
        if len(split) <= 1:
            continue
        if int(float(split[0])) != 25:
            continue
        if split[2] == 'LLC-load-misses':
            load_misses += int(split[1].replace(',', ''))
    return load_misses / qps / 5

def extract_conn_qps_exp(exp):
    ret = ([10, 20, 40, 60, 80, 100], [], [], [], [], [], [])

    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)
        (misses_avg, misses_stddev) = \
            util.extract_exp_avg_stddev(exp, 'stat_c%d' % (f,), parse_perf_stat, qps_avg)
        ret[3].append(misses_avg)
        ret[4].append(misses_stddev)
def collect_data(experiments):
    ret = dict()

    for exp in experiments:
        ret[exp] = extract_conn_qps_exp(exp)