Details

    • Sub-task
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • None
    • 2.0.0
    • Performance
    • None
    • Hide
      In here we perf tested a realignment of the write pipeline and mvcc handling. Thought was that this work was a predicate for a general fix of HBASE-14460 (turns out, realignment of write path was not needed to fix the increment perf regression). The perf testing here made it so we were able to simplify writing. HBASE-15158 was just committed. This work is done.
      Show
      In here we perf tested a realignment of the write pipeline and mvcc handling. Thought was that this work was a predicate for a general fix of HBASE-14460 (turns out, realignment of write path was not needed to fix the increment perf regression). The perf testing here made it so we were able to simplify writing. HBASE-15158 was just committed. This work is done.

    Description

      This issue is about perf testing a redo of the write pipeline so that rather than:

      • take rowlock
      • start mvcc
      • append to WAL
      • add to memstore
      • sync WAL
      • let go of rowlock
      • finish up mvcc

      instead.... try...

      • take rowlock
      • start mvcc
      • append to WAL
      • sync WAL
      • add to memstore
      • finish up mvcc
      • let go of rowlock

      The latter is more straight-forward undoing need of rolling back memstore if all does not succeed.

      It might be slower though. This issue is a look-see/try it.

      The redo will also help address the parent issue in a more general way so we can do without the special-casing done for branch-1.0 and branch-1.1 done in a sibling subtask.

      Other benefits are that the current write pipeline is copy/pasted in a few places – in append, increment and checkand* – and a refactor will allow us to fix this duplication.

      Attachments

        1. patched.workloadw.80percentwrites.json
          2 kB
          Michael Stack
        2. notpatched.workloadw.80percentwrites.json
          2 kB
          Michael Stack
        3. nopatch.png
          48 kB
          Michael Stack
        4. patched.png
          46 kB
          Michael Stack
        5. compare.png
          99 kB
          Michael Stack
        6. ops.png
          44 kB
          Michael Stack
        7. gc.png
          36 kB
          Michael Stack
        8. 50threads_ycsb.png
          32 kB
          Michael Stack
        9. call_times_0-1_and_1-3_ycsb.png
          31 kB
          Michael Stack
        10. writes.png
          14 kB
          Michael Stack
        11. latencies.png
          23 kB
          Michael Stack
        12. all_under_lock.svg
          1.31 MB
          Michael Stack
        13. all_under_lock.patch
          3 kB
          Michael Stack
        14. 1.2.svg
          1.39 MB
          Michael Stack
        15. 1.2.v2.svg
          1.32 MB
          Michael Stack

        Activity

          People

            stack Michael Stack
            stack Michael Stack
            Votes:
            0 Vote for this issue
            Watchers:
            9 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: