Skip to content

Conversation

soonum
Copy link
Contributor

@soonum soonum commented Sep 24, 2025

After running performances regression benchmarks, a performance changes checking is executed. It will fetch results data with an external tool then it will look for anomaly in changes. Finally it will produce a report as an issue comment with any anomaly display in a Markdown array. A folded section of the report message contains all the results from the benchmark.

Note that a fully custom benchmark triggered from an issue comment would not generate a report. In addition HPU performance regression benchmark is not supported yet.

closes: please link all relevant issues

PR content/description

Check-list:

  • Tests for the changes have been added (for bug fixes / features)
  • Docs have been added / updated (for bug fixes / features)
  • Relevant issues are marked as resolved/closed, related issues are linked in the description
  • Check for breaking changes (including serialization changes) and add them to commit message following the conventional commit specification

This change is Reviewable

@soonum soonum self-assigned this Sep 24, 2025
@soonum soonum requested a review from IceTDrinker as a code owner September 24, 2025 09:49
@soonum soonum added the ci label Sep 24, 2025
@cla-bot cla-bot bot added the cla-signed label Sep 24, 2025
@soonum soonum added bench-perfs-cpu Trigger regression benchmark workflow for CPU backend. bench-perfs-gpu Trigger regression benchmark workflow for GPU backend. and removed bench-perfs-gpu Trigger regression benchmark workflow for GPU backend. labels Sep 24, 2025
@soonum soonum force-pushed the dt/ci/check_perf_regression branch from e54afab to 8fb8911 Compare October 6, 2025 14:07
@soonum soonum added bench-perfs-cpu Trigger regression benchmark workflow for CPU backend. bench-perfs-gpu Trigger regression benchmark workflow for GPU backend. and removed bench-perfs-cpu Trigger regression benchmark workflow for CPU backend. bench-perfs-gpu Trigger regression benchmark workflow for GPU backend. labels Oct 7, 2025
@soonum soonum force-pushed the dt/ci/check_perf_regression branch from 8fb8911 to 01f34e3 Compare October 8, 2025 09:25
@soonum soonum added bench-perfs-gpu Trigger regression benchmark workflow for GPU backend. and removed bench-perfs-cpu Trigger regression benchmark workflow for CPU backend. bench-perfs-gpu Trigger regression benchmark workflow for GPU backend. labels Oct 8, 2025
@soonum soonum requested a review from tmontaigu October 8, 2025 11:59
@soonum soonum force-pushed the dt/ci/check_perf_regression branch from 01f34e3 to 3003061 Compare October 8, 2025 12:25
@soonum soonum added bench-perfs-gpu Trigger regression benchmark workflow for GPU backend. and removed bench-perfs-gpu Trigger regression benchmark workflow for GPU backend. labels Oct 8, 2025
Copy link

github-actions bot commented Oct 8, 2025

No performance regression detected. 🎉
Configuration

  • backend: gpu
  • regression-profile: default
View All Benchmarks
Operation Current (ms) Baseline (ms) Baseline Stddev (ms) Change (%) Status
mul 152 ms 156 ms 3.42 ms -2.33% ➖ no changes
dex::swap_claim::no_cmux 902 ms 934 ms 16.1 ms -3.46% ✅ minor improvement

Copy link
Member

@IceTDrinker IceTDrinker left a comment

Choose a reason for hiding this comment

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

@IceTDrinker reviewed 4 of 7 files at r1, 13 of 13 files at r2, all commit messages.
Reviewable status: all files reviewed, 8 unresolved discussions (waiting on @tmontaigu)


ci/perf_regression.py line 524 at r2 (raw file):

            # Between +/- MINOR_CHANGE_SCALE_FACTOR * Std_dev we consider there is no change
            self.change_type = PerfChange.NoChange
        if self.head_branch_value < self.baseline_mean - minor_threshold:

elif ?


ci/perf_regression.py line 548 at r2 (raw file):

def convert_value_to_readable_text(value: float, max_digits=3):

value_nanos


.github/workflows/benchmark_perf_regression.yml line 51 at r2 (raw file):

      issues: write
      # Needed to react to a comment in a pull-request
      pull-requests: write

do you need both ? when you say react it's to comment/answer ?


.github/workflows/benchmark_perf_regression.yml line 73 at r2 (raw file):

      - name: Install Python requirements
        run: |
          python3 -m pip install -r ci/perf_regression_requirements.txt

maybe even creat a dedicated subdir ?


.github/workflows/benchmark_perf_regression.yml line 307 at r2 (raw file):

        uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
        with:
          fetch-depth: 0

to be checked elsewhere : we may not need the full depth


.github/workflows/benchmark_perf_regression.yml line 326 at r2 (raw file):

          --hardware "${HARDWARE_NAME}" \
          --branch "${REF_NAME}" \
          --time-span 60

--time-span-days ? to make it clear those are days


.github/workflows/benchmark_perf_regression.yml line 351 at r2 (raw file):

    name: benchmark_perf_regression/comment-on-failure
    runs-on: ubuntu-latest
    if: ${{ failure() && github.event_name == 'issue_comment' }}

you probably need a "needs" directive to be able to check the previous status


ci/data_extractor/src/connector.py line 62 at r2 (raw file):

    def _override_with_env(self):
        self.host = os.environ.get("DATABASE_HOST", self.host)

maybe make the env var a bit more specific to your code

@soonum soonum added bench-perfs-cpu Trigger regression benchmark workflow for CPU backend. and removed bench-perfs-cpu Trigger regression benchmark workflow for CPU backend. bench-perfs-gpu Trigger regression benchmark workflow for GPU backend. labels Oct 9, 2025
@soonum soonum force-pushed the dt/ci/check_perf_regression branch from 3003061 to eefd1ce Compare October 9, 2025 15:24
Copy link

github-actions bot commented Oct 9, 2025

No performance regression detected. 🎉
Configuration

  • backend: cpu
  • regression-profile: default
View All Benchmarks
Operation Current (ms) Baseline (ms) Baseline Stddev (ms) Change (%) Status
add_parallelized 106 ms 107 ms 1.29 ms -0.68% ➖ no changes
dex::swap_claim::no_cmux 2.26 s 2.33 s 52.2 ms -2.99% ➖ no changes
erc20::transfer::whitepaper 283 ms 281 ms 12.7 ms +0.75% ➖ no changes

@soonum soonum added the bench-perfs-cpu Trigger regression benchmark workflow for CPU backend. label Oct 10, 2025
@soonum soonum force-pushed the dt/ci/check_perf_regression branch from eefd1ce to cafe49a Compare October 10, 2025 08:23
@soonum soonum added bench-perfs-cpu Trigger regression benchmark workflow for CPU backend. and removed bench-perfs-cpu Trigger regression benchmark workflow for CPU backend. labels Oct 10, 2025
@soonum soonum force-pushed the dt/ci/check_perf_regression branch from f6f0768 to 0e755a0 Compare October 10, 2025 08:49
@soonum soonum added bench-perfs-cpu Trigger regression benchmark workflow for CPU backend. and removed bench-perfs-cpu Trigger regression benchmark workflow for CPU backend. labels Oct 10, 2025
@soonum soonum force-pushed the dt/ci/check_perf_regression branch from 0e755a0 to 27fe6d8 Compare October 10, 2025 09:03
@soonum soonum added the bench-perfs-cpu Trigger regression benchmark workflow for CPU backend. label Oct 10, 2025
@soonum soonum force-pushed the dt/ci/check_perf_regression branch from 27fe6d8 to ffc55b0 Compare October 10, 2025 09:32
@soonum soonum added bench-perfs-cpu Trigger regression benchmark workflow for CPU backend. and removed bench-perfs-cpu Trigger regression benchmark workflow for CPU backend. labels Oct 10, 2025
@soonum soonum force-pushed the dt/ci/check_perf_regression branch from ffc55b0 to 1a232a2 Compare October 10, 2025 11:27
@soonum soonum added bench-perfs-cpu Trigger regression benchmark workflow for CPU backend. and removed bench-perfs-cpu Trigger regression benchmark workflow for CPU backend. labels Oct 10, 2025
Copy link

No performance regression detected. 🎉
Configuration

  • backend: cpu
  • regression-profile: default
View All Benchmarks
Operation Current (ms) Baseline (ms) Baseline Stddev (ms) Change (%) Status
add_parallelized 105 ms 107 ms 1.29 ms -2.13% ➖ no changes
dex::swap_claim::no_cmux 2.42 s 2.33 s 52.2 ms +3.94% ➖ no changes
erc20::transfer::whitepaper 295 ms 281 ms 12.7 ms +4.8% ➖ no changes

@soonum soonum force-pushed the dt/ci/check_perf_regression branch from 1a232a2 to 129977c Compare October 13, 2025 09:30
@soonum soonum requested a review from IceTDrinker October 13, 2025 09:30
@soonum soonum force-pushed the dt/ci/check_perf_regression branch 3 times, most recently from 3dd2a9e to 3bc6052 Compare October 15, 2025 15:39
Copy link
Member

@IceTDrinker IceTDrinker left a comment

Choose a reason for hiding this comment

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

One tiny thing

@IceTDrinker reviewed 3 of 8 files at r3, 3 of 4 files at r4, 2 of 2 files at r6, 2 of 2 files at r7, all commit messages.
Reviewable status: all files reviewed, 2 unresolved discussions (waiting on @tmontaigu)


ci/data_extractor/src/benchmark_specs.py line 100 at r7 (raw file):

            case "ks_pbs":
                return CoreCryptoOperation.KeyswitchPBS
            case "multi_bit_ks_pbs" | "multi_bit_deterministic_ks_pbs":

to be checked with a newer PR that gets rid of it


.github/workflows/benchmark_perf_regression.yml line 49 at r7 (raw file):

    permissions:
#      # Needed to react to benchmark command in issue comment
#      issues: write

comment to remove then ?

After running performances regression benchmarks, a performance
changes checking is executed. It will fetch results data with an
external tool then it will look for anomaly in changes.
Finally it will produce a report as an issue comment with any
anomaly display in a Markdown array. A folded section of the
report message contains all the results from the benchmark.

Note that a fully custom benchmark triggered from an issue comment
would not generate a report. In addition HPU performance
regression benchmark is not supported yet.
@soonum soonum force-pushed the dt/ci/check_perf_regression branch from 3bc6052 to 0976b1a Compare October 17, 2025 09:49
Copy link
Contributor Author

@soonum soonum left a comment

Choose a reason for hiding this comment

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

Reviewable status: all files reviewed, 1 unresolved discussion (waiting on @IceTDrinker and @tmontaigu)


.github/workflows/benchmark_perf_regression.yml line 51 at r2 (raw file):

Previously, IceTDrinker (Arthur Meyre) wrote…

do you need both ? when you say react it's to comment/answer ?

I removed the pull-requests permission since it's just to react to an existing issue comment.
To test that, this code needs to be in main. We'll see how it unfolds.


ci/data_extractor/src/benchmark_specs.py line 100 at r7 (raw file):

Previously, IceTDrinker (Arthur Meyre) wrote…

to be checked with a newer PR that gets rid of it

The PR you're referring to is not concerned by this change.
This is intended to cover all cases from data_extractor point of view.

@soonum soonum requested a review from IceTDrinker October 17, 2025 09:51
Copy link
Member

@IceTDrinker IceTDrinker left a comment

Choose a reason for hiding this comment

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

Huge achievement, thanks a lot !!!

@IceTDrinker reviewed 1 of 1 files at r8, all commit messages.
Reviewable status: :shipit: complete! all files reviewed, all discussions resolved (waiting on @IceTDrinker and @tmontaigu)

@IceTDrinker
Copy link
Member

go for mege!

@soonum soonum merged commit 206553e into main Oct 17, 2025
145 checks passed
@soonum soonum deleted the dt/ci/check_perf_regression branch October 17, 2025 13:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

approved bench-perfs-cpu Trigger regression benchmark workflow for CPU backend. ci cla-signed

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants