Yutong Xiao created HBASE-26681: ----------------------------------- Summary: Introduce a little RAMBuffer for bucketcache to reduce gc and improve throughput Key: HBASE-26681 URL: https://issues.apache.org/jira/browse/HBASE-26681 Project: HBase Issue Type: Improvement Components: BucketCache, Performance Reporter: Yutong Xiao Assignee: Yutong Xiao Fix For: 1.7.2
In branch-1, BucketCache just allocate new onheap bytebuffer to construct new HFileBlock when get cached blocks. This rough allocation increases the GC pressure for those "hot" blocks. Here introduce a RAMBuffer for those "hot" blocks in BucketCache. The thought is simple. The RAMBuffer is an timeout expiring cache. When a Multi-level block is read twice, we cache it in the RAMBuffer. When the block timeout in the cache (e.g. 60s), that means the block is not being accessed in 60s, we evict it. Not like LRU, we do not cache block when the whole RAMBuffer size reaches to a threshold (to fit different workload, the threshold is dynamic). This will prevent the RAMBuffer from being churned. -- This message was sent by Atlassian Jira (v8.20.1#820001)