Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Performance history canary #1209

Merged
merged 11 commits into from
Oct 21, 2024
Merged

Performance history canary #1209

merged 11 commits into from
Oct 21, 2024

Conversation

wks
Copy link
Collaborator

@wks wks commented Sep 25, 2024

This PR adds a "canary" build to the performance regression CI of OpenJDK. The "canary" is a chosen revision of mmtk-core and mmtk-openjdk that is tested alongside each merged PR. The performance of the "canary" should not change unless there is an environment change or there is a noise. Spotting a change in the "canary" performance can help us identify environment changes that are unintended or otherwise unnoticed, and also identify the noise level.

Currently, we choose a specific release version as the version of the "canary". Using a release version has the advantage of being easy to specify the exact revision of both the mmtk-core and the mmtk-openjdk repository. We may also switch to some methods of automatically select the canary version in the future.

There are other minor changes made.

  • We slightly change the directory structure. We create two directory, namely latest and canary. In each of the directories, we check out mmtk-core and mmtk-openjdk of the latest and the canary versions, respectively.
  • We use the ci-replace-mmtk-dep.py script to replace the revision of the mmtk-core dependency in mmtk-openjdk. As a result, we no longer need to use sed, and no longer need to copy the mmtk-core directory into mmtk-openjdk/repos.
  • We no longer set the RUSTUP_TOOLCHAIN environment variable because
    1. The latest and the canary version may not use the same toolchain, and,
    2. the right toolchain will be chosen when running the cargo command according to the rust-toolchain file in the directory.
  • The scripts in https://github.com/mmtk/ci-perf-kit are changed to take the canary into consideration, too.

@@ -145,7 +167,10 @@ jobs:
export RESULT_REPO_BRANCH=${{ env.RESULT_REPO_BRANCH }}
export RESULT_REPO_ACCESS_TOKEN=${{ secrets.CI_ACCESS_TOKEN }}
export FROM_DATE=2020-07-10
./ci-perf-kit/scripts/openjdk-history-run.sh ./mmtk-openjdk ./reports/${{ steps.branch.outputs.branch_name }}
./ci-perf-kit/scripts/openjdk-history-run.sh \
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It might be easier to implement if we do two separate runs, one for the commit, one for the canary version, and then plot them in two separate graphs. In that case, the code for plotting the original graph does not need big changes, and can be used to plot the canary graph.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OK I saw mmtk/ci-perf-kit#47. You are doing that in ci-perf-kit. That's fine.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@qinsoon The main concern is that ./ci-perf-kit/scripts/openjdk-history-run.sh also commits to the mmtk/ci-perf-result repo and generates the HTML. It is safer to use one single bash script to test both the newest version and the canary.

@wks wks force-pushed the feature/history-canary branch from e470cff to 8363b3b Compare September 26, 2024 03:42
wks added 8 commits October 14, 2024 17:33
This PR adds a "canary" build to the performance regression CI of
OpenJDK.  The "canary" is a chosen revision of mmtk-core and
mmtk-openjdk that is tested alongside each merged PR.  The performance
of the "canary" should not change unless there is an environment change.
Spotting a change in the "canary" performance can help us identify
environment changes that are unintended or otherwise unnoticed.

TODO: Add a script to select the latest release tag as the canary
instead of hard-coding a version.
The latest and the canary version may use different toolchain, and will
be selected automatically when compiling them.
Extract canary version to an environment variable.

Do not use secret when checking out ci-perf-kit because it is a public
repo now.

Add a name to the "branch" action.
@wks wks force-pushed the feature/history-canary branch from 8363b3b to 569e357 Compare October 18, 2024 08:19
@wks wks marked this pull request as ready for review October 21, 2024 01:49
qinsoon pushed a commit to mmtk/ci-perf-kit that referenced this pull request Oct 21, 2024
The canary will be run alongside the newest revision in regression test to identify unnoticed environment changes.

Related PR: mmtk/mmtk-core#1209
Copy link
Member

@qinsoon qinsoon left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I merged mmtk/ci-perf-kit#47 and tagged 0.8.1 for ci-perf-kit. Can you update the version for ci-perf-kit to 0.8.1?

.github/workflows/perf-regression-ci.yml Show resolved Hide resolved
@qinsoon
Copy link
Member

qinsoon commented Oct 21, 2024

I approved the PR. You can merge this PR and #1206 when you think they are ready.

@wks wks added this pull request to the merge queue Oct 21, 2024
Merged via the queue into mmtk:master with commit f032697 Oct 21, 2024
31 of 33 checks passed
@wks wks deleted the feature/history-canary branch October 21, 2024 06:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants