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

Reply via email to