Skip to content

#302 - Generate benchmark configurations from profiles - #307

Open
dleshchev wants to merge 9 commits into
mainfrom
feat/302-config-generator
Open

dleshchev wants to merge 9 commits into
mainfrom
feat/302-config-generator

Conversation

@dleshchev

@dleshchev dleshchev commented Sep 14, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

Generate reproducible benchmark configurations from explicit profiles instead of maintaining repetitive Spark, cross-host, multi-queue, and transform YAML copies. The existing PR and discussion are preserved, while hardware-free C++ validation lives in the stacked foundation in #316.

Related issue

Closes #302.

Changes

  • Add deterministic RawPairSpec and SocketPairSpec profiles, rendering with constrained overrides, and the installed gen_daqiri_config.py entry point.
  • Generate raw DPDK/ibverbs loopback and cross-host roles, Spark multi-queue cells, VLAN/VXLAN/GRE/NVGRE transforms, and UDP/TCP/RoCE client/server roles.
  • Preserve benchmark semantics, including explicit raw buffer capacity, configurable tx_eth_src, and the Spark payload sweep's fixed 8064-byte buffers.
  • Drive both Spark benchmark harnesses from profiles and remove 17 repetitive generated YAML files plus their two superseded mutation helpers.
  • Retain the canonical teaching configs and specialized HDS, reorder, quantize, latency, pacing, dynamic-flow/resource, and application configs.
  • Keep focused portable tests on Python rendering, CLI/profile constraints, and generated structure; send the broad valid matrix through daqiri_config_validate from #315 - Add hardware-free configuration validation #316.
  • Lead readers through the checked-in examples first, then present the generator as the repeatable path for system-specific, multi-queue, transform, and cross-host variants.
  • Describe application-startup validation as the normal path and the standalone validator as an optional hardware-free preflight for CI, batch checks, and development without target hardware.

The normalized deletion audit mapped every removed YAML to its generated replacement. Intentional differences are canonical formatting, explicit role separation, derived queue/flow lists, standardized generated identifiers, explicit transform engines/matches, role-appropriate socket payloads, one-way RoCE roles, and fixed 8064-byte Spark buffers. No unintentional semantic differences remained.

Validation

  • Privileged project-container Release configure/build with DAQIRI_BUILD_EXAMPLES=OFF, DAQIRI_ENGINE="dpdk ibverbs", and GPU/hugepage access: passed.
  • Installed validator and generator entry points: passed.
  • scripts/check_pr.sh: 46 portable tests, all 27 retained example/application configurations, 1 foundation compatibility case, 14 expected-invalid foundation parser/common-semantic regressions, 23 valid generated configurations, strict MkDocs build, HTML links, and documentation-reference checks passed.
  • Generated output determinism across independent Python processes: passed.
  • Shell syntax, Python compilation, clang-format --dry-run --Werror, DCO trailers, and git diff --check: passed.

The generated RoCE role checks emit nonfatal warnings for memory regions retained for the opposite role; validation still succeeds. This does not change benchmark behavior.

Dependencies or follow-up

Depends on PR #316. This PR is temporarily based on feat/315-config-validator so its review diff contains only generator/configuration migration work. After #316 lands, this branch can be rebased onto main without adding an independent parser, validator implementation, or JSON Schema.

@dleshchev
dleshchev force-pushed the feat/302-config-generator branch from 8be7412 to 8fb9c2e Compare September 14, 2026 22:01
@dleshchev
dleshchev changed the base branch from feat/303-pytest-foundation to main September 14, 2026 22:02
@dleshchev
dleshchev force-pushed the feat/302-config-generator branch 2 times, most recently from e154078 to 4c4d1a2 Compare September 15, 2026 22:48
@dleshchev
dleshchev marked this pull request as ready for review September 16, 2026 21:44
@greptile-apps

greptile-apps Bot commented Sep 16, 2026 •

Copy link
Copy Markdown
Contributor

RetriggerConfidence Score: 5/5

[Medium risk] Replaces hand-written benchmark configs with a generator script.

The PR appears safe to merge based on the reviewed changes.

Summary

The PR replaces repetitive benchmark YAMLs with deterministic raw and socket profiles, migrates the Spark runners to generated configurations, and adds validation and documentation. Subsequent changes add raw-ibverbs destination-MAC resolution and reorganize setup guidance.

Reviews (5) · Last reviewed commit: "#302 - Align cross-host generator guide ..."

Comment thread scripts/gen_daqiri_config.py Outdated
@dleshchev
dleshchev marked this pull request as draft September 17, 2026 16:46
@dleshchev dleshchev changed the title #302 - Generate configurations from a shared schema #302 - Generate configurations with runtime-parser validation Sep 17, 2026
@dleshchev
dleshchev force-pushed the feat/302-config-generator branch from c30bf63 to 88f1d96 Compare September 21, 2026 22:26
@dleshchev dleshchev changed the title #302 - Generate configurations with runtime-parser validation #302 - Generate benchmark configurations from profiles Sep 21, 2026
@dleshchev
dleshchev changed the base branch from main to feat/315-config-validator September 21, 2026 22:26
@dleshchev
dleshchev force-pushed the feat/302-config-generator branch 2 times, most recently from 11a73b1 to 2c2ca4c Compare September 22, 2026 16:51
@dleshchev
dleshchev force-pushed the feat/315-config-validator branch from 9109f0a to 6f73e7c Compare September 22, 2026 17:35
@dleshchev
dleshchev force-pushed the feat/302-config-generator branch from 2c2ca4c to 6062b09 Compare September 22, 2026 17:35
@dleshchev
dleshchev force-pushed the feat/315-config-validator branch from 6f73e7c to a4ed917 Compare September 22, 2026 18:31
@dleshchev
dleshchev force-pushed the feat/302-config-generator branch 3 times, most recently from 5244fce to 24de8b1 Compare September 28, 2026 22:43
@dleshchev
dleshchev changed the base branch from feat/315-config-validator to main September 28, 2026 22:43
@dleshchev
dleshchev marked this pull request as ready for review October 1, 2026 16:51
@dleshchev
dleshchev force-pushed the feat/302-config-generator branch from 53b9158 to aad9bd3 Compare October 1, 2026 18:15
@dleshchev
dleshchev force-pushed the feat/302-config-generator branch from aad9bd3 to f8e0b46 Compare October 2, 2026 15:18

This branch has not been deployed

No deployments
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.

[FEA] Generate example and benchmark configs deterministically

1 participant