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)

Reply via email to