-
-
Notifications
You must be signed in to change notification settings - Fork 77
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
Ability to Interleave Performance Runs for Baseline & Test Builds #24
Comments
Jenkins Parent Pipeline should print information in this format. This format would be expected by TRSS for parsing the results. Snippets from Jenkins Parent Pipeline
|
- Closes adoptium#24 - PerfNext launcher will now interleave test and baseline builds when launched together - Added a 5 second delay to ensure the jenkins job number appears correctly Signed-off-by: Awsaf Arefin Sakif <awsaf.sakif@ibm.com>
- Closes adoptium#24 - PerfNext launcher will now interleave test and baseline builds when launched together - Added a 5 second delay to ensure the jenkins job number appears correctly - Added Jenkins token for authentication - Minor indentation fixes Signed-off-by: Awsaf Arefin Sakif <awsaf.sakif@ibm.com>
- Closes adoptium#24 - PerfNext launcher will now interleave test and baseline builds when launched together - Added a 5 second delay to ensure the jenkins job number appears correctly - Added Jenkins token for authentication - Minor indentation fixes Signed-off-by: Awsaf Arefin Sakif <awsaf.sakif@ibm.com>
- Closes adoptium#24 - PerfNext launcher will now interleave test and baseline builds when launched together - Added a 5 second delay to ensure the jenkins job number appears correctly - Added Jenkins token for authentication - Minor indentation fixes Signed-off-by: Awsaf Arefin Sakif <awsaf.sakif@ibm.com>
I've posted the outputs and screenshots to show how interleave runs would work. If you notice the GrandParent build below, it launches parent(s) builds. Each parent would launch children builds. You will notice that Parent build 1 launches child 1 and 3 while Parent build 2 launches child 2 and 4, showing that both baseline and test builds are being interleaved. Output of PerfNext-GrandParentBuild 53
Output of PerfNext-ParentBuild 234
Output of PerfNext-ParentBuild 235
Output of PerfNext-ChildBuild 572
Screenshots with Perf Compare |
- Closes adoptium#24 - PerfNext launcher will now interleave test and baseline builds when launched together - Added a 5 second delay to ensure the jenkins job number appears correctly - Added Jenkins token for authentication - Minor indentation fixes Signed-off-by: Awsaf Arefin Sakif <awsaf.sakif@ibm.com>
Background About Interleaved Runs
While doing the benchmarking comparison between different builds, it's crucial to interleave runs for both baseline and test builds in order to get the most consistent and reliable results.
For benchmarking, we always launch several iterations of a benchmark with a specific build to get performance results for various metrics such as throughput and startup time. These relative numbers are not very useful since they could change when benchmark is run on another platform, when the machine state isn't identical or when the configs are slightly different. Hence, we always use a baseline to gauge the performance of a newer test build.
There are various machine factors that could affect the numbers between multiple iterations, even though they might be running with the same configs. Hence, interleaving runs helps in avoiding those issues and makes sure that the same factor would affect both baseline and test build runs. In order to keep this issue short, I won't get into the benefits and scenarios of interleaved runs.
If T = Test Build; B = Baseline Build, # = Iteration
Interleaving Run Pattern:
Do alternate iteration of each baseline and test build in a ping-pong fashion.
T1, B1, T2, B2, T3, B3
Non-interleaved Run Pattern:
Do all iterations for one build and then do all iterations for another.
T1, T2, T3, B1, B2, B3
Related Issue for Openjdk-tests Framework
adoptium/aqa-tests#850
Background About PerfNext
Currently, PerfNext does not have the capability of launching interleaved runs. It uses non-interleaved runs and launches all iterations under one Jenkins job by using a loop for iterations as shown below:
Background About TRS
Once the Jenkins build is done, TestResultSummaryService (TRSS) stores the raw Jenkins build output, which has the output for all benchmark iterations for a build, in MongoDB. Then, TRSS parses the data (i.e.
/openjdk-test-tools/TestResultSummaryService/parsers/BenchmarkParser.js
) for each iteration by using regex for the string:echo "********** START OF NEW TESTCI BENCHMARK JOB **********"
, which is printed in Jenkins output for each iteration, and stores the results in another collection in MongoDB. These parsed numbers for various benchmark metrics are used to calculate various important numbers such as average, confidence interval, min, max and median for each build, enabling test-result-summary-client (TRSC) to display performance charts and Perf Compare to compare 2 builds.Proposed Features for PerfNext:
For example, PerfNext -> Jenkins Parent Pipeline -> Launches Child Parent Pipelines for test build with the sequence:
T1, T2, T3
For example, PerfNext -> Jenkins Parent Pipeline -> Launches Child Parent Pipelines with the sequence:
T1, B1, T2, B2, T3, B3
Proposed Features for TRS:
Assigned Contributors
Members from my team, Awsaf (@pinicman) and Sophia (@sophiaxu0424) will be starting to work on the PerfNext and TRS features respectively.
The text was updated successfully, but these errors were encountered: