Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

release-22.2: sql: pool some of the processor allocations #88976

Merged
merged 4 commits into from
Oct 5, 2022

Conversation

blathers-crl[bot]
Copy link

@blathers-crl blathers-crl bot commented Sep 28, 2022

Backport 2/2 commits from #88608 on behalf of @yuzefovich.
Backport 2/2 commits from #88973 on behalf of @yuzefovich.

/cc @cockroachdb/release

execinfra: fix temporary memory leak of expressions
execinfra: reuse output row allocation in the helper
sql: clarify closing contract around plan node and row source adapters
sql: pool some of the processor allocations


Release justification: low risk perf regression fix.

@blathers-crl blathers-crl bot requested a review from a team as a code owner September 28, 2022 23:18
@blathers-crl blathers-crl bot force-pushed the blathers/backport-release-22.2-88608 branch from dbab3ca to 36b1c8b Compare September 28, 2022 23:18
@blathers-crl
Copy link
Author

blathers-crl bot commented Sep 28, 2022

Thanks for opening a backport.

Please check the backport criteria before merging:

  • Patches should only be created for serious issues or test-only changes.
  • Patches should not break backwards-compatibility.
  • Patches should change as little code as possible.
  • Patches should not change on-disk formats or node communication protocols.
  • Patches should not add new functionality.
  • Patches must not add, edit, or otherwise modify cluster versions; or add version gates.
If some of the basic criteria cannot be satisfied, ensure that the exceptional criteria are satisfied within.
  • There is a high priority need for the functionality that cannot wait until the next release and is difficult to address in another way.
  • The new functionality is additive-only and only runs for clusters which have specifically “opted in” to it (e.g. by a cluster setting).
  • New code is protected by a conditional check that is trivial to verify and ensures that it only runs for opt-in clusters.
  • The PM and TL on the team that owns the changed code have signed off that the change obeys the above rules.

Add a brief release justification to the body of your PR to justify this backport.

Some other things to consider:

  • What did we do to ensure that a user that doesn’t know & care about this backport, has no idea that it happened?
  • Will this work in a cluster of mixed patch versions? Did we test that?
  • If a user upgrades a patch version, uses this feature, and then downgrades, what happens?

@blathers-crl blathers-crl bot added blathers-backport This is a backport that Blathers created automatically. O-robot Originated from a bot. labels Sep 28, 2022
@cockroach-teamcity
Copy link
Member

This change is Reviewable

@yuzefovich
Copy link
Member

Hold off on reviewing - this should go in together with #88973 which I'm still working on. We might target 22.2.1 for this.

This commit fixes the way we reuse the ProcOutputHelpers. Previously, we
would not perform the deep reset of the render expressions which could
lead to those expressions being live for longer than needed (namely till
the helper is reused the next time). This matters when the ProcessorBase
is reused which currently only happens when TableReaders are used from
the sync.Pool. This probably was a pretty bad issue before the
vectorized engine, but nowadays its impact seems minor. Still, it's good
to fix it, especially given the following commit which will introduce
more pooling of processors.

Release note: None
This commit makes it so that we reuse the output row in the
ProcOutputHelper if possible. Additionally, it removes a row alloc
object since it is not helpful and only leeds to wasteful allocations.
It also removes a redundant integer for the number of "internal
columns".

Release note: None
This commit cleans up the `rowSourceToPlanNode` adapter (from the
DistSQL processor to the planNode object) in the following manner:
- it removes the incorrect call to `ConsumerClosed` of the wrapped
input. This call was redundant (because the other side of the adapter
`planNodeToRowSource` does the closure too) but was also incorrect since
it could access the row source that was put back into the sync.Pool (and
maybe even picked up by another query). See issue 88964 for more details.
- it removes the checks around non-nil "metadata forwarder". These were
needed when the local planNode and DistSQL processor engines were merged
into one about four years ago, but nowadays the adapter always gets
a non-nil forwarder.

Release note: None
This commit makes it so that we now pool allocations of noop,
planNodeToRowSource, and columnarizer processors. Additionally,
trailing meta callbacks for these three as well as materializers
are changed to not be anonymous functions to further reduce the
allocations.

Release note: None
@yuzefovich yuzefovich force-pushed the blathers/backport-release-22.2-88608 branch from 36b1c8b to fb6d237 Compare September 30, 2022 18:04
@yuzefovich
Copy link
Member

I included #88973, but this should wait for 22.2.1 since the impact is not that significant.

@yuzefovich yuzefovich added do-not-merge bors won't merge a PR with this label. and removed do-not-merge bors won't merge a PR with this label. labels Sep 30, 2022
@yuzefovich
Copy link
Member

@DrewKimball PTAL

Copy link
Collaborator

@DrewKimball DrewKimball left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

:lgtm:

Reviewable status: :shipit: complete! 1 of 0 LGTMs obtained (waiting on @michae2 and @yuzefovich)

@yuzefovich yuzefovich merged commit ea87e95 into release-22.2 Oct 5, 2022
@yuzefovich yuzefovich deleted the blathers/backport-release-22.2-88608 branch October 5, 2022 14:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
blathers-backport This is a backport that Blathers created automatically. O-robot Originated from a bot.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants