datafusion
datafusion copied to clipboard
Use Tokio's task budget consistently, better APIs to support task cancellation
Which issue does this PR close?
- Closes #16353.
Rationale for this change
RecordBatchStreamReceiver supports cooperative scheduling implicitly by using Tokio's task budget. YieldStream currently uses a custom mechanism. It would be better to use a single mechanism consistently.
What changes are included in this PR?
- Renamed YieldStream and related types to CooperativeStream
- Removed configuration option which is no longer applicable
- Enabled cooperative scheduling in spill manager
Note that the implementation of CooperativeStream in this PR is suboptimal. The final implementation requires https://github.com/tokio-rs/tokio/pull/7405 which I'm trying to move along as best I can.
Are these changes tested?
Covered by ~infinite_cancel~coop test.
Are there any user-facing changes?
Yes, the datafusion.optimizer.yield_period configuration option is removed, but at the time of writing this has not been released yet.
Thanks for the draft -- this is inline with my understanding from your description. I think it will inch us closer to a good, lasting solution (especially after your upstream tokio also PR merges). Feel free to ping me for a more detailed review once you are done with it
@ozankabak I've pushed the optimizer rule changes I had in mind. This introduces two new execution plan properties that capture the evaluation type (how children are evaluated: eager vs lazy) and the scheduling type (how poll_next will behave wrt scheduling: blocking vs cooperative).
With those two combined the tree can be rewritten in a bottom up fashion. Every leaf that is not cooperative gets wrapped as before. Additionally, any eager evaluating nodes (i.e. exchanges) that are not cooperative are wrapped. This should ensure the entire plan participates in cooperative scheduling.
The only caveat that remains is dynamic stream creation. Operators that do that need to take the necessary precautions themselves. I already update the spill manager for this in the previous commit.
While I was writing this I started wondering if evaluation type should be a per child thing. In my spawn experiment branch for instance hash join is eager for the build side, but lazy for the probe side. Perhaps it would be best to leave room for that.
While I was writing this I started wondering if evaluation type should be a per child thing. In my spawn experiment branch for instance hash join is eager for the build side, but lazy for the probe side. Perhaps it would be best to leave room for that.
This is in alignment with what I was thinking, let's do it that way
Thinking about it some more. The evaluation type is intended to describe how the operator computes record batches itself: lazy on demand, or by driving things itself. Iโm kind of trying to refer to the terminology from the volcano paper. That talks about demand-driven and data-driven operators. I had first called this 'drive type' with values 'demand' and 'data', but that felt a bit awkward. Since this is actually a property of how the operator prepares its output, one value per operator is probably fine after all.
What I'm trying to do with this is find the exchanges in the plan. The current set that's present in DataFusion is all fine, but if you were to implement one using std::sync::mpsc::channel instead of the one from tokio, explicit cooperation with the scheduler would be necessary again.
Open to suggestions on better names for these properties.
Thinking about it some more. The evaluation type is intended to describe how the operator computes record batches itself: lazy on demand, or by driving things itself. Iโm kind of trying to refer to the terminology from the volcano paper. That talks about demand-driven and data-driven operators. I had first called this 'drive type' with values 'demand' and 'data', but that felt a bit awkward. Since this is actually a property of how the operator prepares its output, one value per operator is probably fine after all.
OK - let's try that way, we can change later if it turns out to be insufficient
I've added a commit to this PR that:
- Makes the tests more robust. Rather than hanging when there's an issue they will fail.
- Removes duplication from the tests
- Removes repartitions and coalesces in most tests to ensure we're actually testing the right thing. I'm to get the tests to set up the challenging situations rather than massaging things so that they work.
- Merges in some of the extra test cases I still had lying around
The current Tokio code is only an approximation of the final code. For the final version we're dependent on a Tokio PR getting merged and released. In order to unblock this PR and allow review to proceed, I've added a couple of feature flags that make the Tokio based code disabled by default. The intention is to allow comparing the two variants from a performance point-of-view and consider the revised cooperative API for merging already.
I took a quick look at this yesterday and it was looking good -- I will review in more detail in a day or two. Thanks
I've been trying to measure the impact of these changes, but for the life of me I can't get useful results out of the benchmark comparison script. The sample below is actually comparing the exact same commit on a mac mini M4 and yet I still see large fluctuations. Not sure what else I can do ๐คทโโ๏ธ.
โโโโโโโโโโโโโโโโณโโโโโโโโโโโโโณโโโโโโโโโโโโโณโโโโโโโโโโโโโโโโ
โ Query โ baseline โ branch โ Change โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ QQuery 0 โ 9.71 ms โ 9.87 ms โ no change โ
โ QQuery 1 โ 15.07 ms โ 15.36 ms โ no change โ
โ QQuery 2 โ 47.76 ms โ 47.81 ms โ no change โ
โ QQuery 3 โ 46.78 ms โ 47.13 ms โ no change โ
โ QQuery 4 โ 426.60 ms โ 426.87 ms โ no change โ
โ QQuery 5 โ 557.13 ms โ 559.79 ms โ no change โ
โ QQuery 6 โ 11.37 ms โ 11.30 ms โ no change โ
โ QQuery 7 โ 16.17 ms โ 15.99 ms โ no change โ
โ QQuery 8 โ 518.13 ms โ 516.98 ms โ no change โ
โ QQuery 9 โ 671.89 ms โ 669.00 ms โ no change โ
โ QQuery 10 โ 146.75 ms โ 149.95 ms โ no change โ
โ QQuery 11 โ 162.79 ms โ 164.02 ms โ no change โ
โ QQuery 12 โ 567.28 ms โ 569.63 ms โ no change โ
โ QQuery 13 โ 799.84 ms โ 796.18 ms โ no change โ
โ QQuery 14 โ 542.10 ms โ 535.99 ms โ no change โ
โ QQuery 15 โ 502.33 ms โ 500.89 ms โ no change โ
โ QQuery 16 โ 1151.00 ms โ 1150.96 ms โ no change โ
โ QQuery 17 โ 1127.41 ms โ 1116.08 ms โ no change โ
โ QQuery 18 โ 2195.19 ms โ 2182.97 ms โ no change โ
โ QQuery 19 โ 39.96 ms โ 40.64 ms โ no change โ
โ QQuery 20 โ 858.48 ms โ 859.71 ms โ no change โ
โ QQuery 21 โ 988.68 ms โ 1048.57 ms โ 1.06x slower โ
โ QQuery 22 โ 1594.48 ms โ 2153.36 ms โ 1.35x slower โ
โ QQuery 23 โ 6399.31 ms โ 6905.44 ms โ 1.08x slower โ
โ QQuery 24 โ 305.36 ms โ 299.88 ms โ no change โ
โ QQuery 25 โ 274.50 ms โ 276.00 ms โ no change โ
โ QQuery 26 โ 338.09 ms โ 346.69 ms โ no change โ
โ QQuery 27 โ 1140.21 ms โ 1213.95 ms โ 1.06x slower โ
โ QQuery 28 โ 8881.31 ms โ 9061.62 ms โ no change โ
โ QQuery 29 โ 417.02 ms โ 414.85 ms โ no change โ
โ QQuery 30 โ 487.07 ms โ 486.73 ms โ no change โ
โ QQuery 31 โ 507.31 ms โ 508.16 ms โ no change โ
โ QQuery 32 โ 2154.40 ms โ 1917.22 ms โ +1.12x faster โ
โ QQuery 33 โ 2498.71 ms โ 2467.38 ms โ no change โ
โ QQuery 34 โ 2678.02 ms โ 2802.00 ms โ no change โ
โ QQuery 35 โ 751.17 ms โ 772.78 ms โ no change โ
โ QQuery 36 โ 61.54 ms โ 62.50 ms โ no change โ
โ QQuery 37 โ 25.67 ms โ 25.56 ms โ no change โ
โ QQuery 38 โ 61.80 ms โ 62.39 ms โ no change โ
โ QQuery 39 โ 101.51 ms โ 102.13 ms โ no change โ
โ QQuery 40 โ 18.26 ms โ 19.09 ms โ no change โ
โ QQuery 41 โ 17.70 ms โ 17.77 ms โ no change โ
โ QQuery 42 โ 14.84 ms โ 15.32 ms โ no change โ
โโโโโโโโโโโโโโโโดโโโโโโโโโโโโโดโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโ
I've been trying to measure the impact of these changes, but for the life of me I can't get useful results out of the benchmark comparison script. The sample below is actually comparing the exact same commit on a mac mini M4 and yet I still see large fluctuations. Not sure what else I can do ๐คทโโ๏ธ.
I agree the existing benchmarks are not perfect -- figuring out how to make them better would be good, though as you probably know it is a challenge of benchmarking in general. I'll kick off some runs against this PR with my scripts to see what it shows.
๐ค ./gh_compare_branch.sh Benchmark Script Running
Linux aal-dev 6.11.0-1015-gcp #15~24.04.1-Ubuntu SMP Thu Apr 24 20:41:05 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux
Comparing task_budget (5bfff9798b2815377ef8d40dfaffd26947c51385) to 06631c25316ed2fc20ab8114d0dcc801f353fbad diff
Benchmarks: tpch_mem clickbench_partitioned clickbench_extended
Results will be posted here when complete
I agree the existing benchmarks are not perfect
Not trying to criticize the benchmarks, just saying I'm having trouble using it as a guide.
@alamb Note that by default the current branch is using the local counter method @zhuqi-lucas implemented for YieldStream. Performance should be identical to main in other words.
๐ค: Benchmark completed
Details
Comparing HEAD and task_budget
--------------------
Benchmark clickbench_extended.json
--------------------
โโโโโโโโโโโโโโโโณโโโโโโโโโโโโโโณโโโโโโโโโโโโโโณโโโโโโโโโโโโ
โ Query โ HEAD โ task_budget โ Change โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ QQuery 0 โ 1938.69 ms โ 1955.98 ms โ no change โ
โ QQuery 1 โ 728.67 ms โ 732.71 ms โ no change โ
โ QQuery 2 โ 1393.40 ms โ 1380.16 ms โ no change โ
โ QQuery 3 โ 654.25 ms โ 667.02 ms โ no change โ
โ QQuery 4 โ 1374.93 ms โ 1368.90 ms โ no change โ
โ QQuery 5 โ 14843.62 ms โ 14967.16 ms โ no change โ
โ QQuery 6 โ 2001.52 ms โ 2082.06 ms โ no change โ
โ QQuery 7 โ 1889.83 ms โ 1950.81 ms โ no change โ
โ QQuery 8 โ 805.12 ms โ 809.25 ms โ no change โ
โโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโดโโโโโโโโโโโโโโดโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโณโโโโโโโโโโโโโ
โ Benchmark Summary โ โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ Total Time (HEAD) โ 25630.03ms โ
โ Total Time (task_budget) โ 25914.06ms โ
โ Average Time (HEAD) โ 2847.78ms โ
โ Average Time (task_budget) โ 2879.34ms โ
โ Queries Faster โ 0 โ
โ Queries Slower โ 0 โ
โ Queries with No Change โ 9 โ
โ Queries with Failure โ 0 โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโ
--------------------
Benchmark clickbench_partitioned.json
--------------------
โโโโโโโโโโโโโโโโณโโโโโโโโโโโโโโณโโโโโโโโโโโโโโณโโโโโโโโโโโโโโโโ
โ Query โ HEAD โ task_budget โ Change โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ QQuery 0 โ 15.26 ms โ 15.20 ms โ no change โ
โ QQuery 1 โ 33.51 ms โ 32.70 ms โ no change โ
โ QQuery 2 โ 81.78 ms โ 80.44 ms โ no change โ
โ QQuery 3 โ 100.21 ms โ 96.71 ms โ no change โ
โ QQuery 4 โ 578.10 ms โ 585.73 ms โ no change โ
โ QQuery 5 โ 838.83 ms โ 887.89 ms โ 1.06x slower โ
โ QQuery 6 โ 24.33 ms โ 22.32 ms โ +1.09x faster โ
โ QQuery 7 โ 38.56 ms โ 36.90 ms โ no change โ
โ QQuery 8 โ 850.10 ms โ 856.20 ms โ no change โ
โ QQuery 9 โ 1151.01 ms โ 1146.42 ms โ no change โ
โ QQuery 10 โ 252.88 ms โ 263.74 ms โ no change โ
โ QQuery 11 โ 283.58 ms โ 290.15 ms โ no change โ
โ QQuery 12 โ 869.70 ms โ 866.73 ms โ no change โ
โ QQuery 13 โ 1255.69 ms โ 1286.10 ms โ no change โ
โ QQuery 14 โ 809.83 ms โ 812.02 ms โ no change โ
โ QQuery 15 โ 777.07 ms โ 786.77 ms โ no change โ
โ QQuery 16 โ 1613.49 ms โ 1629.44 ms โ no change โ
โ QQuery 17 โ 1567.97 ms โ 1580.52 ms โ no change โ
โ QQuery 18 โ 2886.23 ms โ 2891.01 ms โ no change โ
โ QQuery 19 โ 87.29 ms โ 84.38 ms โ no change โ
โ QQuery 20 โ 1113.26 ms โ 1152.62 ms โ no change โ
โ QQuery 21 โ 1252.92 ms โ 1328.12 ms โ 1.06x slower โ
โ QQuery 22 โ 2069.04 ms โ 2168.76 ms โ no change โ
โ QQuery 23 โ 7539.31 ms โ 7957.48 ms โ 1.06x slower โ
โ QQuery 24 โ 443.12 ms โ 464.35 ms โ no change โ
โ QQuery 25 โ 379.12 ms โ 404.81 ms โ 1.07x slower โ
โ QQuery 26 โ 503.89 ms โ 530.15 ms โ 1.05x slower โ
โ QQuery 27 โ 1500.52 ms โ 1566.86 ms โ no change โ
โ QQuery 28 โ 12013.51 ms โ 11817.68 ms โ no change โ
โ QQuery 29 โ 527.40 ms โ 525.63 ms โ no change โ
โ QQuery 30 โ 758.72 ms โ 791.22 ms โ no change โ
โ QQuery 31 โ 811.10 ms โ 829.72 ms โ no change โ
โ QQuery 32 โ 2485.30 ms โ 2553.71 ms โ no change โ
โ QQuery 33 โ 3181.91 ms โ 3185.99 ms โ no change โ
โ QQuery 34 โ 3176.40 ms โ 3209.67 ms โ no change โ
โ QQuery 35 โ 1228.64 ms โ 1223.48 ms โ no change โ
โ QQuery 36 โ 120.17 ms โ 127.76 ms โ 1.06x slower โ
โ QQuery 37 โ 57.02 ms โ 56.75 ms โ no change โ
โ QQuery 38 โ 120.93 ms โ 127.28 ms โ 1.05x slower โ
โ QQuery 39 โ 191.04 ms โ 202.25 ms โ 1.06x slower โ
โ QQuery 40 โ 47.95 ms โ 47.32 ms โ no change โ
โ QQuery 41 โ 45.18 ms โ 45.53 ms โ no change โ
โ QQuery 42 โ 36.63 ms โ 39.44 ms โ 1.08x slower โ
โโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโดโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโณโโโโโโโโโโโโโ
โ Benchmark Summary โ โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ Total Time (HEAD) โ 53718.51ms โ
โ Total Time (task_budget) โ 54607.96ms โ
โ Average Time (HEAD) โ 1249.27ms โ
โ Average Time (task_budget) โ 1269.95ms โ
โ Queries Faster โ 1 โ
โ Queries Slower โ 9 โ
โ Queries with No Change โ 33 โ
โ Queries with Failure โ 0 โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโ
--------------------
Benchmark tpch_mem_sf1.json
--------------------
โโโโโโโโโโโโโโโโณโโโโโโโโโโโโณโโโโโโโโโโโโโโณโโโโโโโโโโโโโโโโ
โ Query โ HEAD โ task_budget โ Change โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ QQuery 1 โ 101.57 ms โ 101.26 ms โ no change โ
โ QQuery 2 โ 21.12 ms โ 21.41 ms โ no change โ
โ QQuery 3 โ 32.07 ms โ 32.64 ms โ no change โ
โ QQuery 4 โ 18.53 ms โ 18.48 ms โ no change โ
โ QQuery 5 โ 48.96 ms โ 49.09 ms โ no change โ
โ QQuery 6 โ 11.91 ms โ 11.82 ms โ no change โ
โ QQuery 7 โ 87.54 ms โ 89.53 ms โ no change โ
โ QQuery 8 โ 25.52 ms โ 24.90 ms โ no change โ
โ QQuery 9 โ 54.10 ms โ 55.00 ms โ no change โ
โ QQuery 10 โ 42.23 ms โ 43.43 ms โ no change โ
โ QQuery 11 โ 11.61 ms โ 11.44 ms โ no change โ
โ QQuery 12 โ 34.46 ms โ 34.10 ms โ no change โ
โ QQuery 13 โ 26.49 ms โ 26.42 ms โ no change โ
โ QQuery 14 โ 9.60 ms โ 9.81 ms โ no change โ
โ QQuery 15 โ 19.11 ms โ 18.77 ms โ no change โ
โ QQuery 16 โ 18.76 ms โ 18.83 ms โ no change โ
โ QQuery 17 โ 95.76 ms โ 94.69 ms โ no change โ
โ QQuery 18 โ 199.88 ms โ 187.28 ms โ +1.07x faster โ
โ QQuery 19 โ 25.75 ms โ 25.18 ms โ no change โ
โ QQuery 20 โ 31.96 ms โ 31.34 ms โ no change โ
โ QQuery 21 โ 148.19 ms โ 146.33 ms โ no change โ
โ QQuery 22 โ 15.24 ms โ 14.98 ms โ no change โ
โโโโโโโโโโโโโโโโดโโโโโโโโโโโโดโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโณโโโโโโโโโโโโ
โ Benchmark Summary โ โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ Total Time (HEAD) โ 1080.35ms โ
โ Total Time (task_budget) โ 1066.72ms โ
โ Average Time (HEAD) โ 49.11ms โ
โ Average Time (task_budget) โ 48.49ms โ
โ Queries Faster โ 1 โ
โ Queries Slower โ 0 โ
โ Queries with No Change โ 21 โ
โ Queries with Failure โ 0 โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโ
๐ค ./gh_compare_branch.sh Benchmark Script Running
Linux aal-dev 6.11.0-1015-gcp #15~24.04.1-Ubuntu SMP Thu Apr 24 20:41:05 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux
Comparing task_budget (a749e8f60cbcdf5542b4b69a0a2f94c7790fab45) to 06631c25316ed2fc20ab8114d0dcc801f353fbad diff
Benchmarks: clickbench_1
Results will be posted here when complete
๐ค: Benchmark completed
Will see if it is reproducable
๐ค: Benchmark completed
Details
Comparing HEAD and task_budget
--------------------
Benchmark clickbench_1.json
--------------------
โโโโโโโโโโโโโโโโณโโโโโโโโโโโโโโณโโโโโโโโโโโโโโณโโโโโโโโโโโโโโโโ
โ Query โ HEAD โ task_budget โ Change โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ QQuery 0 โ 51.47 ms โ 46.15 ms โ +1.12x faster โ
โ QQuery 1 โ 75.49 ms โ 72.84 ms โ no change โ
โ QQuery 2 โ 109.24 ms โ 108.00 ms โ no change โ
โ QQuery 3 โ 127.42 ms โ 119.32 ms โ +1.07x faster โ
โ QQuery 4 โ 633.00 ms โ 685.11 ms โ 1.08x slower โ
โ QQuery 5 โ 853.72 ms โ 863.05 ms โ no change โ
โ QQuery 6 โ 56.74 ms โ 54.54 ms โ no change โ
โ QQuery 7 โ 80.42 ms โ 82.07 ms โ no change โ
โ QQuery 8 โ 881.04 ms โ 884.51 ms โ no change โ
โ QQuery 9 โ 1194.27 ms โ 1202.55 ms โ no change โ
โ QQuery 10 โ 300.62 ms โ 297.89 ms โ no change โ
โ QQuery 11 โ 318.31 ms โ 323.44 ms โ no change โ
โ QQuery 12 โ 879.94 ms โ 888.82 ms โ no change โ
โ QQuery 13 โ 1245.61 ms โ 1252.15 ms โ no change โ
โ QQuery 14 โ 803.27 ms โ 814.41 ms โ no change โ
โ QQuery 15 โ 803.96 ms โ 822.93 ms โ no change โ
โ QQuery 16 โ 1630.13 ms โ 1686.71 ms โ no change โ
โ QQuery 17 โ 1584.79 ms โ 1608.29 ms โ no change โ
โ QQuery 18 โ 2894.48 ms โ 2899.79 ms โ no change โ
โ QQuery 19 โ 125.96 ms โ 119.63 ms โ +1.05x faster โ
โ QQuery 20 โ 1140.75 ms โ 1206.46 ms โ 1.06x slower โ
โ QQuery 21 โ 1337.94 ms โ 1390.68 ms โ no change โ
โ QQuery 22 โ 2323.74 ms โ 2408.18 ms โ no change โ
โ QQuery 23 โ 7822.32 ms โ 8103.67 ms โ no change โ
โ QQuery 24 โ 489.54 ms โ 507.76 ms โ no change โ
โ QQuery 25 โ 406.25 ms โ 432.43 ms โ 1.06x slower โ
โ QQuery 26 โ 545.86 ms โ 568.63 ms โ no change โ
โ QQuery 27 โ 1638.18 ms โ 1683.81 ms โ no change โ
โ QQuery 28 โ 12379.17 ms โ 12511.87 ms โ no change โ
โ QQuery 29 โ 565.53 ms โ 581.52 ms โ no change โ
โ QQuery 30 โ 803.29 ms โ 816.97 ms โ no change โ
โ QQuery 31 โ 843.85 ms โ 872.76 ms โ no change โ
โ QQuery 32 โ 2547.32 ms โ 2563.59 ms โ no change โ
โ QQuery 33 โ 3256.21 ms โ 3307.21 ms โ no change โ
โ QQuery 34 โ 3266.60 ms โ 3323.18 ms โ no change โ
โ QQuery 35 โ 1258.28 ms โ 1288.71 ms โ no change โ
โ QQuery 36 โ 173.64 ms โ 181.16 ms โ no change โ
โ QQuery 37 โ 101.14 ms โ 101.04 ms โ no change โ
โ QQuery 38 โ 171.00 ms โ 179.89 ms โ 1.05x slower โ
โ QQuery 39 โ 252.45 ms โ 266.95 ms โ 1.06x slower โ
โ QQuery 40 โ 70.71 ms โ 88.09 ms โ 1.25x slower โ
โ QQuery 41 โ 87.06 ms โ 86.11 ms โ no change โ
โ QQuery 42 โ 78.55 ms โ 78.27 ms โ no change โ
โโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโดโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโณโโโโโโโโโโโโโ
โ Benchmark Summary โ โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ Total Time (HEAD) โ 56209.26ms โ
โ Total Time (task_budget) โ 57381.15ms โ
โ Average Time (HEAD) โ 1307.19ms โ
โ Average Time (task_budget) โ 1334.45ms โ
โ Queries Faster โ 3 โ
โ Queries Slower โ 6 โ
โ Queries with No Change โ 34 โ
โ Queries with Failure โ 0 โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโ
๐ค ./gh_compare_branch.sh Benchmark Script Running
Linux aal-dev 6.11.0-1015-gcp #15~24.04.1-Ubuntu SMP Thu Apr 24 20:41:05 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux
Comparing task_budget (a749e8f60cbcdf5542b4b69a0a2f94c7790fab45) to 06631c25316ed2fc20ab8114d0dcc801f353fbad diff
Benchmarks: tpch_mem clickbench_partitioned clickbench_extended
Results will be posted here when complete
๐ค: Benchmark completed
Details
Comparing HEAD and task_budget
--------------------
Benchmark clickbench_extended.json
--------------------
โโโโโโโโโโโโโโโโณโโโโโโโโโโโโโโณโโโโโโโโโโโโโโณโโโโโโโโโโโโโโโ
โ Query โ HEAD โ task_budget โ Change โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ QQuery 0 โ 1929.02 ms โ 1971.93 ms โ no change โ
โ QQuery 1 โ 704.63 ms โ 718.11 ms โ no change โ
โ QQuery 2 โ 1412.62 ms โ 1368.78 ms โ no change โ
โ QQuery 3 โ 647.44 ms โ 680.23 ms โ 1.05x slower โ
โ QQuery 4 โ 1400.23 ms โ 1358.38 ms โ no change โ
โ QQuery 5 โ 14995.43 ms โ 15226.83 ms โ no change โ
โ QQuery 6 โ 1985.14 ms โ 2087.35 ms โ 1.05x slower โ
โ QQuery 7 โ 1989.35 ms โ 1969.02 ms โ no change โ
โ QQuery 8 โ 785.58 ms โ 786.62 ms โ no change โ
โโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโดโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโณโโโโโโโโโโโโโ
โ Benchmark Summary โ โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ Total Time (HEAD) โ 25849.44ms โ
โ Total Time (task_budget) โ 26167.24ms โ
โ Average Time (HEAD) โ 2872.16ms โ
โ Average Time (task_budget) โ 2907.47ms โ
โ Queries Faster โ 0 โ
โ Queries Slower โ 2 โ
โ Queries with No Change โ 7 โ
โ Queries with Failure โ 0 โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโ
--------------------
Benchmark clickbench_partitioned.json
--------------------
โโโโโโโโโโโโโโโโณโโโโโโโโโโโโโโณโโโโโโโโโโโโโโณโโโโโโโโโโโโโโโโ
โ Query โ HEAD โ task_budget โ Change โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ QQuery 0 โ 15.70 ms โ 15.32 ms โ no change โ
โ QQuery 1 โ 33.40 ms โ 32.29 ms โ no change โ
โ QQuery 2 โ 78.71 ms โ 81.60 ms โ no change โ
โ QQuery 3 โ 94.83 ms โ 96.30 ms โ no change โ
โ QQuery 4 โ 590.16 ms โ 586.19 ms โ no change โ
โ QQuery 5 โ 839.78 ms โ 884.55 ms โ 1.05x slower โ
โ QQuery 6 โ 23.62 ms โ 24.22 ms โ no change โ
โ QQuery 7 โ 35.97 ms โ 35.71 ms โ no change โ
โ QQuery 8 โ 845.86 ms โ 836.34 ms โ no change โ
โ QQuery 9 โ 1155.51 ms โ 1124.37 ms โ no change โ
โ QQuery 10 โ 255.94 ms โ 258.01 ms โ no change โ
โ QQuery 11 โ 283.03 ms โ 285.17 ms โ no change โ
โ QQuery 12 โ 861.95 ms โ 884.44 ms โ no change โ
โ QQuery 13 โ 1256.74 ms โ 1274.54 ms โ no change โ
โ QQuery 14 โ 801.84 ms โ 819.99 ms โ no change โ
โ QQuery 15 โ 786.28 ms โ 775.94 ms โ no change โ
โ QQuery 16 โ 1616.39 ms โ 1622.78 ms โ no change โ
โ QQuery 17 โ 1591.05 ms โ 1593.83 ms โ no change โ
โ QQuery 18 โ 2857.24 ms โ 2902.54 ms โ no change โ
โ QQuery 19 โ 89.43 ms โ 84.53 ms โ +1.06x faster โ
โ QQuery 20 โ 1125.85 ms โ 1171.56 ms โ no change โ
โ QQuery 21 โ 1266.95 ms โ 1307.77 ms โ no change โ
โ QQuery 22 โ 2089.10 ms โ 2189.53 ms โ no change โ
โ QQuery 23 โ 7574.01 ms โ 7914.18 ms โ no change โ
โ QQuery 24 โ 444.06 ms โ 466.35 ms โ 1.05x slower โ
โ QQuery 25 โ 378.44 ms โ 397.31 ms โ no change โ
โ QQuery 26 โ 521.01 ms โ 525.65 ms โ no change โ
โ QQuery 27 โ 1503.49 ms โ 1548.92 ms โ no change โ
โ QQuery 28 โ 11900.61 ms โ 11913.35 ms โ no change โ
โ QQuery 29 โ 534.80 ms โ 540.04 ms โ no change โ
โ QQuery 30 โ 764.78 ms โ 790.34 ms โ no change โ
โ QQuery 31 โ 812.47 ms โ 825.30 ms โ no change โ
โ QQuery 32 โ 2541.75 ms โ 2545.00 ms โ no change โ
โ QQuery 33 โ 3179.10 ms โ 3206.02 ms โ no change โ
โ QQuery 34 โ 3202.13 ms โ 3242.56 ms โ no change โ
โ QQuery 35 โ 1219.46 ms โ 1221.75 ms โ no change โ
โ QQuery 36 โ 121.25 ms โ 126.01 ms โ no change โ
โ QQuery 37 โ 54.86 ms โ 56.17 ms โ no change โ
โ QQuery 38 โ 119.17 ms โ 125.52 ms โ 1.05x slower โ
โ QQuery 39 โ 192.11 ms โ 198.37 ms โ no change โ
โ QQuery 40 โ 47.73 ms โ 50.41 ms โ 1.06x slower โ
โ QQuery 41 โ 43.85 ms โ 45.09 ms โ no change โ
โ QQuery 42 โ 37.48 ms โ 38.16 ms โ no change โ
โโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโดโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโณโโโโโโโโโโโโโ
โ Benchmark Summary โ โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ Total Time (HEAD) โ 53787.93ms โ
โ Total Time (task_budget) โ 54664.02ms โ
โ Average Time (HEAD) โ 1250.88ms โ
โ Average Time (task_budget) โ 1271.26ms โ
โ Queries Faster โ 1 โ
โ Queries Slower โ 4 โ
โ Queries with No Change โ 38 โ
โ Queries with Failure โ 0 โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโ
--------------------
Benchmark tpch_mem_sf1.json
--------------------
โโโโโโโโโโโโโโโโณโโโโโโโโโโโโณโโโโโโโโโโโโโโณโโโโโโโโโโโโโโโโ
โ Query โ HEAD โ task_budget โ Change โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ QQuery 1 โ 102.04 ms โ 101.87 ms โ no change โ
โ QQuery 2 โ 21.73 ms โ 20.67 ms โ no change โ
โ QQuery 3 โ 32.83 ms โ 32.19 ms โ no change โ
โ QQuery 4 โ 18.89 ms โ 18.39 ms โ no change โ
โ QQuery 5 โ 50.60 ms โ 49.54 ms โ no change โ
โ QQuery 6 โ 12.02 ms โ 11.88 ms โ no change โ
โ QQuery 7 โ 90.16 ms โ 89.23 ms โ no change โ
โ QQuery 8 โ 26.40 ms โ 25.02 ms โ +1.06x faster โ
โ QQuery 9 โ 54.48 ms โ 54.78 ms โ no change โ
โ QQuery 10 โ 44.56 ms โ 42.64 ms โ no change โ
โ QQuery 11 โ 11.60 ms โ 11.27 ms โ no change โ
โ QQuery 12 โ 35.11 ms โ 34.35 ms โ no change โ
โ QQuery 13 โ 26.89 ms โ 26.54 ms โ no change โ
โ QQuery 14 โ 10.12 ms โ 9.75 ms โ no change โ
โ QQuery 15 โ 19.80 ms โ 19.82 ms โ no change โ
โ QQuery 16 โ 18.99 ms โ 18.85 ms โ no change โ
โ QQuery 17 โ 97.96 ms โ 94.41 ms โ no change โ
โ QQuery 18 โ 214.13 ms โ 197.52 ms โ +1.08x faster โ
โ QQuery 19 โ 26.66 ms โ 25.60 ms โ no change โ
โ QQuery 20 โ 32.51 ms โ 32.08 ms โ no change โ
โ QQuery 21 โ 146.48 ms โ 146.42 ms โ no change โ
โ QQuery 22 โ 15.46 ms โ 15.27 ms โ no change โ
โโโโโโโโโโโโโโโโดโโโโโโโโโโโโดโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโณโโโโโโโโโโโโ
โ Benchmark Summary โ โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ Total Time (HEAD) โ 1109.41ms โ
โ Total Time (task_budget) โ 1078.08ms โ
โ Average Time (HEAD) โ 50.43ms โ
โ Average Time (task_budget) โ 49.00ms โ
โ Queries Faster โ 2 โ
โ Queries Slower โ 0 โ
โ Queries with No Change โ 20 โ
โ Queries with Failure โ 0 โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโ
I agree the existing benchmarks are not perfect
Not trying to criticize the benchmarks, just saying I'm having trouble using it as a guide. @alamb Note that by default the current branch is using the local counter method @zhuqi-lucas implemented for
YieldStream. Performance should be identical tomainin other words.
I totally get it -- we'll keep improving the benchmarks / hopefully making them easier to use / more stable over time
@alamb the remaining open question I have related to this PR is what the default implementation should be for the time being. Do we use the tokio has_budget_remaining/consume_budget approximation which is more robust or do we stick with the per-operator counter we have on main but which doesn't fix the interleave test case (marked as ignore to not fail the build)?
The current state of the PR uses the latter unless you compile with --cfg datafusion_coop=tokio_fallback.
@alamb the remaining open question I have related to this PR is what the default implementation should be for the time being. Do we use the tokio has_budget_remaining/consume_budget approximation which is more robust or do we stick with the per-operator counter we have on main but which doesn't fix the interleave test case (marked as ignore to not fail the build)?
What do you suggest?
What do you suggest?
@ozankabak I'm not sure. I've been trying to convince myself that the task budget variant is good enough for now and doesn't incur a performance penalty, but I haven't been having much luck gathering proof. It's hard to make an informed decision if you can't measure.
I think we can go ahead with the task budget -- we can revert to the alternative if we discover a (surprising) performance issue
I think we can go ahead with the task budget -- we can revert to the alternative if we discover a (surprising) performance issue
Yeah, I agree
In general I think defaulting to the current behavior (which was no extra consideration for cooperation) is also a safe thing and we can annotate additional operators we discover have issues
Just saw the merge conflict. I'll rebase.
@alamb I've changed the default to the tokio-based temporary placeholder. The version that's not using poll_proceed yet. Would you mind scheduling one last benchmark run?
๐ค ./gh_compare_branch.sh Benchmark Script Running
Linux aal-dev 6.11.0-1015-gcp #15~24.04.1-Ubuntu SMP Thu Apr 24 20:41:05 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux
Comparing task_budget (3b33f79dda896390aa1d174befcfd4f8cc34033f) to 1429c92474238a91a09f1cd4a68c19d03329b6a7 diff
Benchmarks: tpch_mem clickbench_partitioned clickbench_extended
Results will be posted here when complete
๐ค: Benchmark completed
Details
Comparing HEAD and task_budget
--------------------
Benchmark clickbench_extended.json
--------------------
โโโโโโโโโโโโโโโโณโโโโโโโโโโโโโโณโโโโโโโโโโโโโโณโโโโโโโโโโโโโโโ
โ Query โ HEAD โ task_budget โ Change โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ QQuery 0 โ 1949.96 ms โ 1930.13 ms โ no change โ
โ QQuery 1 โ 675.49 ms โ 729.71 ms โ 1.08x slower โ
โ QQuery 2 โ 1340.52 ms โ 1378.26 ms โ no change โ
โ QQuery 3 โ 662.34 ms โ 658.36 ms โ no change โ
โ QQuery 4 โ 1373.39 ms โ 1343.97 ms โ no change โ
โ QQuery 5 โ 15044.29 ms โ 14931.43 ms โ no change โ
โ QQuery 6 โ 2031.52 ms โ 2100.06 ms โ no change โ
โ QQuery 7 โ 1949.16 ms โ 1911.84 ms โ no change โ
โ QQuery 8 โ 790.17 ms โ 811.49 ms โ no change โ
โโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโดโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโณโโโโโโโโโโโโโ
โ Benchmark Summary โ โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ Total Time (HEAD) โ 25816.84ms โ
โ Total Time (task_budget) โ 25795.26ms โ
โ Average Time (HEAD) โ 2868.54ms โ
โ Average Time (task_budget) โ 2866.14ms โ
โ Queries Faster โ 0 โ
โ Queries Slower โ 1 โ
โ Queries with No Change โ 8 โ
โ Queries with Failure โ 0 โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโ
--------------------
Benchmark clickbench_partitioned.json
--------------------
โโโโโโโโโโโโโโโโณโโโโโโโโโโโโโโณโโโโโโโโโโโโโโณโโโโโโโโโโโโโโโ
โ Query โ HEAD โ task_budget โ Change โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ QQuery 0 โ 15.07 ms โ 15.52 ms โ no change โ
โ QQuery 1 โ 32.39 ms โ 33.64 ms โ no change โ
โ QQuery 2 โ 81.66 ms โ 81.29 ms โ no change โ
โ QQuery 3 โ 97.11 ms โ 97.56 ms โ no change โ
โ QQuery 4 โ 591.09 ms โ 593.49 ms โ no change โ
โ QQuery 5 โ 821.63 ms โ 872.05 ms โ 1.06x slower โ
โ QQuery 6 โ 22.34 ms โ 22.99 ms โ no change โ
โ QQuery 7 โ 36.75 ms โ 36.65 ms โ no change โ
โ QQuery 8 โ 844.36 ms โ 865.78 ms โ no change โ
โ QQuery 9 โ 1143.96 ms โ 1148.17 ms โ no change โ
โ QQuery 10 โ 253.88 ms โ 253.51 ms โ no change โ
โ QQuery 11 โ 277.72 ms โ 288.38 ms โ no change โ
โ QQuery 12 โ 851.39 ms โ 871.27 ms โ no change โ
โ QQuery 13 โ 1121.16 ms โ 1237.87 ms โ 1.10x slower โ
โ QQuery 14 โ 807.20 ms โ 810.33 ms โ no change โ
โ QQuery 15 โ 740.12 ms โ 757.64 ms โ no change โ
โ QQuery 16 โ 1601.02 ms โ 1610.53 ms โ no change โ
โ QQuery 17 โ 1610.29 ms โ 1607.44 ms โ no change โ
โ QQuery 18 โ 2862.22 ms โ 2887.82 ms โ no change โ
โ QQuery 19 โ 81.40 ms โ 85.86 ms โ 1.05x slower โ
โ QQuery 20 โ 1137.87 ms โ 1173.96 ms โ no change โ
โ QQuery 21 โ 1276.87 ms โ 1312.58 ms โ no change โ
โ QQuery 22 โ 2134.80 ms โ 2210.32 ms โ no change โ
โ QQuery 23 โ 7399.34 ms โ 7585.73 ms โ no change โ
โ QQuery 24 โ 434.38 ms โ 454.37 ms โ no change โ
โ QQuery 25 โ 304.06 ms โ 312.91 ms โ no change โ
โ QQuery 26 โ 434.86 ms โ 458.44 ms โ 1.05x slower โ
โ QQuery 27 โ 1525.86 ms โ 1576.08 ms โ no change โ
โ QQuery 28 โ 11727.04 ms โ 12045.71 ms โ no change โ
โ QQuery 29 โ 524.27 ms โ 516.39 ms โ no change โ
โ QQuery 30 โ 770.12 ms โ 793.40 ms โ no change โ
โ QQuery 31 โ 801.85 ms โ 824.47 ms โ no change โ
โ QQuery 32 โ 2409.23 ms โ 2419.15 ms โ no change โ
โ QQuery 33 โ 3090.45 ms โ 3143.57 ms โ no change โ
โ QQuery 34 โ 3152.12 ms โ 3158.17 ms โ no change โ
โ QQuery 35 โ 1183.10 ms โ 1238.98 ms โ no change โ
โ QQuery 36 โ 129.34 ms โ 125.39 ms โ no change โ
โ QQuery 37 โ 54.74 ms โ 57.12 ms โ no change โ
โ QQuery 38 โ 122.62 ms โ 125.25 ms โ no change โ
โ QQuery 39 โ 199.54 ms โ 195.83 ms โ no change โ
โ QQuery 40 โ 47.79 ms โ 49.30 ms โ no change โ
โ QQuery 41 โ 44.60 ms โ 44.50 ms โ no change โ
โ QQuery 42 โ 39.35 ms โ 38.99 ms โ no change โ
โโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโดโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโณโโโโโโโโโโโโโ
โ Benchmark Summary โ โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ Total Time (HEAD) โ 52836.93ms โ
โ Total Time (task_budget) โ 54038.40ms โ
โ Average Time (HEAD) โ 1228.77ms โ
โ Average Time (task_budget) โ 1256.71ms โ
โ Queries Faster โ 0 โ
โ Queries Slower โ 4 โ
โ Queries with No Change โ 39 โ
โ Queries with Failure โ 0 โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโ
--------------------
Benchmark tpch_mem_sf1.json
--------------------
โโโโโโโโโโโโโโโโณโโโโโโโโโโโโณโโโโโโโโโโโโโโณโโโโโโโโโโโโ
โ Query โ HEAD โ task_budget โ Change โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ QQuery 1 โ 102.55 ms โ 99.10 ms โ no change โ
โ QQuery 2 โ 20.94 ms โ 20.73 ms โ no change โ
โ QQuery 3 โ 32.32 ms โ 32.03 ms โ no change โ
โ QQuery 4 โ 18.53 ms โ 18.75 ms โ no change โ
โ QQuery 5 โ 48.91 ms โ 48.40 ms โ no change โ
โ QQuery 6 โ 11.91 ms โ 11.84 ms โ no change โ
โ QQuery 7 โ 87.18 ms โ 87.96 ms โ no change โ
โ QQuery 8 โ 25.12 ms โ 24.58 ms โ no change โ
โ QQuery 9 โ 53.78 ms โ 55.14 ms โ no change โ
โ QQuery 10 โ 43.11 ms โ 42.77 ms โ no change โ
โ QQuery 11 โ 11.14 ms โ 11.34 ms โ no change โ
โ QQuery 12 โ 34.92 ms โ 34.46 ms โ no change โ
โ QQuery 13 โ 25.68 ms โ 25.61 ms โ no change โ
โ QQuery 14 โ 9.52 ms โ 9.68 ms โ no change โ
โ QQuery 15 โ 19.06 ms โ 18.70 ms โ no change โ
โ QQuery 16 โ 18.70 ms โ 18.64 ms โ no change โ
โ QQuery 17 โ 93.82 ms โ 96.06 ms โ no change โ
โ QQuery 18 โ 194.66 ms โ 194.28 ms โ no change โ
โ QQuery 19 โ 25.27 ms โ 25.00 ms โ no change โ
โ QQuery 20 โ 32.21 ms โ 31.37 ms โ no change โ
โ QQuery 21 โ 144.09 ms โ 146.38 ms โ no change โ
โ QQuery 22 โ 15.76 ms โ 15.12 ms โ no change โ
โโโโโโโโโโโโโโโโดโโโโโโโโโโโโดโโโโโโโโโโโโโโดโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโณโโโโโโโโโโโโ
โ Benchmark Summary โ โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ Total Time (HEAD) โ 1069.18ms โ
โ Total Time (task_budget) โ 1067.95ms โ
โ Average Time (HEAD) โ 48.60ms โ
โ Average Time (task_budget) โ 48.54ms โ
โ Queries Faster โ 0 โ
โ Queries Slower โ 0 โ
โ Queries with No Change โ 22 โ
โ Queries with Failure โ 0 โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโ
๐ค ./gh_compare_branch.sh Benchmark Script Running
Linux aal-dev 6.11.0-1015-gcp #15~24.04.1-Ubuntu SMP Thu Apr 24 20:41:05 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux
Comparing task_budget (3b33f79dda896390aa1d174befcfd4f8cc34033f) to 1429c92474238a91a09f1cd4a68c19d03329b6a7 diff
Benchmarks: clickbench_1
Results will be posted here when complete
๐ค: Benchmark completed
Details
Comparing HEAD and task_budget
--------------------
Benchmark clickbench_1.json
--------------------
โโโโโโโโโโโโโโโโณโโโโโโโโโโโโโโณโโโโโโโโโโโโโโณโโโโโโโโโโโโโโโโ
โ Query โ HEAD โ task_budget โ Change โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ QQuery 0 โ 45.55 ms โ 47.02 ms โ no change โ
โ QQuery 1 โ 70.90 ms โ 74.64 ms โ 1.05x slower โ
โ QQuery 2 โ 108.60 ms โ 108.42 ms โ no change โ
โ QQuery 3 โ 118.38 ms โ 117.48 ms โ no change โ
โ QQuery 4 โ 614.68 ms โ 702.11 ms โ 1.14x slower โ
โ QQuery 5 โ 843.56 ms โ 868.27 ms โ no change โ
โ QQuery 6 โ 53.99 ms โ 54.51 ms โ no change โ
โ QQuery 7 โ 78.46 ms โ 78.61 ms โ no change โ
โ QQuery 8 โ 887.11 ms โ 904.12 ms โ no change โ
โ QQuery 9 โ 1173.21 ms โ 1225.36 ms โ no change โ
โ QQuery 10 โ 288.90 ms โ 287.56 ms โ no change โ
โ QQuery 11 โ 313.83 ms โ 324.76 ms โ no change โ
โ QQuery 12 โ 855.16 ms โ 892.54 ms โ no change โ
โ QQuery 13 โ 1219.67 ms โ 1250.80 ms โ no change โ
โ QQuery 14 โ 814.84 ms โ 816.85 ms โ no change โ
โ QQuery 15 โ 795.60 ms โ 809.07 ms โ no change โ
โ QQuery 16 โ 1603.15 ms โ 1642.79 ms โ no change โ
โ QQuery 17 โ 1611.43 ms โ 1620.07 ms โ no change โ
โ QQuery 18 โ 2884.61 ms โ 2906.00 ms โ no change โ
โ QQuery 19 โ 121.20 ms โ 121.38 ms โ no change โ
โ QQuery 20 โ 1180.69 ms โ 1189.69 ms โ no change โ
โ QQuery 21 โ 1371.20 ms โ 1394.64 ms โ no change โ
โ QQuery 22 โ 2379.76 ms โ 2412.27 ms โ no change โ
โ QQuery 23 โ 7945.62 ms โ 8090.22 ms โ no change โ
โ QQuery 24 โ 460.30 ms โ 470.69 ms โ no change โ
โ QQuery 25 โ 346.40 ms โ 347.84 ms โ no change โ
โ QQuery 26 โ 451.87 ms โ 477.27 ms โ 1.06x slower โ
โ QQuery 27 โ 1650.72 ms โ 1684.69 ms โ no change โ
โ QQuery 28 โ 12400.61 ms โ 12486.22 ms โ no change โ
โ QQuery 29 โ 568.75 ms โ 554.71 ms โ no change โ
โ QQuery 30 โ 797.26 ms โ 806.62 ms โ no change โ
โ QQuery 31 โ 822.99 ms โ 854.98 ms โ no change โ
โ QQuery 32 โ 2427.54 ms โ 2465.81 ms โ no change โ
โ QQuery 33 โ 3173.31 ms โ 3268.38 ms โ no change โ
โ QQuery 34 โ 3262.48 ms โ 3273.74 ms โ no change โ
โ QQuery 35 โ 1259.76 ms โ 1276.50 ms โ no change โ
โ QQuery 36 โ 167.14 ms โ 173.11 ms โ no change โ
โ QQuery 37 โ 98.87 ms โ 106.56 ms โ 1.08x slower โ
โ QQuery 38 โ 173.53 ms โ 171.48 ms โ no change โ
โ QQuery 39 โ 250.93 ms โ 254.95 ms โ no change โ
โ QQuery 40 โ 73.28 ms โ 80.35 ms โ 1.10x slower โ
โ QQuery 41 โ 83.66 ms โ 79.01 ms โ +1.06x faster โ
โ QQuery 42 โ 76.39 ms โ 74.95 ms โ no change โ
โโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโดโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโณโโโโโโโโโโโโโ
โ Benchmark Summary โ โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ Total Time (HEAD) โ 55925.88ms โ
โ Total Time (task_budget) โ 56847.01ms โ
โ Average Time (HEAD) โ 1300.60ms โ
โ Average Time (task_budget) โ 1322.02ms โ
โ Queries Faster โ 1 โ
โ Queries Slower โ 5 โ
โ Queries with No Change โ 37 โ
โ Queries with Failure โ 0 โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโ