Details
-
Sub-task
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
Impala 2.2
-
None
-
None
-
ghx-label-6
Description
The DataStreamSender allocates row batches in whatever thread handles the TransmitData() RPC, but then deallocates them in the fragment instance thread.
That is an anti-pattern for tcmalloc. Instead we should see if we can recycle the row batches where possible.
We could try to 'pin' row batches to service threads, and give them each a thread-local ability to reallocate row batch data - the key is ensuring that the deallocations happen on the same thread, so we can't just give each sender a list of row batches because that sender may be handled by different service pool threads.
Alternatively we can try to cut down on the number of allocations, but that's hard to do with cross-thread coordination.
Attachments
Issue Links
- blocks
-
IMPALA-5528 tcmalloc contention much higher with concurrency after KRPC patch
- Resolved
- is blocked by
-
IMPALA-6519 Allow atomic allocation of an unreserved buffer
- Resolved
- is related to
-
IMPALA-6359 Blocking in Service threads due to tcmalloc contention due to memory allocations for RowBatch::Deserialize
- Resolved