From de084ae0e7adeafbcc8fcac30b9bf3fdf10481ff Mon Sep 17 00:00:00 2001 From: Linas Medziunas Date: Tue, 18 Nov 2025 12:06:32 +0200 Subject: [PATCH] [PromQL] Improve BenchmarkJoinQuery Signed-off-by: Linas Medziunas --- promql/bench_test.go | 34 +++++++++++++++++++++++----------- 1 file changed, 23 insertions(+), 11 deletions(-) diff --git a/promql/bench_test.go b/promql/bench_test.go index 37c8311305..a15f19e17e 100644 --- a/promql/bench_test.go +++ b/promql/bench_test.go @@ -393,40 +393,44 @@ func BenchmarkJoinQuery(b *testing.B) { } engine := promqltest.NewTestEngineWithOpts(b, opts) - const interval = 10000 // 10s interval. + const ( + interval = 10000 // 10s interval. + steps = 5000 + numInstances = 1000 + ) - // A day of data plus 10k steps. - numIntervals := 8640 + 10000 + // A day of data plus steps. + numIntervals := 8640 + steps - require.NoError(b, setupJoinQueryTestData(stor, engine, interval, numIntervals, 1000)) + require.NoError(b, setupJoinQueryTestData(stor, engine, interval, numIntervals, numInstances)) for _, c := range []benchCase{ { expr: `rpc_request_success_total + rpc_request_error_total`, - steps: 10000, + steps: steps, }, { expr: `rpc_request_success_total + ON (job, instance) GROUP_LEFT rpc_request_error_total`, - steps: 10000, + steps: steps, }, { expr: `rpc_request_success_total AND rpc_request_error_total{instance=~"0.*"}`, // 0.* keeps 1/16 of UUID values - steps: 10000, + steps: steps, }, { expr: `rpc_request_success_total OR rpc_request_error_total{instance=~"0.*"}`, // 0.* keeps 1/16 of UUID values - steps: 10000, + steps: steps, }, { expr: `rpc_request_success_total UNLESS rpc_request_error_total{instance=~"0.*"}`, // 0.* keeps 1/16 of UUID values - steps: 10000, + steps: steps, }, } { name := fmt.Sprintf("expr=%s/steps=%d", c.expr, c.steps) b.Run(name, func(b *testing.B) { ctx := context.Background() - b.ReportAllocs() - for b.Loop() { + + queryFn := func() { qry, err := engine.NewRangeQuery( ctx, stor, nil, c.expr, timestamp.Time(int64((numIntervals-c.steps)*10_000)), @@ -439,6 +443,14 @@ func BenchmarkJoinQuery(b *testing.B) { qry.Close() } + + queryFn() // Warm up run. + + b.ResetTimer() + b.ReportAllocs() + for b.Loop() { + queryFn() + } }) } }