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

Handle Deserialization off of Transport Threads if Action is Forking #66828

Conversation

original-brownbear
Copy link
Member

We can push deserialization off to the handling thread-pool instead of doing it on the transport threads
when forking anyway. In case of very large messages like bulk request that can take on the order of a second
to fully deserialize this prevents clusters from becoming unstable because transport threads become randomly
blocked on this kind of deserialization work.
Also, on balance this change could reduce load from GC because we trade longer lived buffers that are cheap to recycle
for shorter lived concrete deserialized transport messages. On the flip-side of things, for smaller messages the overhead
from keeping buffers for longer (buffer page size > message size) increases memory use in some cases potentially.

We can push deserialization off to the handling threadpool instead of doing it on the transport threads
when forking anyway. In case of very large messages like bulk request that can take on the order of a second
to fully deserialize this prevents clusters from becoming unstable because transport threads become randomly
blocked on this kind of deserialization work.
Also, on balance this change could reduce load from GC because we trade longer lived buffers that are cheap to recycle
for shorter lived concrete deserialized transport messages. On the flipside of things, for smaller messages the overhead
from keeping buffers for longer (buffer page size > message size) increases memory use in some cases potentially.
@elasticmachine elasticmachine added the Team:Distributed (Obsolete) Meta label for distributed team (obsolete). Replaced by Distributed Indexing/Coordination. label Dec 28, 2020
@elasticmachine
Copy link
Collaborator

Pinging @elastic/es-distributed (Team:Distributed)

@danhermann danhermann added v8.1.0 and removed v7.16.0 labels Oct 27, 2021
@arteam arteam removed the v8.0.0 label Jan 12, 2022
@mark-vieira mark-vieira added v8.2.0 and removed v8.1.0 labels Feb 2, 2022
@elasticsearchmachine elasticsearchmachine changed the base branch from master to main July 22, 2022 23:12
@mark-vieira mark-vieira added v8.5.0 and removed v8.4.0 labels Jul 27, 2022
@csoulios csoulios added v8.6.0 and removed v8.5.0 labels Sep 21, 2022
@kingherc kingherc added v8.7.0 and removed v8.6.0 labels Nov 16, 2022
@original-brownbear
Copy link
Member Author

closing this one, part of this has been introduced in #91367

@original-brownbear original-brownbear removed >non-issue :Distributed Coordination/Network Http and internode communication implementations Team:Distributed (Obsolete) Meta label for distributed team (obsolete). Replaced by Distributed Indexing/Coordination. v8.7.0 labels Dec 28, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.