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