hbase-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Nicolas Liochon (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HBASE-9535) Try a pool of direct byte buffers handling incoming ipc requests
Date Sun, 01 Dec 2013 13:10:35 GMT

    [ https://issues.apache.org/jira/browse/HBASE-9535?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13836022#comment-13836022
] 

Nicolas Liochon commented on HBASE-9535:
----------------------------------------

bq. You have diff of GC use?
Not really. I've looked at the gc through the profile, it was around 4 minor gc/s with CMS,
1/s with G1, w/ or w/o the patch. I don't think the patch makes a difference in this scenario,
as with YCSB puts we have a few large allocations, instead of ismultiple tiny ones. So for
this scenario I think the benefit comes from the array copy suppressed. 

> Try a pool of direct byte buffers handling incoming ipc requests
> ----------------------------------------------------------------
>
>                 Key: HBASE-9535
>                 URL: https://issues.apache.org/jira/browse/HBASE-9535
>             Project: HBase
>          Issue Type: Brainstorming
>            Reporter: stack
>            Assignee: Nicolas Liochon
>         Attachments: 9535.v1.patch, 9535.v2-trunk.patch, 9535.v2.patch, 9535.v3.patch
>
>
> ipc takes in a query by allocating a ByteBuffer of the size of the request and then reading
off the socket into this on-heap BB.
> Experiment with keeping a pool of BBs so we have some buffer reuse to cut on garbage
generated.  Could checkout from pool in RpcServer#Reader.  Could check back into the pool
when Handler is done just before it queues the response on the Responder's queue.  We should
be good since, at least for now, kvs get copied up into MSLAB (not references) when data gets
stuffed into MemStore; this should make it so no references left over when we check the BB
back into the pool for use next time around.
> If on-heap BBs work, we could then try direct BBs (Allocation of DBBs takes time so if
already allocated, should be good.  GC of DBBs is a pain but if in a pool, we shouldn't be
wanting this to happen).  The copy from socket to the DBB will be off-heap (should be fast).
> Could start w/ the HDFS DirectBufferPool.  It is unbounded and keeps items by size (we
might want to bypass the pool if an object is > size N).
> DBBs for this task would contend w/ offheap BBs used in BlockReadLocal when short-circuit
reading.  It'd be a bummer if we had to allocate big objects on-heap.  Would still be an improvement.



--
This message was sent by Atlassian JIRA
(v6.1#6144)

Mime
View raw message