Repository navigation
Add Westermo node_exporter metrics benchmark - #10214
joseph-isaacs wants to merge 5 commits into
Conversation
3fc54ab to
6f30a08
Compare
Merging this PR will regress 4 benchmarks
|
| Mode | Benchmark | BASE |
HEAD |
Efficiency | |
|---|---|---|---|---|---|
| ❌ | WallTime | mul_u64_nonnull_neon |
28.8 µs | 39.5 µs | -27.18% |
| ❌ | WallTime | mul_i64_nonnull_neon |
32.7 µs | 38.8 µs | -15.88% |
| ❌ | WallTime | multiply_shapes_neon[(32768, PerRowPerRow)] |
32.6 µs | 38.5 µs | -15.32% |
| ❌ | WallTime | dict_canonicalize_gt_u8_neon[1000000] |
492 µs | 547.8 µs | -10.19% |
| ⚡ | Simulation | once[dict] |
1,118.5 µs | 492.2 µs | ×2.3 |
| ⚡ | Simulation | repeated[dict] |
784.8 µs | 521.6 µs | +50.47% |
Tip
Investigate this regression by commenting @codspeedbot fix this regression on this PR, or directly use the CodSpeed MCP with your agent.
Comparing ji/westermo-bench (c38bf58) with develop (6135e5e)2
Footnotes
-
503 benchmarks were skipped, so the baseline results were used instead. If they were deleted from the codebase, click here and archive them to remove them from the performance reports. ↩
-
No successful run was found on
develop(2cc04c4) during the generation of this report, so 6135e5e was used instead as the comparison base. There might be some changes unrelated to this pull request in this report. ↩
|
There is no fix to port. I'm leaving the check as is; it can be acknowledged in CodSpeed. Generated by Claude Code |
9d5c97c to
f5417fb
Compare
Add a `westermo` vx-bench suite over the Westermo test system performance data set (CC BY 4.0): real Prometheus node_exporter scrapes from 19 servers every 30 seconds for a month. The harness downloads the CSVs pinned to an upstream commit and converts them to Prometheus layout, one row per sample with a labels struct, sorted by series then time. The 15 queries are PromQL expressions translated to SQL, covering label matchers including regex, aggregation by label at a step, vector matching, newest-point queries, and the label and series metadata APIs. The suite runs on DataFusion only and is not added to the CI matrix. Signed-off-by: Claude <noreply@anthropic.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JXCBFkSfZNsuNNRowQfwdQ Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk>
Store `ts` as int64 milliseconds, the type Prometheus uses for sample timestamps, so time bounds are integer literals and step buckets are `ts - ts % step`. Rewrite the newest-point query as a join on each series' max timestamp. Every query now runs unchanged on DataFusion and DuckDB, so drop the DataFusion-only engine restriction. Signed-off-by: Claude <noreply@anthropic.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JXCBFkSfZNsuNNRowQfwdQ Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk>
Add a CI catalog entry that schedules Westermo in the pr-full preset only, on DataFusion and DuckDB over Parquet and Vortex, and document it. Signed-off-by: Claude <noreply@anthropic.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JXCBFkSfZNsuNNRowQfwdQ Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk>
Signed-off-by: Claude <noreply@anthropic.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JXCBFkSfZNsuNNRowQfwdQ Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk>
Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk>
b4c33cf to
c38bf58
Compare
Summary
Builds on #10213, now merged into
develop. This is the first of two PRs that add benchmarks for Prometheus-style metrics data. It adds awestermovx-bench suite over real node_exporter data, which runs in CI only underaction/bench-sql-extended. The next PR addslo2, which runs real PromQL queries.The data is the Westermo test system performance data set, licensed CC BY 4.0. It is node_exporter scrapes from 19 servers every 30 seconds for a month, pinned to upstream commit
47e0ccdc, giving 434 series and about 37.5 million samples. The 15 queries are PromQL-shaped expressions written for this suite, each translated to SQL with the PromQL in a comment above it. They are not taken from a real workload; thelo2PR covers that.Changes
vortex-bench/src/westermo/downloads the 19 CSVs and converts them to Prometheus layout. The parser rejects both missing and extra CSV values, including trailing commas, with regression cases for row width:labelsstruct (__name__,instance,job), an int64 millisecondtsand a float64value;vortex-bench/sql/westermo.sqlholds the queries andwestermo.mddocuments the suite. The queries cover:ts - ts % step, and regexes are anchored.pr-fullpreset only, on DataFusion and DuckDB over Parquet and Vortex. It does not run ondevelop,pr,pr-compact,pr-allornightly. The matrix test anddocs/developer-guide/benchmarking.mdare updated to match.Local results on a 4-core cloud VM, 5 iterations per query, with files in the page cache:
Validation before the October 5 rebase:
uv run --project bench-orchestrator --with pytest pytest bench-orchestrator/tests/test_matrix.py: 13 passed.uvx ruff format --checkanduvx ruff checkonbench-orchestrator: clean.vx-bench matrix pr-fulllistswestermo; the other presets do not.datafusion-bench,duckdb-benchanddata-genbuilt inrelease_debugwith no warnings, andvx-bench run westermo -e datafusion,duckdb -f parquet,vortex -i 5completed all 60 runs.Current revision:
developafter Split SQL PR benchmarks into bench-sql and bench-sql-extended #10213 merged, removing the parent PR commits from this diff.The old head's only failed check was CodSpeed Performance Analysis. The preceding revision passed that gate, and the intervening commit only formatted
westermo/benchmark.rs. The report also warned of different runtime environments for wall-time measurements. This appears unrelated to the Westermo changes; the updated branch will receive fresh CI results.