hbase-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Zephyr Guo (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HBASE-14490) [RpcServer] reuse request read buffer
Date Tue, 10 Nov 2015 15:04:11 GMT

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

Zephyr Guo commented on HBASE-14490:
------------------------------------

[~ikeda]
{quote}
you must have used one or two connection(s) from the client.
{quote}
I use YCSB with 25 threads.Because read request is small usually, do once {{readAndProcess()}}
can get full data from socket. Then Reader will put buffer back immediately. Reader is single
thread that maintain many Connections.If most of the Connection do read request, it may need
a buffer only.
{quote}
BoundedByteBufferPool uses locks inside but this benchmark might not expose its disadvantage.
{quote}
Both {{ConcurrentLinkedDeque}} and {{ReentrantLock}} base on CAS.They will lead to waiting
in fact.
https://en.wikipedia.org/wiki/Non-blocking_algorithm
{quote}
I just noticed that your patch is not equivalent to the original code when using SASL. Zephyr
Guo have you confirmed that is OK?
{quote}
Yes. What is wrong i missed?

> [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: 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, 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