aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xbench.py11
-rwxr-xr-xmerge.py6
-rw-r--r--src/benchmark.py2
-rw-r--r--src/facter.py45
-rw-r--r--src/globalvars.py3
-rw-r--r--src/util.py25
-rwxr-xr-xsummarize.py5
7 files changed, 43 insertions, 54 deletions
diff --git a/bench.py b/bench.py
index fa16854..9f4a6c1 100755
--- a/bench.py
+++ b/bench.py
@@ -33,7 +33,7 @@ import src.globalvars
from src.util import find_cmd
from src.util import print_status, print_warn, print_error
from src.util import print_info, print_info2, print_debug
-from src.util import print_license_and_exit, print_version_and_exit
+from src.util import print_license_and_exit
def epilog():
@@ -46,7 +46,7 @@ def epilog():
else:
endtime = datetime.datetime.now().isoformat()
endtime = endtime[:endtime.rfind(':')]
- src.globalvars.facts["endtime"] = endtime
+ src.facter.FACTS["endtime"] = endtime
src.facter.store_facts(src.globalvars.resdir)
# remove a left over status file if some is present
@@ -116,7 +116,8 @@ def main():
print_license_and_exit()
if args.version:
- print_version_and_exit()
+ print(src.facter.allocbench_version())
+ exit(0)
atexit.register(epilog)
@@ -156,8 +157,8 @@ def main():
src.globalvars.resdir = os.path.join(args.resultdir)
else:
src.globalvars.resdir = os.path.join("results",
- src.globalvars.facts["hostname"],
- src.globalvars.facts["starttime"])
+ src.facter.FACTS["hostname"],
+ src.facter.FACTS["starttime"])
print_status("Writing results to:", src.globalvars.resdir)
os.makedirs(src.globalvars.resdir, exist_ok=True)
diff --git a/merge.py b/merge.py
index 4812c37..77fe73c 100755
--- a/merge.py
+++ b/merge.py
@@ -25,7 +25,8 @@ import os
import pickle
import sys
-from src.util import print_license_and_exit, print_version_and_exit
+import src.facter
+from src.util import print_license_and_exit
def load_file(filename):
if filename.endswith("json"):
@@ -41,7 +42,8 @@ def main():
print_license_and_exit()
if "--version" in sys.argv:
- print_version_and_exit()
+ print(src.facter.allocbench_version())
+ exit(0)
parser = argparse.ArgumentParser(description="Merge to allocbench results")
parser.add_argument("src", help="results which should be merged into dest", type=str)
diff --git a/src/benchmark.py b/src/benchmark.py
index bbb6d50..905a11f 100644
--- a/src/benchmark.py
+++ b/src/benchmark.py
@@ -734,7 +734,7 @@ class Benchmark:
print(comment_symbol, self.name, file=f)
print(file=f)
print(comment_symbol, "Common facts:", file=f)
- for k, v in src.globalvars.facts.items():
+ for k, v in src.facter.FACTS.items():
print(comment_symbol, k + ":", v, file=f)
print(file=f)
print(comment_symbol, "Benchmark facts:", file=f)
diff --git a/src/facter.py b/src/facter.py
index fe0b316..4c1c14d 100644
--- a/src/facter.py
+++ b/src/facter.py
@@ -26,31 +26,31 @@ import platform
import subprocess
import src.globalvars as gv
-from src.util import print_error, print_info
+from src.util import print_error, print_info, run_cmd
+FACTS = {}
def collect_facts():
- """Collect facts ad store them in src.globalvars.facts"""
+ """Collect general facts about the benchmark environment"""
# Populate src.globalvars.facts on import
_uname = platform.uname()
- gv.facts["hostname"] = _uname.node
- gv.facts["system"] = _uname.system
- gv.facts["kernel"] = _uname.release
- gv.facts["arch"] = _uname.machine
- gv.facts["cpus"] = multiprocessing.cpu_count()
- gv.facts["LD_PRELOAD"] = os.environ.get("LD_PRELOAD", None)
+ FACTS["hostname"] = _uname.node
+ FACTS["system"] = _uname.system
+ FACTS["kernel"] = _uname.release
+ FACTS["arch"] = _uname.machine
+ FACTS["cpus"] = multiprocessing.cpu_count()
+ FACTS["LD_PRELOAD"] = os.environ.get("LD_PRELOAD", None)
with open(os.path.join(gv.builddir, "ccinfo"), "r") as ccinfo:
- gv.facts["cc"] = ccinfo.readlines()[-1][:-1]
+ FACTS["cc"] = ccinfo.readlines()[-1][:-1]
- gv.facts["allocbench"] = subprocess.run(["git", "rev-parse", "master"],
- stdout=subprocess.PIPE,
- universal_newlines=True).stdout
+ # get commit info from git
+ allocbench_version()
starttime = datetime.datetime.now().isoformat()
# strip seconds from string
starttime = starttime[:starttime.rfind(':')]
- gv.facts["starttime"] = starttime
+ FACTS["starttime"] = starttime
def store_facts(path=None):
@@ -64,7 +64,7 @@ def store_facts(path=None):
print_info(f"Saving facts to: {filename}")
with open(filename, "w") as f:
- json.dump(gv.facts, f)
+ json.dump(FACTS, f)
def load_facts(path=None):
@@ -80,18 +80,31 @@ def load_facts(path=None):
if os.path.exists(filename + ".json"):
filename += ".json"
with open(filename, "r") as f:
- gv.facts = json.load(f)
+ FACTS = json.load(f)
elif os.path.exists(filename + ".save"):
import pickle
filename += ".save"
with open(filename, "rb") as f:
- gv.facts = pickle.load(f)
+ FACTS = pickle.load(f)
else:
raise FileNotFoundError(errno.ENOENT, os.strerror(errno.ENOENT),
filename)
print_info(f"Loading facts from: {filename}")
+def allocbench_version():
+ "Store and return allocbench version string."""
+ if "allocbench" in FACTS:
+ return FACTS["allocbench"]
+
+ commit = run_cmd(["git", "rev-parse", "HEAD"], capture=True).stdout[:-1]
+
+ proc = run_cmd(["git", "status", "--porcelain"], capture=True)
+ dirty = "-dirty" if proc.stdout != "" else ""
+
+ FACTS["allocbench"] = f"{commit}{dirty}"
+ return FACTS["allocbench"]
+
# Copied from pip.
# https://github.com/pypa/pip/blob/master/src/pip/_internal/utils/glibc.py
diff --git a/src/globalvars.py b/src/globalvars.py
index c1ec6b0..bcb722b 100644
--- a/src/globalvars.py
+++ b/src/globalvars.py
@@ -17,7 +17,6 @@
"""Global variables for allocbench
-facts: Dict holding facts about the current benchmark run
verbosity: Verbosity level -1: quiet, 0: status, 1: info, 2: stdout of subcommands, 3: debug info
allocators: Dict holding the allocators to compare
benchmarks: List of available benchmarks
@@ -35,8 +34,6 @@ import inspect
import os
-facts = {}
-
verbosity = 0
allocators = {}
diff --git a/src/util.py b/src/util.py
index 618eaf8..c5074b6 100644
--- a/src/util.py
+++ b/src/util.py
@@ -169,31 +169,6 @@ def print_license_and_exit():
exit(0)
-def print_version_and_exit():
- """Print current commit info before exit"""
- proc = subprocess.run(["git", "rev-parse", "HEAD"],
- universal_newlines=True,
- stdout=subprocess.PIPE)
-
- if proc.returncode != 0:
- print_error("git rev-parse failed")
- exit(1)
- commit = proc.stdout[:-1]
-
- proc = subprocess.run(["git", "status", "--porcelain"],
- universal_newlines=True,
- stdout=subprocess.PIPE)
-
- if proc.returncode != 0:
- print_error("git status --porcelain failed")
- exit(1)
-
- dirty = "-dirty" if proc.stdout != "" else ""
-
- print(f"{commit}{dirty}")
- exit(0)
-
-
def sha1sum(filename):
"""Return sha1sum of a file"""
sha1 = hashlib.sha1()
diff --git a/summarize.py b/summarize.py
index 6681137..d974fb2 100755
--- a/summarize.py
+++ b/summarize.py
@@ -27,7 +27,7 @@ import sys
import src.facter
import src.globalvars
from src.util import print_status, print_debug, print_error
-from src.util import print_license_and_exit, print_version_and_exit
+from src.util import print_license_and_exit
def specific_summary(bench, sum_dir, allocators):
@@ -95,7 +95,8 @@ def main():
print_license_and_exit()
if "--version" in sys.argv:
- print_version_and_exit()
+ print(src.facter.allocbench_version())
+ exit(0)
parser = argparse.ArgumentParser(description="Summarize allocbench results in allocator sets")
parser.add_argument("results", help="path to results", type=str)