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)