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

Biju Nair commented on HBASE-22531:
-----------------------------------

Thanks for the clarification [~openinx]. You want to change the status of the 
ticket to {{patch available}} so that it can be verified and merged?

> The HFileReaderImpl#shouldUseHeap return the incorrect true when disabled 
> BlockCache 
> -------------------------------------------------------------------------------------
>
>                 Key: HBASE-22531
>                 URL: https://issues.apache.org/jira/browse/HBASE-22531
>             Project: HBase
>          Issue Type: Sub-task
>            Reporter: Zheng Hu
>            Assignee: Zheng Hu
>            Priority: Major
>         Attachments: HBASE-22531.HBASE-21879.v1.patch, 
> async-prof-pid-13311-alloc-4.svg, async-prof-pid-8590-alloc-2.svg
>
>
> I'm having a benchmark with block cache disabled for HBASE-21879 branch.   
> Just caurious about why still so many heap allocation in the heap allocation 
> flame graph [async-prof-pid-13311-alloc-4.svg | 
> https://issues.apache.org/jira/secure/attachment/12970648/async-prof-pid-13311-alloc-4.svg],
>    actually, I've set the following config, which means all allocation should 
>  be offheap, while it's not: 
> {code}
> # Disable the block cache
> hfile.block.cache.size=0
> hbase.ipc.server.reservoir.minimal.allocating.size=0   # Let all allocation 
> from pooled allocator. 
> {code}
> Checked the code,  I found the problem here: 
> {code}
>   private boolean shouldUseHeap(BlockType expectedBlockType) {
>     if (cacheConf.getBlockCache() == null) {
>       return false;
>     } else if (!cacheConf.isCombinedBlockCache()) {
>       // Block to cache in LruBlockCache must be an heap one. So just 
> allocate block memory from
>       // heap for saving an extra off-heap to heap copying.
>       return true;
>     }
>     return expectedBlockType != null && !expectedBlockType.isData();
>   }
> {code}
> Say, the CacheConfig#getBlockCache  will return a Optional<BlockCache>,  
> which is always non-null: 
> {code}
>   /**
>    * Returns the block cache.
>    *
>    * @return the block cache, or null if caching is completely disabled
>    */
>   public Optional<BlockCache> getBlockCache() {
>     return Optional.ofNullable(this.blockCache);
>   }
> {code}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to