[
https://issues.apache.org/jira/browse/HBASE-22802?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16901803#comment-16901803
]
Zheng Hu commented on HBASE-22802:
----------------------------------
So seems we can have a check in wrapAsCacheable ? If the IOEngine is shared,
then need to pass the BucketEntry refCnt to the HFileBlock , otherwise can just
use the ByteBuff's (Read from FileIOEngine & allocate from ByteBuffAllocator)
RefCnt to construct the HFileBlock ?
Sounds reasonable, [~javaman_chen], want to try to prepare patch for this ? :-)
> Avoid temp ByteBuffer allocation in FileIOEngine#read
> -----------------------------------------------------
>
> Key: HBASE-22802
> URL: https://issues.apache.org/jira/browse/HBASE-22802
> Project: HBase
> Issue Type: Improvement
> Components: BucketCache
> Reporter: chenxu
> Priority: Major
> Attachments: profile_mem_alloc.png
>
>
> a temp ByteBuffer was allocated each time FileIOEngine#read was called
> {code:java}
> public Cacheable read(BucketEntry be) throws IOException {
> long offset = be.offset();
> int length = be.getLength();
> Preconditions.checkArgument(length >= 0, "Length of read can not be less
> than 0.");
> ByteBuffer dstBuffer = ByteBuffer.allocate(length);
> ...
> }
> {code}
> we can avoid this by use of ByteBuffAllocator#allocate(length) after
> HBASE-21879
--
This message was sent by Atlassian JIRA
(v7.6.14#76016)