Charles Connell created HBASE-29253: ---------------------------------------
Summary: Avoid allocating a new closure on every row processed by StoreScanner Key: HBASE-29253 URL: https://issues.apache.org/jira/browse/HBASE-29253 Project: HBase Issue Type: Improvement Reporter: Charles Connell Assignee: Charles Connell I've looked at a lot of allocation profiles of RegionServers doing a read-heavy workload. Some allocations that dominate the chart can be easily avoided. The method {{StoreScanner#read()}} contains this code {code} heap.recordBlockSize(blockSize -> { if (rpcCall.isPresent()) { rpcCall.get().incrementBlockBytesScanned(blockSize); } scannerContext.incrementBlockProgress(blockSize); }); {code} that runs for every iteration of its main loop. On the attached profile, the resulting closures account for 11% of the allocations done. A closure can be created before the loop and re-used instead. -- This message was sent by Atlassian Jira (v8.20.10#820010)