[
https://issues.apache.org/jira/browse/HBASE-14490?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14939979#comment-14939979
]
Hiroshi Ikeda commented on HBASE-14490:
---------------------------------------
I think you have decided to keep objects in old generation. It is more possible
for large buffers to be moved in old generation while receiving data, and
keeping large buffers instead of small buffers is meaningful if any. Think a
shared pool of large buffers, but be careful that blocking and causing a
context switch has the same cost as creating about 100 objects, while just
non-congested synchronization has the same cost of about just creating one
object (according to my old java book). Keeping small buffers is relatively
meaningless.
> [RpcServer] reuse request read buffer
> -------------------------------------
>
> Key: HBASE-14490
> URL: https://issues.apache.org/jira/browse/HBASE-14490
> Project: HBase
> Issue Type: Improvement
> Components: IPC/RPC
> Affects Versions: 2.0.0, 1.0.2
> Reporter: Zephyr Guo
> Assignee: Zephyr Guo
> Labels: performance
> Fix For: 2.0.0, 1.0.2
>
> Attachments: HBASE-14490-v1.patch, HBASE-14490-v10.patch,
> HBASE-14490-v2.patch, HBASE-14490-v3.patch, HBASE-14490-v4.patch,
> HBASE-14490-v5.patch, HBASE-14490-v6.patch, HBASE-14490-v7.patch,
> HBASE-14490-v8.patch, HBASE-14490-v9.patch
>
>
> Reuse buffer to read request.It's not necessary free data's buffer for each
> request.Optimization is to reduce the times that allocate ByteBuffer.
> *patch modification*
> * {{saslReadAndProcess}} and {{processOneRpc}} accept a ByteBuffer instead of
> byte[].
> * {{processUnwrappedData}} can reuse the same ByteBuffer that
> {{saslReadAndProcess}} used.
> * Maintaining a reused ByteBuffer each {{Connection}} for small request.
> ** Buffer size is fixed.
> ** Using a SoftReference to reference the buffer.
> ** If request is too large, we allocate a temporary ByteBuffer.Freeing it
> when {{process()}} will have been finished.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)