Skip to content

Commit b0b2c58

Browse files
authored
Introduce epoch, collect statistics based on epoch, restyle plots (#46)
* Plot the start of each epoch as a vertical line. The color of the line (green/red) shows if there is regression for the epoch * Only plot min/max data point for the latest epoch. * For all the data points, render it as red/green/black to show if it has regresssion/improvement from the best point in the same epoch. * No longer show hover info for moving average and standard deviation * Always consider standard deviation when checking regression. * Allow notes/epochs to include a start time, in addition to a start date * Shrink the size of each plot to roughly 500px * 1200px
1 parent c491483 commit b0b2c58

5 files changed

Lines changed: 476 additions & 165 deletions

File tree

configs/jikesrvm-plot.yml

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,20 @@ plans:
88
baseline: []
99
notes:
1010
- date: "20230116"
11+
time: "0000"
1112
note: "Move to Ubuntu 22.04"
12-
- date: "20231015"
13+
- date: "20231017"
14+
time: "0000"
1315
note: "Speculative RAS Overflow mitigation on Zen1/Zen2"
14-
- date: "20231102"
16+
- date: "20231103"
17+
time: "0800"
1518
note: "Move to running-ng"
1619
- date: "20240403"
20+
time: "0000"
1721
note: "Move to Rust 1.77.0"
22+
- date: "20240802"
23+
time: "0000"
24+
note: "Microcode update for Zenbleed"
1825
- date: "20240903"
26+
time: "0000"
1927
note: "Move to Linux Kernel 6.8.0"

configs/openjdk-plot.yml

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,20 @@ plans:
1616
baseline: ['jdk-g1', 'jdk-zgc']
1717
notes:
1818
- date: "20230116"
19+
time: "0000"
1920
note: "Move to Ubuntu 22.04"
20-
- date: "20231015"
21+
- date: "20231017"
22+
time: "0000"
2123
note: "Speculative RAS Overflow mitigation on Zen1/Zen2"
22-
- date: "20231102"
24+
- date: "20231103"
25+
time: "0800"
2326
note: "Move to running-ng. Use -Xcomp. Use image build."
2427
- date: "20240403"
28+
time: "0000"
2529
note: "Move to Rust 1.77.0"
30+
- date: "20240802"
31+
time: "0000"
32+
note: "Microcode update for Zenbleed"
2633
- date: "20240903"
34+
time: "0000"
2735
note: "Move to Linux Kernel 6.8.0"

scripts/history_report.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@
7373
print("Plan: %s" % plan)
7474
print("Last run: %s" % last_run)
7575
print("Benchmarks: %s" % benchmarks)
76-
print(logs)
76+
# print(logs)
7777

7878
# figure out the baseline and get the result for the baseline
7979
plan_config = parse.get_config_for_plan(config, plan)
@@ -83,8 +83,10 @@
8383

8484
baseline = plot.calculate_baseline(baseline_results, baseline_builds, "execution_times")
8585
pp.pprint(baseline)
86-
86+
87+
build_info = prefix
88+
8789
# plot
88-
fig = plot.plot_history(runs, plan, benchmarks, from_date, to_date, "execution_times", baseline, config['notes'].copy())
90+
fig = plot.plot_history(build_info, runs, plan, benchmarks, from_date, to_date, "execution_times", baseline, config['notes'].copy())
8991
path = os.path.join(output_dir, "%s_%s_history.html" % (prefix, plan))
9092
fig.write_html(path)

scripts/parse.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -94,11 +94,14 @@ def parse_run_date(run_id):
9494
return datetime(int(matcher['year']), int(matcher['month']), int(matcher['day']), int(matcher['hour']), int(matcher['minute']), int(matcher['second']))
9595

9696
# Given a note date, return the date object
97-
def parse_note_date(note_date):
97+
def parse_note_date(note_date, note_time = None):
9898
from datetime import datetime
99-
matcher = re.match("(?P<year>\d{4})(?P<month>\d{2})(?P<day>\d{2})", note_date)
100-
if matcher:
101-
return datetime(int(matcher['year']), int(matcher['month']), int(matcher['day']))
99+
date_matcher = re.match(r"(?P<year>\d{4})(?P<month>\d{2})(?P<day>\d{2})", note_date)
100+
if note_time is None:
101+
note_time = "0000"
102+
time_matcher = re.match(r"(?P<hour>\d{2})(?P<minute>\d{2})", note_time)
103+
if date_matcher and time_matcher:
104+
return datetime(int(date_matcher['year']), int(date_matcher['month']), int(date_matcher['day']), int(time_matcher['hour']), int(time_matcher['minute']))
102105

103106
# Given a yaml file path, return the file
104107
def parse_yaml(path):

0 commit comments

Comments
 (0)