[
https://issues.apache.org/jira/browse/HBASE-12684?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14265324#comment-14265324
]
Jurriaan Mous commented on HBASE-12684:
---------------------------------------
Thanks for the performance test!
bq. The async rpc client is running slower, about 15% less throughput (see
below for more detail).
This needs to be improved!
bq. Async client is doing await on future/promise or we are allocating a direct
buffer.
The await is not something that can change with the current blocking usage and
the sync and async client should both block in a comparable way. I think I have
done all I can here but will see if anything can help here by moving some work
to other threads in the Netty EventLoop.
And it seems that the direct buffer disadvantages are working against us. I
will look into this more and swap them with heap buffers were necessary.
bq. You can't use a netty bytebuf pool? (Direct buffer allocation is slow)
I thought I was using a pooled buffer by using channel.alloc() to get them. The
documentation I read about it suggested a pool was the default allocator. But
looking into what is happening in code I get an unpooled allocator. (As your
stack trace also shows) This is certainly not good and I will switch this to a
Netty PooledByteBufAllocator and configure it with some defaults the Netty
experts are suggesting.
I will return to this tomorrow! Again thanks!
> 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-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
>
>
> 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)