chore: benchmark ClickHouse exporter on dedicated runner#3512
chore: benchmark ClickHouse exporter on dedicated runner#3512cijothomas wants to merge 4 commits into
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #3512 +/- ##
==========================================
+ Coverage 86.23% 86.51% +0.27%
==========================================
Files 766 782 +16
Lines 301992 313105 +11113
==========================================
+ Hits 260437 270883 +10446
- Misses 41031 41698 +667
Partials 524 524
🚀 New features to boost your workflow:
|
| variables: | ||
| engine_config_template: test_suites/integration/templates/configs/engine/clickhouse/otap-clickhouse-logs.yaml.j2 | ||
| loadgen_exporter_type: otap | ||
| max_batch_size: 512 |
There was a problem hiding this comment.
This is probably way too low with sync inserts & 100k lrps
There was a problem hiding this comment.
thanks. Will tune it to get highest perf/cost balance.
There was a problem hiding this comment.
Updated in d0c9785: the suite now runs two isolated 60-second scenarios, a 50k logs/sec synchronous correctness baseline and a 100k logs/sec async-insert throughput case. Each uses a separate ClickHouse database and report window. The labeled dedicated run will provide the authoritative comparison.
Dedicated runner result: first synchronous baseline
The pipeline is feasible and stable, but this is not yet a true 100k offered-load benchmark. The next iteration should either lower the synchronous fixed rate to an achievable baseline or enable |
Dedicated runner result: sync vs. acknowledged async inserts
Both scenarios used isolated databases and 60-second observation windows. The synchronous baseline now holds its requested rate. The async result is reproducibly slower locally and on the dedicated host. The exporter enables both |
ClickHouse-backed loss reporting addedCommit e0f1a7c now calculates loss using the same observation-window semantics as the existing fake-backend suites:
Local validation:
The final count is intentionally not used in the window loss percentage because it also includes warm-up and shutdown-adjacent rows. |
Ugh yes - sorry I didn't realize that the suggestion to add that wait=1 as the default got accepted after it was pointed out that this was a bad idea for the engine's architecture. |
Pull request dashboard statusStatus last refreshed: 2026-07-22 19:57:40 UTC.
This automated status or its linked feedback items may be incorrect. If something looks wrong, please report it with the result you expected. |
Loss metric correctionCommit 101d096 supersedes the observation-boundary loss calculation from e0f1a7c. Boundary deltas can go slightly negative when ClickHouse flushes pre-window backlog during the observation window. The corrected metric compares two exact totals after both pipelines drain:
The validation CSV is deleted before startup, so failed runs cannot report stale counts. Local exact-total validation:
The new dedicated run will provide authoritative host values. |
Summary
df_enginewith the experimentalclickhouse-exporterfeatureValidation
python3 tools/sanitycheck.pydf_engineDocker buildIteration notes
The suite requests 100k logs/sec with synchronous inserts for a deterministic correctness baseline. The local workstation sustained roughly 54k-63k ClickHouse rows/sec; the labeled dedicated run will establish behavior on the benchmark host.
No changelog entry: this is performance-test infrastructure only.