[ https://issues.apache.org/jira/browse/HBASE-14490?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14940110#comment-14940110 ]
Zephyr Guo commented on HBASE-14490: ------------------------------------ Yes, large buffer more useful and pooI is troublesome. I find a silly wrong...I use buffer in {{Connection}}, but multi Connection share one {Reader}(single thread). I should maintain a suitable buffer each Reader.It's a easy way for optimizing. Shared pool is a perfect way but we need a low cost way of sharing.I will think on it.It can be another issue? very thanks. > [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)