[ 
https://issues.apache.org/jira/browse/IMPALA-12433?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Csaba Ringhofer resolved IMPALA-12433.
--------------------------------------
    Fix Version/s: Impala 4.4.0
       Resolution: Fixed

> KrpcDataStreamSender could share some buffers between channels
> --------------------------------------------------------------
>
>                 Key: IMPALA-12433
>                 URL: https://issues.apache.org/jira/browse/IMPALA-12433
>             Project: IMPALA
>          Issue Type: Improvement
>          Components: Backend
>            Reporter: Csaba Ringhofer
>            Priority: Major
>              Labels: memory-saving, performance
>             Fix For: Impala 4.4.0
>
>
> Currently each channel has two outbound row batches and each of those have 2 
> buffers, one for serialization and another for compression.
> https://github.com/apache/impala/blob/0f55e551bc98843c79a9ec82582ddca237aa4fe9/be/src/runtime/row-batch.h#L100
> https://github.com/apache/impala/blob/0f55e551bc98843c79a9ec82582ddca237aa4fe9/be/src/runtime/krpc-data-stream-sender.cc#L236
> https://github.com/apache/impala/blob/0f55e551bc98843c79a9ec82582ddca237aa4fe9/fe/src/main/java/org/apache/impala/planner/DataStreamSink.java#L81
> As serialization + compression is always done from the fragment instance 
> thread only one compression is done at a time, so a single compression buffer 
> could be shared between channels. If this buffer is sent via KRPC then it 
> could be swapped with the per channel buffer. 
> As far as I understand at least one buffer per channel is needed because  
> async KRPC calls can use it from another thread (this is done to avoid an 
> extra copy of the buffer before RPCs). We can only reuse that buffer after 
> getting a callback from KRPC.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to