[ 
https://issues.apache.org/jira/browse/HBASE-12684?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jurriaan Mous updated HBASE-12684:
----------------------------------
    Attachment: HBASE-12684-v20.patch
                HBASE-12684-v20-heapBuffer.patch

- Move to a pooled allocator. (It can make some serious difference with large 
writes as this twitter blog shows: 
https://blog.twitter.com/2013/netty-4-at-twitter-reduced-gc-overhead)
- Do not flush the preamble since it will be automatically flushed on any next 
write. (Saves an early sys call)
- Add a timeout to the Promise so it will also be a timed wait like old client. 
(This was the extra Object method call) I don't see anything else strange 
happening in that bit deeper stack.
- Disable the ResourceLeakDetector. (Which is by default sampling some bytebufs 
to check for leaks)

Added a heapBuffer variant of the patch. It seams buffer() is the same as 
directBuffer() on a modern OS since Netty recommends direct buffers. A 
heapBuffer() call will always get a heap buffer.

I hope this moves the scale in the right direction on the larger loads.

bq. (These are random reads – that ok?)

A random write workload should be fine as long as there is some serious RPC 
work to be done :)

> Add new AsyncRpcClient
> ----------------------
>
>                 Key: HBASE-12684
>                 URL: https://issues.apache.org/jira/browse/HBASE-12684
>             Project: HBase
>          Issue Type: Improvement
>          Components: Client
>            Reporter: Jurriaan Mous
>            Assignee: Jurriaan Mous
>         Attachments: HBASE-12684-DEBUG2.patch, HBASE-12684-DEBUG3.patch, 
> HBASE-12684-v1.patch, HBASE-12684-v10.patch, HBASE-12684-v11.patch, 
> HBASE-12684-v12.patch, HBASE-12684-v13.patch, HBASE-12684-v14.patch, 
> HBASE-12684-v15.patch, HBASE-12684-v16.patch, HBASE-12684-v17.patch, 
> HBASE-12684-v17.patch, HBASE-12684-v18.patch, HBASE-12684-v19.1.patch, 
> HBASE-12684-v19.patch, HBASE-12684-v19.patch, HBASE-12684-v2.patch, 
> HBASE-12684-v20-heapBuffer.patch, HBASE-12684-v20.patch, 
> HBASE-12684-v3.patch, HBASE-12684-v4.patch, HBASE-12684-v5.patch, 
> HBASE-12684-v6.patch, HBASE-12684-v7.patch, HBASE-12684-v8.patch, 
> HBASE-12684-v9.patch, HBASE-12684.patch, requests.png
>
>
> With the changes in HBASE-12597 it is possible to add new RpcClients. This 
> issue is about adding a new Async RpcClient which would enable HBase to do 
> non blocking protobuf service communication.
> Besides delivering a new AsyncRpcClient I would also like to ask the question 
> what it would take to replace the current RpcClient? This would enable to 
> simplify async code in some next issues.



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

Reply via email to