You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@hbase.apache.org by "Andrew Kyle Purtell (Jira)" <ji...@apache.org> on 2022/06/11 23:49:00 UTC

[jira] [Resolved] (HBASE-23277) CompactedHFilesDischarger may lead to high cpu usage

     [ https://issues.apache.org/jira/browse/HBASE-23277?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Andrew Kyle Purtell resolved HBASE-23277.
-----------------------------------------
    Resolution: Incomplete

> CompactedHFilesDischarger may lead to  high cpu usage
> -----------------------------------------------------
>
>                 Key: HBASE-23277
>                 URL: https://issues.apache.org/jira/browse/HBASE-23277
>             Project: HBase
>          Issue Type: Brainstorming
>            Reporter: junfei liang
>            Priority: Minor
>         Attachments: compated_discharger.png
>
>
> in one of  online cluster(RS:16C72G, hbase version is 2.x) ,  cpu average usage is 30%,  but cpu usage may above 80%  occasionally.  by a  enchanced 'top -H' script, i find  'RS_COMPACTED_FILES_DISCHARGER' threads can use  50%+ cpu ( 10 * 80% ).  
>  
> !compated_discharger.png|width=1168,height=454!
>  
> by jstack , we found most of stacks is at.
>  "org.apache.hadoop.hbase.io.hfile.LruBlockCache#evictBlocksByHfileName"
>    public int evictBlocksByHfileName(String hfileName) {
>       int numEvicted = 0;
>       for (BlockCacheKey key : map.keySet()) {
>          if (key.getHfileName().equals(hfileName)) {
>              if (evictBlock(key))
>              ++numEvicted;
>          }
>       }
>       if (victimHandler != null) {
>           numEvicted += victimHandler.evictBlocksByHfileName(hfileName);
>       }
>       return numEvicted;
>  }
>  
> when close storefile, now we evict it's blocks from cache,  but we have to  traverse the whole blockcache to locate the block cached, and can lead to high cpu usage.
> do we need evict blockcache when close file, even for a small file ( size less than 10MB)?  it's a lru block cache, the unused block will be automatically removed from cache when blockcache usage is high?  
>  



--
This message was sent by Atlassian Jira
(v8.20.7#820007)