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 Fri, 12 Feb 2016 07:43:18 GMT

    [ https://issues.apache.org/jira/browse/HBASE-14490?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15144219#comment-15144219
] 

Hiroshi Ikeda commented on HBASE-14490:
---------------------------------------

{quote}
    but I was rejected in some other JIRA issue if I remember right.

Where Hiroshi Ikeda We want to save on the offheap copy to oneheap from socket for sure.
{quote}

What I said above is for writing (HBASE-14873). BoundedByteBuffer is just used for writing
data to a socket, as far as I know, and GatheringByteChannel can accept multiple byte buffers
so that discarding and re-creating direct buffers, which might cause fragmentation of the
off-heap area, is not necessary.

As to reading, in general, data for an operation has a various length, which might be quite
smaller or larger than NIO_BUFFER_LIMIT, and it doesn't seem effective to hold a given direct
buffer to prepare and execute its operation.

Besides the issue of copying, using another pool for large heap buffers might be useful to
reduce GC frequency, as described long ago.

> [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: 14490.hack.to.1.2.patch, ByteBufferPool.java, HBASE-14490-v1.patch,
HBASE-14490-v10.patch, HBASE-14490-v11.patch, HBASE-14490-v12.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, gc.png, hits.png, test-v12-patch
>
>
> Reusing buffer to read request.It's not necessary to every request free buffer.The idea
of optimization is to reduce the times that allocate ByteBuffer.
> *Modification*
> 1. {{saslReadAndProcess}} ,{{processOneRpc}}, {{processUnwrappedData}}, {{processConnectionHeader}}
accept a ByteBuffer instead of byte[].They can move {{ByteBuffer.position}} correctly when
we have read the data.
> 2. {{processUnwrappedData}} no longer use any extra memory.
> 3. Maintaining a buffer pool in each {{Connection}}.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message