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 14 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.
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