hbase-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Hiroshi Ikeda (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HBASE-14490) [RpcServer] reuse request read buffer
Date Thu, 01 Oct 2015 15:37:27 GMT

    [ 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}}
> * 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

View raw message