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>