[
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)