datafusion icon indicating copy to clipboard operation
datafusion copied to clipboard

Use Tokio's task budget consistently, better APIs to support task cancellation

Open pepijnve opened this issue 5 months ago โ€ข 32 comments

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.

pepijnve avatar Jun 13 '25 12:06 pepijnve

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 avatar Jun 13 '25 14:06 ozankabak

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

pepijnve avatar Jun 13 '25 15:06 pepijnve

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

ozankabak avatar Jun 14 '25 11:06 ozankabak

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.

pepijnve avatar Jun 14 '25 19:06 pepijnve

Open to suggestions on better names for these properties.

pepijnve avatar Jun 14 '25 19:06 pepijnve

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

ozankabak avatar Jun 15 '25 05:06 ozankabak

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

pepijnve avatar Jun 15 '25 07:06 pepijnve

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.

pepijnve avatar Jun 17 '25 10:06 pepijnve

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

ozankabak avatar Jun 17 '25 10:06 ozankabak

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 โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

pepijnve avatar Jun 17 '25 13:06 pepijnve

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.

alamb avatar Jun 17 '25 15:06 alamb

๐Ÿค– ./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

alamb avatar Jun 17 '25 15:06 alamb

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.

pepijnve avatar Jun 17 '25 15:06 pepijnve

๐Ÿค–: 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 โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

alamb avatar Jun 17 '25 15:06 alamb

๐Ÿค– ./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

alamb avatar Jun 17 '25 15:06 alamb

๐Ÿค–: Benchmark completed

Will see if it is reproducable

alamb avatar Jun 17 '25 15:06 alamb

๐Ÿค–: 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 โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

alamb avatar Jun 17 '25 16:06 alamb

๐Ÿค– ./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

alamb avatar Jun 17 '25 16:06 alamb

๐Ÿค–: 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 โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

alamb avatar Jun 17 '25 16:06 alamb

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.

I totally get it -- we'll keep improving the benchmarks / hopefully making them easier to use / more stable over time

alamb avatar Jun 17 '25 16:06 alamb

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

pepijnve avatar Jun 17 '25 18:06 pepijnve

@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?

ozankabak avatar Jun 17 '25 18:06 ozankabak

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.

pepijnve avatar Jun 17 '25 18:06 pepijnve

I think we can go ahead with the task budget -- we can revert to the alternative if we discover a (surprising) performance issue

ozankabak avatar Jun 17 '25 18:06 ozankabak

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

alamb avatar Jun 17 '25 19:06 alamb

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?

pepijnve avatar Jun 17 '25 19:06 pepijnve

๐Ÿค– ./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

alamb avatar Jun 17 '25 20:06 alamb

๐Ÿค–: 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 โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

alamb avatar Jun 17 '25 20:06 alamb

๐Ÿค– ./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

alamb avatar Jun 17 '25 20:06 alamb

๐Ÿค–: 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 โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

alamb avatar Jun 17 '25 20:06 alamb