aboutsummaryrefslogtreecommitdiff
path: root/src/benchmarks/dj_trace.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/benchmarks/dj_trace.py')
-rw-r--r--src/benchmarks/dj_trace.py33
1 files changed, 8 insertions, 25 deletions
diff --git a/src/benchmarks/dj_trace.py b/src/benchmarks/dj_trace.py
index f475223..5cb1b99 100644
--- a/src/benchmarks/dj_trace.py
+++ b/src/benchmarks/dj_trace.py
@@ -25,8 +25,9 @@ from urllib.request import urlretrieve
import matplotlib.pyplot as plt
import numpy as np
+from src.artifact import ArchiveArtifact
from src.benchmark import Benchmark
-from src.util import print_status, download_reporthook
+from src.util import print_status
COMMA_SEP_NUMBER_RE = "(?:\\d*(?:,\\d*)?)*"
@@ -57,7 +58,7 @@ class BenchmarkDJTrace(Benchmark):
def __init__(self):
name = "dj_trace"
- self.cmd = "trace_run{binary_suffix} dj_workloads/{workload}.wl"
+ self.cmd = "trace_run{binary_suffix} {build_dir}/dj_workloads/{workload}.wl"
self.measure_cmd = ""
self.args = {"workload": ["389-ds-2",
@@ -106,29 +107,11 @@ class BenchmarkDJTrace(Benchmark):
def prepare(self):
super().prepare()
- workload_dir = "dj_workloads"
- workload_archive = f"{workload_dir}.tar.xz"
-
- if not os.path.isdir(workload_dir):
- if not os.path.isfile(workload_archive):
- choice = input("Download missing workloads (367M / ~6GB unpacked) [Y/n] ")
- if not choice in ['', 'Y', 'y']:
- return
-
- url = f"https://www4.cs.fau.de/~flow/allocbench/{workload_archive}"
- urlretrieve(url, workload_archive, download_reporthook)
- sys.stderr.write("\n")
-
- # Extract workloads
- proc = subprocess.run(["tar", "xf", workload_archive], stdout=subprocess.PIPE,
- stderr=subprocess.PIPE, universal_newlines=True)
-
- # delete archive
- if proc.returncode == 0:
- os.remove(workload_archive)
-
- for workload in os.listdir(workload_dir):
- self.args["workload"].append(os.path.splitext(workload)[0])
+ workloads = ArchiveArtifact("dj_workloads",
+ "https://www4.cs.fau.de/~flow/allocbench/dj_workloads.tar.xz",
+ "tar",
+ "c9bc499eeba8023bca28a755fffbaf9200a335ad")
+ workloads.provide(self.build_dir)
@staticmethod
def process_output(result, stdout, stderr, allocator, perm):