diff --git a/tools/perf/benchmarks b/tools/perf/benchmarks index 05adbe579a..acc53bb7b0 100755 --- a/tools/perf/benchmarks +++ b/tools/perf/benchmarks @@ -130,8 +130,9 @@ def Snapshot(filename): def Clean(): """Remove the out directory.""" def remove_out(): - if os.path.exists("out"): - shutil.rmtree("out") + out_dir = utils.get_out_dir() + if os.path.exists(out_dir): + shutil.rmtree(out_dir) return Change(label="Remove out", change=remove_out, undo=lambda: None) @@ -270,7 +271,7 @@ class Runner(): def _run_benchmark(self, lunch, benchmark, iteration): """Run a single benchmark.""" - benchmark_log_subdir = self._log_dir(lunch, benchmark, iteration) + benchmark_log_subdir = self._benchmark_log_dir(lunch, benchmark, iteration) benchmark_log_dir = self._options.LogDir().joinpath(benchmark_log_subdir) sys.stderr.write(f"STARTING BENCHMARK: {benchmark.id}\n") @@ -298,7 +299,7 @@ class Runner(): dist_one = self._options.DistOne() if dist_one: # If we're disting just one benchmark, save the logs and we can stop here. - self._dist(dist_one) + self._dist(utils.get_dist_dir()) else: # Postroll builds for i in range(benchmark.preroll): @@ -315,7 +316,7 @@ class Runner(): self._write_summary() sys.stderr.write(f"FINISHED BENCHMARK: {benchmark.id}\n") - def _log_dir(self, lunch, benchmark, iteration): + def _benchmark_log_dir(self, lunch, benchmark, iteration): """Construct the log directory fir a benchmark run.""" path = f"{lunch.Combine()}/{benchmark.id}" # Zero pad to the correct length for correct alpha sorting @@ -355,8 +356,8 @@ class Runner(): return after_ns - before_ns def _dist(self, dist_dir): - out_dir = pathlib.Path("out") - dest_dir = pathlib.Path(dist_dir).joinpath("logs") + out_dir = utils.get_out_dir() + dest_dir = dist_dir.joinpath("logs") os.makedirs(dest_dir, exist_ok=True) basenames = [ "build.trace.gz", diff --git a/tools/perf/utils.py b/tools/perf/utils.py index 08e393f6c9..934130dc86 100644 --- a/tools/perf/utils.py +++ b/tools/perf/utils.py @@ -28,3 +28,15 @@ def get_root(): d = d.parent if d == pathlib.Path("/"): return None + +def get_dist_dir(): + dist_dir = os.getenv("DIST_DIR") + if dist_dir: + return pathlib.Path(dist_dir).resolve() + return get_out_dir().joinpath("dist") + +def get_out_dir(): + out_dir = os.getenv("OUT_DIR") + if not out_dir: + out_dir = "out" + return pathlib.Path(out_dir).resolve()