[
https://issues.apache.org/jira/browse/HBASE-26681?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Yutong Xiao updated HBASE-26681:
--------------------------------
Attachment: Properties.png
> 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
> Priority: Major
> Fix For: 1.7.2
>
> Attachments: Hit 100%.png, Properties.png
>
>
> 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.
> {panel:title=The performance of RAMBuffer with its hit ratio is 100%}
> !Hit 100%.png!
> {panel}
> I also did a YCSB performance test.
> The circumstance is:
> Size of BucketCache: 40 GB
> {panel:title=YCSB Test}
> Some text with a title
> {panel}
--
This message was sent by Atlassian Jira
(v8.20.1#820001)