Skip to content

Commit ecacf83

Browse files
committed
run_benchmarks.py script and folder
Signed-off-by: adir <adir@il.ibm.com>
1 parent ad25616 commit ecacf83

File tree

1 file changed

+46
-13
lines changed

1 file changed

+46
-13
lines changed

cmd/benchmarking/run_benchmarks.py

Lines changed: 46 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,24 +4,52 @@
44
import shutil
55
import subprocess
66
import re
7+
import argparse
78
from datetime import datetime
89

9-
I=1
10-
TOKENSDK_ROOT = "../../"
10+
parser = argparse.ArgumentParser(description="run_benchmark.py script")
11+
parser.add_argument(
12+
"--count", # use --count from the command line
13+
type=int, # expect an integer
14+
default=10, # default if not provided
15+
help="Number of repetitions (default: 10)"
16+
)
17+
parser.add_argument(
18+
"--timeout", # use --timeout from the command line
19+
type=str, # expect an integer
20+
default="0", # default if not provided
21+
help="timeout for the run (default: 0, i.e. not timeout)"
22+
)
23+
parser.add_argument(
24+
"--benchName", # use --benchName from the command line
25+
type=str, # expect a string
26+
default="", # default if not provided
27+
help="benchmark name to run (default is to run all benchmarks)"
28+
)
29+
30+
args = parser.parse_args()
31+
count = args.count
32+
timeout = args.timeout
33+
benchName = args.benchName
34+
35+
TOKENSDK_ROOT = os.environ.get("TOKENSDK_ROOT", "../../")
1136
output_folder_path = ""
1237
v1_benchmarks_folder = os.path.join(TOKENSDK_ROOT, "token/core/zkatdlog/nogh/v1")
1338
transfer_benchmarks_folder = os.path.join(TOKENSDK_ROOT, "token/core/zkatdlog/nogh/v1/transfer")
1439
issuer_benchmarks_folder = os.path.join(TOKENSDK_ROOT, "token/core/zkatdlog/nogh/v1/issue")
1540
validator_benchmarks_folder = os.path.join(TOKENSDK_ROOT, "token/core/zkatdlog/nogh/v1/validator")
1641

42+
I=1
43+
1744
def run_and_parse_non_parallel_metrics(benchName, params, folder=transfer_benchmarks_folder) -> dict:
1845
global I
1946
global output_folder_path
47+
global count, timeout
2048

2149
if folder == "":
2250
folder = transfer_benchmarks_folder
2351

24-
cmd = f"go test {folder} -run='^$' -bench={benchName} -v -benchmem -count=10 -cpu=1 -timeout 0 {params} | tee bench.txt; benchstat bench.txt"
52+
cmd = f"go test {folder} -run='^$' -bench={benchName} -v -benchmem -count={count} -cpu=1 -timeout {timeout} {params} | tee bench.txt; benchstat bench.txt"
2553
print(f"{I} Running: {cmd}")
2654
I = I+1
2755
result = subprocess.run(
@@ -120,9 +148,10 @@ def run_and_parse_parallel_metrics(benchName, params, folder=transfer_benchmarks
120148
folder = transfer_benchmarks_folder
121149

122150
global I
151+
global timeout
123152
global output_folder_path
124153

125-
cmd = f"go test {folder} -test.run={benchName} -test.v -test.timeout 0 -bits='32' -num_inputs='2' -num_outputs='2' -workers='NumCPU' -duration='10s' -setup_samples=128 {params}"
154+
cmd = f"go test {folder} -test.run={benchName} -test.v -test.timeout {timeout} -bits='32' -num_inputs='2' -num_outputs='2' -workers='NumCPU' -duration='10s' -setup_samples=128 {params}"
126155
print(f"{I} Running: {cmd}")
127156
I = I+1
128157

@@ -228,17 +257,21 @@ def append_dict_as_row(filename: str, data: dict):
228257
print("\n*******************************************************")
229258
print("Running non-parallel tests")
230259

231-
for test, params, benchType in non_parallel_tests:
232-
results.update(run_and_parse_non_parallel_metrics(test, params, benchType))
260+
for testName, params, benchType in non_parallel_tests:
261+
if (benchName == "") or (benchName == testName):
262+
results.update(run_and_parse_non_parallel_metrics(testName, params, benchType))
233263

234264
print("\n*******************************************************")
235265
print("Running parallel tests")
236-
for test, params, folder in parallel_tests:
237-
results.update(run_and_parse_parallel_metrics(test, params, folder))
266+
for testName, params, folder in parallel_tests:
267+
if (benchName == "") or (benchName == testName):
268+
results.update(run_and_parse_parallel_metrics(testName, params, folder))
238269

239270
# add new row to benchmark_results.csv and copy it to the output folder
240-
append_dict_as_row("benchmark_results.csv", results)
241-
src = os.path.join(".", "benchmark_results.csv")
242-
dst = os.path.join(output_folder_path, "benchmark_results.csv")
243-
if os.path.exists(src) and not os.path.exists(dst):
244-
shutil.copy(src, dst)
271+
# but not if we just run a single bench as a test
272+
if benchName == "": # we ran all the benchmarks
273+
append_dict_as_row("benchmark_results.csv", results)
274+
src = os.path.join(".", "benchmark_results.csv")
275+
dst = os.path.join(output_folder_path, "benchmark_results.csv")
276+
if os.path.exists(src) and not os.path.exists(dst):
277+
shutil.copy(src, dst)

0 commit comments

Comments
 (0)