Details
-
Improvement
-
Status: Closed
-
Major
-
Resolution: Duplicate
-
None
-
None
-
None
Description
Was browsing the LRU eviction code and came upon some very inefficient code. When we do eviction, BlockBucket.free() calls queue.get() which first inserts everything from the PriorityQueue<Block> into a LinkedList, then copies that entire linked list into an array. We then iterate over usually just a small percentage of the array to free some blocks until we have freed the requested amount.
We ought to be able to just pull items out of the PriorityQueue directly and avoid all the churn.
Attachments
Issue Links
- is related to
-
HBASE-2945 stop using string for block name in LRU block cache/hfile
- Closed