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)