Add query configs to turn off expression evaluation optimizations#10902
Add query configs to turn off expression evaluation optimizations#10902bikramSingh91 wants to merge 1 commit intofacebookincubator:mainfrom
Conversation
✅ Deploy Preview for meta-velox canceled.
|
|
This pull request was exported from Phabricator. Differential Revision: D61943875 |
|
This pull request was exported from Phabricator. Differential Revision: D61943875 |
c7d8e8c to
1fb7610
Compare
velox/core/QueryConfig.h
Outdated
There was a problem hiding this comment.
Would you send a PR to update contributing guidelines / coding style to describe when to use "debug_xxx" configs?
There was a problem hiding this comment.
@mbasmanova Created a seperate PR that I will merge after this since it references one of the configs added here: #10934
|
This change cause performance regressions in benchmarks, namely in SimpleArithmetic, SimpleCastExpr, ComparisonConjunct and Preproc. This was due to the added cost of creating an EvalCtx, particularly due to the calls to queryConfig for fetching the configs during construction. This is because on every iteration of the benchmark a new EvalCtx is created and each call to the query ctx contains a map lookup and a string to bool/int conversion. Even though its a small cost it shows up on simple benchmarks as they are designed to be very targeted on a single simple operation. To avoid this, I will move the params up into ExecCtx instead which is only created once per driver and once per benchmark. |
…cebookincubator#10902) Summary: Pull Request resolved: facebookincubator#10902 This change adds query configs to individually turn off expression evaluation optimizations like dictionary peeling, dictionary memoization, reusing shared subexpression results and deferring lazy vector loading. The goal is to streamline debugging in production and enable prompt mitigation of bugs or regressions caused by the optimization or surfaced due to it. Note: When peeling is turned off, we still ensure that single arg functions recieve a flat input Reviewed By: mbasmanova Differential Revision: D61943875
|
This pull request was exported from Phabricator. Differential Revision: D61943875 |
1fb7610 to
c052d6a
Compare
|
This pull request has been merged in 55931e7. |
|
Conbench analyzed the 1 benchmark run on commit There were no benchmark performance regressions. 🎉 The full Conbench report has more details. |
Summary:
This change adds query configs to individually turn off expression
evaluation optimizations like dictionary peeling, dictionary
memoization, reusing shared subexpression results and deferring
lazy vector loading.
The goal is to streamline debugging in production and enable prompt
mitigation of bugs or regressions caused by the optimization or
surfaced due to it.
Note: When peeling is turned off, we still ensure that single arg
functions recieve a flat input.
Test Plan:
Added unit tests for query configs and when each optimization is
individually turned off.
Differential Revision: D61943875