Skip to content

Commit 3bf3652

Browse files
committed
Add version flag for get-performance-model-table.py.
1 parent 1042da8 commit 3bf3652

File tree

2 files changed

+24
-28
lines changed

2 files changed

+24
-28
lines changed

.github/workflows/perf.yml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,8 +149,10 @@ jobs:
149149
path: artifacts
150150

151151
- name: Produce performance report
152-
run: python e2etest/get-performance-model-table.py ${{ needs.get-testing-version.outputs.testing_version }}
152+
run: python e2etest/get-performance-model-table.py -v ${{ needs.get-testing-version.outputs.testing_version }}
153153

154+
# Uses github-action-benchmark to update historic benchmark data
155+
# Temporarily using forked action in order to pass in commit SHA
154156
- name: Store benchmark result
155157
uses: jefchien/[email protected]
156158
with:

e2etest/get-performance-model-table.py

Lines changed: 21 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
import os
2-
import json
3-
import sys
4-
from pathlib import Path
1+
import argparse
52
import jinja2
3+
import json
4+
import os
65
import string
6+
import sys
77

88
# Schema: performance_models[data_mode][tps] = [model]
99
performance_models = {}
@@ -58,42 +58,36 @@ def flatten_performance_models():
5858
x["data_mode"], x["data_rate"]))
5959
return models_list
6060

61+
def get_benchmark_entry(model, data_mode, data_rate, value_field, unit, subgroup):
62+
benchmark_entry = {}
63+
benchmark_entry["name"] = model["testcase"]
64+
benchmark_entry["value"] = model[value_field]
65+
benchmark_entry["unit"] = unit
66+
benchmark_entry["extra"] = f"{data_mode} (TPS: {data_rate}) - {subgroup}"
67+
return benchmark_entry
68+
6169
def get_benchmark_data():
6270
"""
63-
Splits models by test
71+
Splits models by testcase and groups by data mode, data rate, and field type.
6472
"""
6573
benchmark_data = []
6674

6775
for data_mode, data_rates in performance_models.items():
6876
for data_rate, models in data_rates.items():
6977
for model in models:
70-
benchmark_cpu = {}
71-
benchmark_cpu["name"] = model["testcase"]
72-
benchmark_cpu["value"] = model["avgCpu"]
73-
benchmark_cpu["unit"] = "%"
74-
benchmark_cpu["extra"] = f"{data_mode} (TPS: {data_rate}) - Average CPU Usage"
75-
76-
benchmark_mem = {}
77-
benchmark_mem["name"] = model["testcase"]
78-
benchmark_mem["value"] = model["avgMem"]
79-
benchmark_mem["unit"] = "MB"
80-
benchmark_mem["extra"] = f"{data_mode} (TPS: {data_rate}) - Average Memory Usage"
81-
82-
benchmark_data.append(benchmark_cpu)
83-
benchmark_data.append(benchmark_mem)
78+
benchmark_data.append(get_benchmark_entry(model, data_mode, data_rate, "avgCpu", "%", "Average CPU Usage"))
79+
benchmark_data.append(get_benchmark_entry(model, data_mode, data_rate, "avgMem", "MB", "Average Memory Usage"))
8480

8581
return benchmark_data
8682

8783
if __name__ == "__main__":
88-
try:
89-
aoc_version = sys.argv[1].rstrip()
90-
except IndexError:
91-
print(f"Usage: {sys.argv[0]} <version>")
92-
sys.exit(1)
84+
parser = argparse.ArgumentParser("Generate performance-report.md and performance-data.json from artifacts")
85+
parser.add_argument('-v', '--version', help="version to tag the report with", required=True)
86+
args = parser.parse_args()
87+
aoc_version = args.version
9388

94-
from jinja2 import Environment, PackageLoader, select_autoescape
9589
templateLoader = jinja2.FileSystemLoader(searchpath="e2etest/templates/")
96-
env = Environment(autoescape=select_autoescape(['html', 'xml', 'tpl', 'yaml', 'yml']), loader=templateLoader)
90+
env = jinja2.Environment(autoescape=jinja2.select_autoescape(['html', 'xml', 'tpl', 'yaml', 'yml']), loader=templateLoader)
9791

9892
# get performance models from artifacts
9993
artifacts_path = "artifacts/"
@@ -127,4 +121,4 @@ def get_benchmark_data():
127121

128122
# write benchmark-data.json
129123
with open("performance-data.json", "w+") as f:
130-
f.write(json.dumps(get_benchmark_data()))
124+
json.dump(get_benchmark_data(), f, indent=4)

0 commit comments

Comments
 (0)