Uploaded image for project: 'HBase'
  1. HBase
  2. HBASE-28012

Avoid CellUtil.cloneRow in BufferedEncodedSeeker

    XMLWordPrintableJSON

Details

    • Reviewed

    Description

      A RegionServer running a workload that consisted of mostly reverse (and some forward) scans of thousands of tall (36 byte rows) under moderate read pressure (based on block bytes scanned) saw near 100% CPU usage. We noticed that the high CPU usage tended to correlate with more reverse scan quantity and the throughput of the server running more reverse scans was vastly lower than expectation. 

       

      A flame graph of the Region Server at 100% CPU usage. Analysis of the flamegraph reveals that each seek for a reverse scan (which has more seeks than the forward seek path) has 2 CellUtil.cloneRow rowkey copies per seek. These CellUtil#cloneRow calls can be removed from this code path for off-heap cells in a similar fashion to HBASE-27146

      Attachments

        1. rs-reversescan-flamegraph.html
          204 kB
          Becker Ewing

        Issue Links

          Activity

            People

              bewing Becker Ewing
              bewing Becker Ewing
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: