You are viewing a plain text version of this content. The canonical link for it is here.
Posted to reviews@kudu.apache.org by "David Ribeiro Alves (Code Review)" <ge...@cloudera.org> on 2016/11/27 02:09:44 UTC

[kudu-CR] KUDU-798 (part 2) Remove automatic safe time adjustment from mvcc

Hello Mike Percy, Kudu Jenkins,

I'd like you to reexamine a change.  Please visit

    http://gerrit.cloudera.org:8080/5057

to look at the new patch set (#6).

Change subject: KUDU-798 (part 2) Remove automatic safe time adjustment from mvcc
......................................................................

KUDU-798 (part 2) Remove automatic safe time adjustment from mvcc

This patch completely removes the APIs that allow automatic timestamp
assignment and safe time adjustment from Mvcc.

The previous patch had taken care of making sure these APIs were
unused in regular TabletServer operations. This patch completes
that by removing the APIs from Mvcc and changing tests appropriately.

Because timestamp assignment and transaction start are now done
under a lock, this does have some impact on some tests like
mt-tablet-test. I measured about 10% slowdown on an mvcc-stressing
config of mt-tablet-test (perf stats in the end of this commit
message).

However this patch series does not add any overhead on the actual
tablet server write path. In fact this even simplifies it in some
circumstances (for instance we were advancing safe time twice for
leader side txns, one when it was consensus committed and one when
the apply was complete). Due to this there was even a moderate
perf gain in this more important case of about 9%.

===================================================================
full_stack-insert-scan-test run config:

bin/full_stack-insert-scan-test \
--gtest_filter=*MRSOnlyStressTest* \
--inserts_per_client=200000 \
--concurrent_inserts=10 \
--rows_per_batch=1 \
--skip_scans

Results on master before this patch series:

     344086.766163 task-clock                #    5.659 CPUs utilized
        14,435,389 context-switches          #    0.042 M/sec
            91,225 cpu-migrations            #    0.265 K/sec
           112,036 page-faults               #    0.326 K/sec
   956,637,266,040 cycles                    #    2.780 GHz
   <not supported> stalled-cycles-frontend
   <not supported> stalled-cycles-backend
   577,637,169,921 instructions              #    0.60  insns per cycle
   109,720,205,884 branches                  #  318.874 M/sec
       730,807,372 branch-misses             #    0.67% of all branches

      60.807013290 seconds time elapsed

Results on master after this patch series:

     328574.272742 task-clock                #    5.932 CPUs utilized
        13,820,330 context-switches          #    0.042 M/sec
           170,370 cpu-migrations            #    0.519 K/sec
           111,997 page-faults               #    0.341 K/sec
   911,264,247,114 cycles                    #    2.773 GHz
   <not supported> stalled-cycles-frontend
   <not supported> stalled-cycles-backend
   572,898,176,369 instructions              #    0.63  insns per cycle
   108,872,113,035 branches                  #  331.347 M/sec
       728,934,228 branch-misses             #    0.67% of all branches

      55.387672052 seconds time elapsed

===================================================================
mt-tablet-test run config:

bin/mt-tablet-test \
--gtest_filter=*0*DoTestAllAtOnce* \
--num_counter_threads=0 \
--num_slowreader_threads=0 \
--flusher_backoff=1.0 \
--flusher_initial_frequency_ms=10000 \
--inserts_per_thread=1000000 \
--num_summer_threads=0 \
--gtest_repeat=3 \
--tablet_test_flush_threshold_mb=2000 \
--minloglevel=10

Results on master before this patch series:

     618894.806683 task-clock                #    7.716 CPUs utilized
         7,243,713 context-switches          #    0.012 M/sec
               782 cpu-migrations            #    0.001 K/sec
         1,457,677 page-faults               #    0.002 M/sec
 1,794,712,092,284 cycles                    #    2.900 GHz
   <not supported> stalled-cycles-frontend
   <not supported> stalled-cycles-backend
   648,757,335,519 instructions              #    0.36  insns per cycle
   128,766,989,780 branches                  #  208.060 M/sec
       790,345,583 branch-misses             #    0.61% of all branches

      80.204388663 seconds time elapsed

Result on master after this patch series:

     620594.911121 task-clock                #    7.012 CPUs utilized
        17,645,922 context-switches          #    0.028 M/sec
             1,163 cpu-migrations            #    0.002 K/sec
         1,252,812 page-faults               #    0.002 M/sec
 1,775,937,664,119 cycles                    #    2.862 GHz
   <not supported> stalled-cycles-frontend
   <not supported> stalled-cycles-backend
   757,882,564,990 instructions              #    0.43  insns per cycle
   155,500,757,477 branches                  #  250.567 M/sec
       982,110,478 branch-misses             #    0.63% of all branches

      88.500973260 seconds time elapsed

Change-Id: I6cd0b8aa52e4b0f5c0f4872d806e76387f6b9538
---
M src/kudu/tablet/compaction-test.cc
M src/kudu/tablet/deltamemstore-test.cc
M src/kudu/tablet/diskrowset-test-base.h
M src/kudu/tablet/diskrowset-test.cc
M src/kudu/tablet/local_tablet_writer.h
M src/kudu/tablet/memrowset-test.cc
M src/kudu/tablet/mvcc-test.cc
M src/kudu/tablet/mvcc.cc
M src/kudu/tablet/mvcc.h
M src/kudu/tablet/tablet.cc
M src/kudu/tablet/tablet.h
M src/kudu/tablet/tablet_bootstrap.cc
M src/kudu/tablet/transactions/transaction_driver.cc
13 files changed, 184 insertions(+), 273 deletions(-)


  git pull ssh://gerrit.cloudera.org:29418/kudu refs/changes/57/5057/6
-- 
To view, visit http://gerrit.cloudera.org:8080/5057
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-MessageType: newpatchset
Gerrit-Change-Id: I6cd0b8aa52e4b0f5c0f4872d806e76387f6b9538
Gerrit-PatchSet: 6
Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-Owner: David Ribeiro Alves <dr...@apache.org>
Gerrit-Reviewer: Alexey Serbin <as...@cloudera.com>
Gerrit-Reviewer: Jean-Daniel Cryans <jd...@apache.org>
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Mike Percy <mp...@apache.org>
Gerrit-Reviewer: Tidy Bot
Gerrit-Reviewer: Todd Lipcon <to...@apache.org>