Skip to content

feat(xtest): benchmark payloads up to 1 GiB, with per-dispatch budget - #622

Draft
dmihalcik-virtru wants to merge 1 commit into
DSPX-4372-02-karm-corefrom
DSPX-4372-03-payload-sizes
Draft

dmihalcik-virtru wants to merge 1 commit into
DSPX-4372-02-karm-corefrom
DSPX-4372-03-payload-sizes

Conversation

@dmihalcik-virtru

Copy link
Copy Markdown
Member

Split out of #583. Stacked on #621.

At the default sizes (1 KiB, 1 MiB, 32 MiB) this harness cannot fail a build on throughput: on a 4-core runner a go encrypt costs ~450ms of fixed startup against ~72ms that scales with the payload, so the 1.15x gate is wider than the whole payload-dependent part. --bench-payloads lets a manual dispatch ask a throughput question the nightly cannot afford to ask every night.

  • perf/cells.py: Payload/parse_payload/parse_payloads replace the fixed 3-entry PAYLOADS tuple, so a spec like 1KiB,1GiB builds an arbitrary cell matrix. CONTROL_PAYLOAD is a fixed 1 MiB literal rather than PAYLOADS[1] -- same value, but no longer coupled to whatever the selection happens to be, since the control's CI width is the run's noise floor and it must not move with --bench-payloads.
  • fixtures/bench.py: --bench-payloads wiring, chunked payload generation (a 1 GiB file is written in 8 MiB chunks rather than held in memory), and an up-front disk-space check.
  • xtest.yml: bench-payloads input, validated against the real parser before the platform spins up.

Built on the K-arm core (#621): the disk estimate and the default budget both scale with arm count.

At the default sizes (1 KiB, 1 MiB, 32 MiB) this harness cannot fail a build
on throughput: on a 4-core runner a go encrypt costs ~450ms of fixed startup
against ~72ms that scales with the payload, so the 1.15x gate is wider than
the whole payload-dependent part. --bench-payloads lets a manual dispatch ask
a throughput question the nightly cannot afford to ask every night.

- perf/cells.py: Payload/parse_payload/parse_payloads replace the fixed
  3-entry PAYLOADS tuple, so a spec like '1KiB,1GiB' builds an arbitrary cell
  matrix. CONTROL_PAYLOAD is a fixed 1 MiB literal rather than PAYLOADS[1] --
  same value, but no longer coupled to whatever the selection happens to be,
  since the control's CI width is the run's noise floor and it must not move
  with --bench-payloads.
- fixtures/bench.py: --bench-payloads wiring, chunked payload generation (a
  1 GiB file is written in 8 MiB chunks rather than held in memory), and an
  up-front disk-space check -- a run holds roughly twice the payload total
  plus one live output per arm of the largest, and running out mid-benchmark
  otherwise surfaces as a non-zero exit that reads as 'this build is broken'.
- xtest.yml: bench-payloads input, validated against the real parser before
  the platform spins up rather than re-implementing the grammar in bash.

Built on the K-arm core: the disk estimate and the default budget both scale
with arm count, since a K-arm cell holds K live outputs instead of 2.
@coderabbitai

coderabbitai Bot commented Sep 23, 2026

Copy link
Copy Markdown

Important

Draft PR not reviewed

Draft PRs are not automatically reviewed by default.

  • Trigger a manual review

To automatically review draft PRs, update your CodeRabbit configuration:

reviews:
  auto_review:
    drafts: true

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@sonarqubecloud

Copy link
Copy Markdown

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.

1 participant