Skip to content

perf: switch saturation tests to static/1KB logs and reduce loadgen to SUT ratio to 2:1#2643

Draft
cijothomas wants to merge 2 commits intoopen-telemetry:mainfrom
cijothomas:cijothomas/saturation-static
Draft

perf: switch saturation tests to static/1KB logs and reduce loadgen to SUT ratio to 2:1#2643
cijothomas wants to merge 2 commits intoopen-telemetry:mainfrom
cijothomas:cijothomas/saturation-static

Conversation

@cijothomas
Copy link
Copy Markdown
Member

@cijothomas cijothomas commented Apr 13, 2026

Change Summary

  • Switch saturation tests to use static data source with 1KB log bodies (pre_generated strategy) for more realistic payload sizes
  • Reduce loadgen:engine core ratio from 3:1 to 2:1 across all saturation configs
  • Make data_source and log_body_size_bytes templatable in loadgen config
  • Existing non-saturation tests are unaffected (defaults unchanged)
  • Now that we use less cores for load-gen, we can run a 32 core test also, so added one for that.

How are these changes tested?

Validated locally on 16-core machine (4 runs each, 1/2/4 engine cores):

  • 2:1 ratio saturates engine to 96-100% CPU at 1-2 cores
  • 33% fewer loadgen cores needed
  • 3.75x higher data throughput (514 MB/s vs 137 MB/s at 2 cores)

Are there any user-facing changes?

No. Just internal perf tests.

After merge, I'll monitor how it fares in the perf test machine, and make tweaks in follow ups.

@cijothomas cijothomas requested a review from a team as a code owner April 13, 2026 16:36
@codecov
Copy link
Copy Markdown

codecov Bot commented Apr 13, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 82.22%. Comparing base (9b4b8dc) to head (008e9f8).
⚠️ Report is 70 commits behind head on main.

❌ Your project check has failed because the head coverage (82.22%) is below the target coverage (85.00%). You can increase the head coverage or adjust the target coverage.

❗ There is a different number of reports uploaded between BASE (9b4b8dc) and HEAD (008e9f8). Click for more details.

HEAD has 5 uploads less than BASE
Flag BASE (9b4b8dc) HEAD (008e9f8)
8 3
Additional details and impacted files
@@             Coverage Diff             @@
##             main    #2643       +/-   ##
===========================================
- Coverage   88.42%   82.22%    -6.21%     
===========================================
  Files         631      181      -450     
  Lines      232112    52749   -179363     
===========================================
- Hits       205243    43371   -161872     
+ Misses      26345     8854    -17491     
  Partials      524      524               
Components Coverage Δ
otap-dataflow ∅ <ø> (∅)
query_abstraction 80.61% <ø> (ø)
query_engine 90.72% <ø> (-0.03%) ⬇️
otel-arrow-go 52.45% <ø> (ø)
quiver ∅ <ø> (∅)
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

…atio to 2:1

- Switch saturation tests to use static data source with 1KB log bodies
  (pre_generated strategy) for more realistic payload sizes
- Reduce loadgen:engine core ratio from 3:1 to 2:1 across all saturation configs
- Make data_source and log_body_size_bytes templatable in loadgen config
- Existing non-saturation tests are unaffected (defaults unchanged)

Validated locally on 16-core machine (4 runs each, 1/2/4 engine cores):
- 2:1 ratio saturates engine to 96-100% CPU at 1-2 cores
- 33% fewer loadgen cores needed
- 3.75x higher data throughput (514 MB/s vs 137 MB/s at 2 cores)
@cijothomas cijothomas force-pushed the cijothomas/saturation-static branch from 399642f to 6354a14 Compare April 13, 2026 16:41
signals_per_second: null # Using null means loadgen don't self-cap the rate.
max_batch_size: {{max_batch_size}}
data_source: static
log_body_size_bytes: 1024
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Pleas check, I think these new saturation variables also need to be added to df-loadgen-steps-docker..yaml, otherwise config.yaml.j2 will keep rendering the old defaults.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Good catch. I am still hitting other bottlenecks, likely due to docker networking. Investigating them now. Marked PR as draft for now.

@cijothomas cijothomas marked this pull request as draft April 13, 2026 20:56
…late

The saturation template sets data_source=static and log_body_size_bytes=1024,
but these variables were not forwarded through the test steps template to the
loadgen config template. Add the passthrough so the loadgen actually uses
static/1KB logs as intended.
@github-actions
Copy link
Copy Markdown

This pull request has been marked as stale due to lack of recent activity. It will be closed in 30 days if no further activity occurs. If this PR is still relevant, please comment or push new commits to keep it active.

@github-actions github-actions Bot added stale Not actively pursued and removed stale Not actively pursued labels Apr 28, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: No status

Development

Successfully merging this pull request may close these issues.

2 participants