From 30470c81dac7dfe8fc51f4c58fbae9b3dce4a516 Mon Sep 17 00:00:00 2001 From: Florian Fischer Date: Thu, 6 Sep 2018 01:34:31 +0200 Subject: add dj's workloads --- Makefile | 14 +- bench.py | 3 +- dj_trace.py | 154 +++++++++++++ trace_run.c | 750 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 918 insertions(+), 3 deletions(-) create mode 100644 dj_trace.py create mode 100644 trace_run.c diff --git a/Makefile b/Makefile index 6b2e859..5d838dc 100644 --- a/Makefile +++ b/Makefile @@ -28,9 +28,11 @@ BENCH_OBJECTS = $(notdir $(BENCH_CC_SOURCES:.cc=.o)) $(notdir $(BENCH_C_SOURCES: BENCH_OBJPRE = $(addprefix $(OBJDIR)/,$(BENCH_OBJECTS)) MAKEFILE_LIST = Makefile -BENCH_TARGETS = $(BENCH_OBJPRE:.o=) $(BENCH_OBJPRE:.o=-glibc-notc) +BENCH_TARGETS = $(BENCH_OBJPRE:.o=) $(OBJDIR)/trace_run -all: $(BENCH_TARGETS) $(OBJDIR)/chattymalloc.so $(OBJDIR)/print_status_on_exit.so +NOTC_TARGETS = $(BENCH_TARGETS:=-glibc-notc) + +all: $(BENCH_TARGETS) $(NOTC_TARGETS) $(OBJDIR)/chattymalloc.so $(OBJDIR)/print_status_on_exit.so $(OBJDIR)/print_status_on_exit.so: print_status_on_exit.c $(MAKEFILE_LIST) $(CC) -shared $(CFLAGS) -o $@ $< -ldl @@ -38,6 +40,14 @@ $(OBJDIR)/print_status_on_exit.so: print_status_on_exit.c $(MAKEFILE_LIST) $(OBJDIR)/chattymalloc.so: chattymalloc.c $(MAKEFILE_LIST) $(CC) -shared $(CFLAGS) -o $@ $< -ldl +$(OBJDIR)/trace_run: trace_run.c $(MAKEFILE_LIST) + $(CC) -pthread $(CFLAGS) -o $@ $< + +$(OBJDIR)/trace_run-glibc-notc: $(OBJDIR)/trace_run $(MAKEFILE_LIST) + cp $< $@ + patchelf --set-interpreter $(GLIBC_NOTC)/ld-linux-x86-64.so.2 $@ + patchelf --set-rpath $(GLIBC_NOTC) $@ + $(OBJDIR)/cache-thrash: $(OBJDIR)/cache-thrash.o $(CXX) -pthread -o $@ $^ diff --git a/bench.py b/bench.py index e877052..ee1c412 100755 --- a/bench.py +++ b/bench.py @@ -9,6 +9,7 @@ from falsesharing import falsesharing from loop import loop # from bench_conprod import conprod from mysql import mysql +from dj_trace import dj_trace parser = argparse.ArgumentParser(description="benchmark memory allocators") parser.add_argument("-s", "--save", help="save benchmark results to disk", action='store_true') @@ -21,7 +22,7 @@ parser.add_argument("-sd", "--summarydir", help="directory where all plots and t parser.add_argument("-a", "--analyse", help="collect allocation sizes", action='store_true') -benchmarks = [loop, mysql, falsesharing] +benchmarks = [loop, mysql, falsesharing, dj_trace] def main(): args = parser.parse_args() diff --git a/dj_trace.py b/dj_trace.py new file mode 100644 index 0000000..300e0a2 --- /dev/null +++ b/dj_trace.py @@ -0,0 +1,154 @@ +import matplotlib.pyplot as plt +import multiprocessing +import numpy as np +import os +from urllib.request import urlretrieve +import sys +import re +import shutil + +from benchmark import Benchmark + +comma_sep_number_re = "(?:\d*(?:,\d*)?)*" +rss_re = "(?P" + comma_sep_number_re + ")" +time_re = "(?P