Skip to content

Add nightly OpenSSL command performance regression testing#411

Open
aidangarske wants to merge 1 commit into
wolfSSL:masterfrom
aidangarske:add-perf-regression-testing
Open

Add nightly OpenSSL command performance regression testing#411
aidangarske wants to merge 1 commit into
wolfSSL:masterfrom
aidangarske:add-perf-regression-testing

Conversation

@aidangarske

@aidangarske aidangarske commented Jun 24, 2026

Copy link
Copy Markdown
Member

Description

Add command performance testing and regression validation

@aidangarske aidangarske added ci:perf PR OSP toggle: run perf and removed ci:perf PR OSP toggle: run perf labels Jun 24, 2026
@aidangarske aidangarske force-pushed the add-perf-regression-testing branch from ec5b0c0 to 94456a0 Compare June 24, 2026 02:19
@aidangarske aidangarske added the ci:perf PR OSP toggle: run perf label Jun 24, 2026
@aidangarske aidangarske marked this pull request as ready for review June 24, 2026 02:32
@aidangarske aidangarske force-pushed the add-perf-regression-testing branch from 94456a0 to a3501ea Compare June 24, 2026 16:57
@aidangarske aidangarske added ci:perf PR OSP toggle: run perf and removed ci:perf PR OSP toggle: run perf labels Jun 24, 2026
@aidangarske aidangarske requested a review from ColtonWilley June 24, 2026 17:43
above 1.0.

To keep the nightly from going red on a single noisy measurement, a
command that fails the gate is measured up to `PERF_CONFIRM` times total

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Do we need this second layer of confirmation beyond the "N runs" above -- why not just increase the N? Maybe this showed up in your testing?

use). This job guards the per-invocation cost of that path so a repeat of
the DH-CAST init blow-up gets caught automatically.

**This is an overhead regression tripwire, not a crypto throughput

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

If this is testing the overhead, and not the runtime speed, maybe consider a different name. "Overhead timing regression test"? "Load time regression test"?

default provider serves **only as a per-run baseline to cancel
runner-speed variance**, and the `overhead` factor (wolfProvider ÷
baseline) is checked against a committed budget
(`scripts/perf_test/perf-baseline.{nonfips,fips}.json`). The init probes

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Any guidance on when to update the baseline?

baseline) is checked against a committed budget
(`scripts/perf_test/perf-baseline.{nonfips,fips}.json`). The init probes
are gated on absolute ms. The job fails only when a command exceeds its
budget (× tolerance) — i.e. when overhead *regresses*, never for being

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Is there a case where we would want to tighten the baseline? Would significant improvement be a sign to re-baseline? Not sure if we'd want to flag an error if the PR is significantly better

timed under both the OpenSSL default provider and wolfProvider; the
default provider serves **only as a per-run baseline to cancel
runner-speed variance**, and the `overhead` factor (wolfProvider ÷
baseline) is checked against a committed budget

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

The variance in machine/OS add extra variables between runs iiuc. Would it make sense to compare against master in a single job instead of a hardcoded baseline?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci:perf PR OSP toggle: run perf

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants