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