[
https://issues.apache.org/jira/browse/HBASE-15177?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15118713#comment-15118713
]
Enis Soztutar commented on HBASE-15177:
---------------------------------------
These three improvements all together produce something like 7% less garbage
(40GB vs 42.3GB in 60 sec), and total GC time in 60-sec window to. reduce from
3 s 28 ms to 2 s 802 ms.
Test env:
Single node regionserver, handlers = 105, -Xmx16384m -Xmn512m, on-heap block
cache, data generated from pe sequential write, 100 byte values, fully
compacted, 24 core node, JDK-1.8.0_71, CMS. Using JFR for profiling.
Running:
{code}
hbase pe --latency --nomapred randomRead 100
{code}
> Reduce garbage created under high load
> --------------------------------------
>
> Key: HBASE-15177
> URL: https://issues.apache.org/jira/browse/HBASE-15177
> Project: HBase
> Issue Type: Improvement
> Reporter: Enis Soztutar
> Assignee: Enis Soztutar
> Fix For: 2.0.0, 1.3.0
>
>
> I have been doing some profiling of the garbage being created. The idea was
> to follow up on HBASE-14490 and experiment with offheap IPC byte buffers and
> byte buffer re-use. However, without changing the IPC byte buffers for now,
> there are a couple of (easy) improvements that I've identified from
> profiling:
> 1. RPCServer.Connection.processRequest() should work with ByteBuffer instead
> of byte[] and not-recreate CodedInputStream a few times.
> 2. RSRpcServices.getRegion() allocates two byte arrays for region, while only
> 1 is needed.
> 3. AnnotationReadingPriorityFunction is very expensive in allocations. Mainly
> it allocates the regionName byte[] to get the table name. We already set the
> priority for most of the operations (multi, get, increment, etc) but we are
> only reading the priority in case of multi. We should use the priority from
> the client side.
> Lets do the simple improvements in this patch, we can get to IPC buffer
> re-use in HBASE-14490.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)