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

RegionCoprocessorHost System.nanoTime() performance bottleneck

    XMLWordPrintableJSON

Details

    • Incompatible change, Reviewed

    Description

      The tracking of execution time of coprocessor methods introduced in HBASE-11516 introduces 2 calls to System.nanoTime() per coprocessor method per coprocessor. This is resulting in a serious performance bottleneck in certain scenarios.

      For example consider the scenario where many rows are being ingested (PUT) in a table which has multiple coprocessors (we have up to 20 coprocessors). This results in 8 extra calls to System.nanoTime() per coprocessor (prePut, postPut, postStartRegionOperation and postCloseRegionOperation) which has in total (i.e. times 20) been seen to result in a 50% increase of execution time.

      I think it is generally considered bad practice to measure execution times on such a small scale (per single operation). Also note that measurements are taken even for coprocessors that do not even have an actual implementation for certain operations, making the problem worse.

      Attachments

        1. HBASE-14205.patch
          17 kB
          Andrew Kyle Purtell

        Issue Links

          Activity

            People

              apurtell Andrew Kyle Purtell
              janvanbesien Jan Van Besien
              Votes:
              0 Vote for this issue
              Watchers:
              13 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: