├── 2pl_software.pdf ├── AUTHORS ├── BUILD ├── CMakeLists.txt ├── LICENSE ├── Makefile ├── README.md ├── allocator.cc ├── allocator.h ├── amd64.h ├── analytics ├── POC │ └── read.cc ├── README.md ├── ReadStats │ └── produce_read_io_report.py ├── Scripts │ ├── all_run.sh │ └── exe.sh ├── WriteStats │ ├── countPy.py │ ├── gen_io_graphs.py │ ├── gencsv.py │ └── run.py └── reports │ ├── init_report.csv │ └── scaled_report.png ├── b0.sh ├── b1.sh ├── b2.sh ├── base_txn_btree.h ├── batch_silo.sh ├── batch_size_exp.sh ├── bench-replay_only.py ├── bench-silo_paxos.py ├── benchmark_eval.py ├── benchmarks ├── abstract_db.h ├── abstract_ordered_index.h ├── bench.cc ├── bench.h ├── bid.cc ├── common.h ├── data │ ├── test │ ├── tpcc_final │ ├── tpcc_new │ └── tpcc_rmw ├── dbclient.cc ├── dbtest.cc ├── encstress.cc ├── gc_runner.sh ├── kvdb_wrapper.h ├── kvdb_wrapper_impl.h ├── mbta_wrapper.hh ├── mbta_wrapper_arena.hh ├── mbta_wrapper_norm.hh ├── micro_bench.cc ├── ndb_wrapper.h ├── ndb_wrapper_impl.h ├── paxos_async_commit_test.cc ├── paxos_async_commit_test.sh ├── plotter.py ├── queue.cc ├── results │ ├── NOTES.txt │ ├── ben-3-8-13.py │ ├── ben-4-10-13.py │ ├── istc11-3-13-13.py │ ├── istc11-3-14-13.py │ ├── istc11-3-16-13.py │ ├── istc11-3-18-13.py │ ├── istc11-3-21-13.py │ ├── istc11-3-22-13.py │ ├── istc11-3-23-13.py │ ├── istc11-3-26-13.py │ ├── istc11-4-10-13.py │ ├── istc11-5-18-13-tpcc-chains.txt │ ├── istc11-5-18-13-ycsb-chains.txt │ ├── istc11-5-18-13.py │ ├── istc11-8-28-13_cameraready.py │ ├── istc12-8-30-13_cameraready.py │ ├── istc3-10-23-13.py │ ├── istc3-7-27-13.py │ ├── istc3-7-31-13.py │ ├── istc3-8-1-13.py │ ├── istc3-8-1-13_compress.py │ ├── istc3-8-1-13_fake_compress.py │ ├── istc3-8-1-13_fake_writes.py │ ├── istc3-8-1-13_fake_writes_stride.py │ ├── istc3-8-1-13_fake_writes_stride1.py │ ├── istc3-8-1-13_log_reduce_size.py │ ├── istc3-8-1-13_log_reduce_size_1.py │ ├── istc3-8-1-13_log_reduce_size_nofsync.py │ ├── istc3-8-1-13_newbench.py │ ├── istc3-8-12-13.py │ ├── istc3-8-16-13_multipart_skew.py │ ├── istc3-8-19-13_cameraready.py │ ├── istc3-8-21-13_cameraready-1.py │ ├── istc3-8-21-13_cameraready.py │ ├── istc3-8-22-13_cameraready.py │ ├── istc3-8-22-13_cameraready_2.py │ ├── istc3-8-23-13_cameraready.py │ ├── istc3-8-24-13_cameraready.py │ ├── istc3-9-6-13.py │ ├── istc3-9-8-13.py │ ├── make_graphs-2.py │ ├── make_graphs-3.py │ ├── make_graphs-4.py │ ├── make_graphs-5.py │ ├── make_graphs-6.py │ ├── make_graphs.py │ ├── tom-1-22-13.py │ ├── tom-2-13-13.py │ └── tom-2-6-13.py ├── runner.py ├── stats_runner.py ├── sto │ ├── .gitignore │ ├── .gitmodules │ ├── BENCHMARKS.md │ ├── Boosting.cc │ ├── Boosting_common.hh │ ├── Boosting_fastset.hh │ ├── Boosting_list.hh │ ├── Boosting_lockkey.hh │ ├── Boosting_locks.hh │ ├── Boosting_map.hh │ ├── Boosting_standalone.cc │ ├── Boosting_standalone.hh │ ├── Boosting_sto.hh │ ├── Boosting_tl2.hh │ ├── Box.hh │ ├── Debug_rcu.hh │ ├── EncDecode.cc │ ├── GNUmakefile.in │ ├── Hashtable.hh │ ├── IntStr.hh │ ├── Interface.hh │ ├── List.hh │ ├── List1.hh │ ├── MassDirect.hh │ ├── MassTrans.cc │ ├── MassTrans.hh │ ├── OutputDataSerializer.cpp │ ├── OutputDataSerializer.h │ ├── Packer.cc │ ├── Packer.hh │ ├── PriorityQueue.hh │ ├── PriorityQueue1.hh │ ├── Queue.hh │ ├── RBTree.hh │ ├── RBTreeInternal.hh │ ├── README.md │ ├── ReplayDB.cc │ ├── ReplayDB.h │ ├── SerializeUtility.cpp │ ├── SerializeUtility.h │ ├── SingleElem.hh │ ├── StringWrapper.hh │ ├── TArray.hh │ ├── TArrayProxy.hh │ ├── TBox.hh │ ├── TCounter.hh │ ├── TGeneric.hh │ ├── TIntPredicate.hh │ ├── TIntRange.hh │ ├── TRcu.cc │ ├── TRcu.hh │ ├── TVector.hh │ ├── TVector_nopred.hh │ ├── TWrapped.hh │ ├── Tagged64.hh │ ├── TaggedLow.hh │ ├── Testers.hh │ ├── ThreadPool.cc │ ├── ThreadPool.h │ ├── TransAlloc.hh │ ├── TransItem.hh │ ├── TransPessimisticLocking.hh │ ├── TransUndoable.hh │ ├── Transaction.cc │ ├── Transaction.hh │ ├── Vector.hh │ ├── bootstrap.sh │ ├── clp.c │ ├── clp.h │ ├── compiler.hh │ ├── concurrent.cc │ ├── concurrentqueue.cc │ ├── configure.ac │ ├── datacollect.sh │ ├── ex-counter.cc │ ├── function_pool.cc │ ├── function_pool.h │ ├── hashtable_nostm.cc │ ├── ht_mt.cc │ ├── ht_mt2.cc │ ├── install-sh │ ├── iterators.cc │ ├── list1.cc │ ├── local_vector.hh │ ├── masstree-beta │ │ ├── .gitignore │ │ ├── AUTHORS │ │ ├── GNUmakefile.in │ │ ├── LICENSE │ │ ├── README.md │ │ ├── bootstrap.sh │ │ ├── btree_leaflink.hh │ │ ├── checkpoint.cc │ │ ├── checkpoint.hh │ │ ├── circular_int.hh │ │ ├── clp.c │ │ ├── clp.h │ │ ├── compiler.cc │ │ ├── compiler.hh │ │ ├── configure.ac │ │ ├── doc │ │ │ ├── .gitignore │ │ │ ├── GNUmakefile │ │ │ ├── elements.mp │ │ │ ├── elemfig.sty │ │ │ ├── examples.mp │ │ │ ├── insert1.mp │ │ │ ├── masstree.mp │ │ │ ├── patches.mp │ │ │ ├── remove1.mp │ │ │ ├── remove2.mp │ │ │ └── spec.tex │ │ ├── file.cc │ │ ├── file.hh │ │ ├── hashcode.hh │ │ ├── json.cc │ │ ├── json.hh │ │ ├── jsontest.cc │ │ ├── kpermuter.hh │ │ ├── ksearch.hh │ │ ├── kvio.cc │ │ ├── kvio.hh │ │ ├── kvproto.hh │ │ ├── kvrandom.cc │ │ ├── kvrandom.hh │ │ ├── kvrow.hh │ │ ├── kvstats.hh │ │ ├── kvtest.hh │ │ ├── kvthread.cc │ │ ├── kvthread.hh │ │ ├── log.cc │ │ ├── log.hh │ │ ├── masstree.hh │ │ ├── masstree_get.hh │ │ ├── masstree_insert.hh │ │ ├── masstree_key.hh │ │ ├── masstree_print.hh │ │ ├── masstree_remove.hh │ │ ├── masstree_scan.hh │ │ ├── masstree_split.hh │ │ ├── masstree_struct.hh │ │ ├── masstree_tcursor.hh │ │ ├── memdebug.cc │ │ ├── memdebug.hh │ │ ├── misc.cc │ │ ├── misc.hh │ │ ├── msgpack.cc │ │ ├── msgpack.hh │ │ ├── msgpacktest.cc │ │ ├── mtclient.cc │ │ ├── mtclient.hh │ │ ├── mtcounters.hh │ │ ├── mtd.cc │ │ ├── mttest.cc │ │ ├── nodeversion.hh │ │ ├── perfstat.cc │ │ ├── perfstat.hh │ │ ├── query_masstree.cc │ │ ├── query_masstree.hh │ │ ├── scantest.cc │ │ ├── small_vector.hh │ │ ├── str.cc │ │ ├── str.hh │ │ ├── straccum.cc │ │ ├── straccum.hh │ │ ├── string.cc │ │ ├── string.hh │ │ ├── string_base.hh │ │ ├── string_slice.cc │ │ ├── string_slice.hh │ │ ├── stringbag.hh │ │ ├── test_atomics.cc │ │ ├── test_string.cc │ │ ├── testrunner.cc │ │ ├── testrunner.hh │ │ ├── timestamp.hh │ │ ├── value_array.cc │ │ ├── value_array.hh │ │ ├── value_bag.hh │ │ ├── value_string.cc │ │ ├── value_string.hh │ │ ├── value_versioned_array.cc │ │ └── value_versioned_array.hh │ ├── mbta_wrapper.hh │ ├── microbenchmarks │ │ ├── exp_config.json │ │ ├── get_data.py │ │ ├── parse.py │ │ └── run_benchmarks.py │ ├── multi_recover_gdb.sh │ ├── plot.py │ ├── plotIteratos.py │ ├── pqVsIt.cc │ ├── pqueue.cc │ ├── predicates.cc │ ├── print_value.hh │ ├── randgen.hh │ ├── rbtree.cc │ ├── runIterators.py │ ├── run_micro.py │ ├── rwlock.hh │ ├── script.py │ ├── simple_str.hh │ ├── single.cc │ ├── singleelems.cc │ ├── srandomdev.c │ ├── stuffed_str.hh │ ├── sync_util.hh │ ├── tm.h │ ├── trans_test.cc │ ├── unit-rcu.cc │ ├── unit-tarray.cc │ ├── unit-tbox.cc │ ├── unit-tcounter.cc │ ├── unit-tgeneric.cc │ ├── unit-tintpredicate.cc │ ├── unit-tvector-nopred.cc │ ├── unit-tvector.cc │ ├── vector.cc │ └── versioned_value.hh ├── tpcc.cc ├── tpcc.h ├── tpcc_keys.h ├── tpcc_simple.cc ├── ycsb.cc └── zipf.h ├── boost.sh ├── btree.cc ├── c0.sh ├── c1.sh ├── circbuf.h ├── config.py ├── config ├── config-backoff.h ├── config-factor-fake-compression.h ├── config-factor-gc-nowriteinplace.h ├── config-factor-gc.h ├── config-perf.h └── config-sandbox.h ├── core.cc ├── core.h ├── counter.cc ├── counter.h ├── datacollect.py ├── dbtest_build_and_save.py ├── diffs └── single_paxos_stream_20220110.patch ├── docker ├── Dockerfile ├── docker.sh └── gitconfig ├── documents ├── arch.jpeg ├── case2.png ├── code.md ├── diff-1.png ├── diff-2.png ├── diff-3.png ├── exp1-1.png ├── exp1-result.png ├── exp2-1.png ├── exp2-2.png ├── exp2-3.png ├── exp2-results.png ├── exp3-1.png ├── exp4-results.png ├── exp6-results.png ├── exp7-results.png ├── exp8-results.png ├── failover-follower.png ├── latexdiff-result.png ├── latexdiff.md ├── major_claim.PNG ├── minimal_exp.PNG ├── one-click.png ├── rerun-exp.png └── results-all.png ├── env.md ├── exp_replay_only.eps ├── exp_scalability_micro.eps ├── exp_scalability_tpcc.eps ├── exp_scalability_tpcc.pdf ├── f0.sh ├── f1.sh ├── f2.sh ├── f3.sh ├── f4.sh ├── failure_recovery.eps ├── fileutils.h ├── gen.svg ├── gen2.svg ├── gen3.svg ├── imstring.h ├── init_submodule.sh ├── install.sh ├── instructions.md ├── latency-2.eps ├── lockguard.h ├── log2.hh ├── logs ├── Log-ThreadID-0.txt ├── Log-ThreadID-1.txt ├── Log-ThreadID-2.txt ├── Log-ThreadID-3.txt └── Log-ThreadID-4.txt ├── macros.h ├── marked_ptr.h ├── masstree ├── .gitignore ├── AUTHORS ├── GNUmakefile.in ├── LICENSE ├── README.md ├── bootstrap.sh ├── btree_leaflink.hh ├── checkpoint.cc ├── checkpoint.hh ├── circular_int.hh ├── clp.c ├── clp.h ├── compiler.cc ├── compiler.hh ├── configure.ac ├── doc │ ├── .gitignore │ ├── GNUmakefile │ ├── elements.mp │ ├── elemfig.sty │ ├── examples.mp │ ├── insert1.mp │ ├── masstree.mp │ ├── patches.mp │ ├── remove1.mp │ ├── remove2.mp │ └── spec.tex ├── file.cc ├── file.hh ├── hashcode.hh ├── json.cc ├── json.hh ├── jsontest.cc ├── kpermuter.hh ├── ksearch.hh ├── kvio.cc ├── kvio.hh ├── kvproto.hh ├── kvrandom.cc ├── kvrandom.hh ├── kvrow.hh ├── kvstats.hh ├── kvtest.hh ├── kvthread.cc ├── kvthread.hh ├── log.cc ├── log.hh ├── masstree.hh ├── masstree_get.hh ├── masstree_insert.hh ├── masstree_key.hh ├── masstree_print.hh ├── masstree_remove.hh ├── masstree_scan.hh ├── masstree_split.hh ├── masstree_struct.hh ├── masstree_tcursor.hh ├── memdebug.cc ├── memdebug.hh ├── misc.cc ├── misc.hh ├── msgpack.cc ├── msgpack.hh ├── msgpacktest.cc ├── mtclient.cc ├── mtclient.hh ├── mtcounters.hh ├── mtd.cc ├── mttest.cc ├── nodeversion.hh ├── perfstat.cc ├── perfstat.hh ├── query_masstree.cc ├── query_masstree.hh ├── scantest.cc ├── small_vector.hh ├── str.cc ├── str.hh ├── straccum.cc ├── straccum.hh ├── string.cc ├── string.hh ├── string_base.hh ├── string_slice.cc ├── string_slice.hh ├── stringbag.hh ├── test_atomics.cc ├── test_string.cc ├── testrunner.cc ├── testrunner.hh ├── timestamp.hh ├── value_array.cc ├── value_array.hh ├── value_bag.hh ├── value_string.cc ├── value_string.hh ├── value_versioned_array.cc └── value_versioned_array.hh ├── masstree_btree.h ├── mb0.sh ├── mb1.sh ├── mb2.sh ├── mc0.sh ├── mc1.sh ├── mem_analysis.py ├── mem_monitor.py ├── memory.cc ├── micro_2threads.sh ├── multi-2f.sh ├── multi-failover-variable.sh ├── multi-failover.sh ├── multi-latency.sh ├── multi-silo-only-m.sh ├── multi-silo-only.sh ├── multi-silo-skewed.sh ├── multi-skewed.sh ├── multi.sh ├── multi_client.sh ├── multi_client_ycsb.sh ├── multi_disable_replay.sh ├── multi_local.sh ├── multi_no_add_log_to_nc.sh ├── multi_recover_b0.sh ├── multi_recover_b0_back.sh ├── multi_recover_b1.sh ├── multi_recover_b2.sh ├── multi_single_paxos.sh ├── nginx_cp.sh ├── one-click.sh ├── ownership_checker.h ├── per_core_micro.eps ├── per_core_tpcc.eps ├── perf-scripts ├── common.sh ├── no_serialize_runtime-1-6_threads-1-6_1c2s6r1p.sh └── serialize_paxos_batching_runtime-1-6_threads-1-6_1c2s6r1p.sh ├── persist_test.cc ├── plot.py ├── prefetch.h ├── pxqueue.h ├── rcu.cc ├── rcu.h ├── record ├── cursor.h ├── encoder.h ├── inline_str.h └── serializer.h ├── release.md ├── results ├── batch-latency.log ├── batch-throughput.log ├── breakdown.log ├── failover-16-throughput.log ├── failover-4-throughput.log ├── failover-8-throughput.log ├── replay-only.log ├── scalability-tpcc.log ├── silo-only-skewed.log ├── silo-only-tpcc.log ├── single_paxos_stream.log └── throughput_skewed_workload-rolis.log ├── run.py ├── run_mixed_benchmarks.md ├── run_multi_pr_test.py ├── sb0.sh ├── sb1.sh ├── sb2.sh ├── scopedperf.hh ├── scripts ├── bench_atomic.cpp ├── bench_atomic.sh ├── concurrent_masstree.cpp ├── concurrent_masstree.sh ├── extractor-2.py ├── extractor.py ├── failure_cal.py ├── failure_follower ├── failure_leader ├── follower.py ├── follower_b1.py ├── follower_b1_m.py ├── follower_b1_skew.py ├── follower_b2.py ├── follower_b2_m.py ├── follower_b2_skew.py ├── ip_leader_replica ├── ip_p1_follower_replica ├── ip_p2_follower_replica ├── leader.py ├── leader_b.py ├── leader_b_m.py ├── leader_b_skew.py ├── matplot_clients.py ├── matplot_exp_scalability.py ├── matplot_exp_scalability_micro.py ├── matplot_exp_scalability_tpcc.py ├── matplot_failure.py ├── matplot_hardware_comparison.py ├── matplot_micro_scalability.py ├── matplot_onePaxos.py ├── matplot_per_core.py ├── matplot_per_core_micro.py ├── matplot_per_core_tpcc.py ├── matplot_replay_only.py ├── matplot_replica_latency-2.py ├── matplot_replica_latency.py ├── matplot_skewed.py ├── matplot_software_comparison-2.py ├── matplot_software_comparison-2pl.py ├── matplot_software_comparison.py ├── pointer_reference_test.cpp ├── pointer_reference_test.sh ├── replay_only_cal.py ├── rpc_tests │ ├── client_test.cc │ ├── client_test.sh │ ├── compile.sh │ ├── echo_follower │ ├── echo_follower.cc │ ├── echo_old_leader │ └── echo_old_leader.cc ├── scan_benchmark.cpp ├── scan_benchmark.sh ├── simpleTransaction.cpp ├── simpleTransaction.sh ├── tester.py └── tester.sh ├── silo-scripts ├── .ipynb_checkpoints │ └── loadDataIntoDatabase-checkpoint.ipynb ├── SiLO-sto_code_skeleton.md ├── build_run.sh ├── loadDataIntoDatabase.ipynb ├── multi-replay │ ├── .gitkeep │ ├── baseline.py │ ├── commands.sh │ ├── convert.py │ ├── convert.sh │ ├── init_compiler.sh │ ├── mem_monitor.py │ ├── monitor.log │ ├── replay.py │ ├── results.tmp.log │ ├── results │ │ ├── 1-1.G.log │ │ ├── 1-1.G.mem.log │ │ ├── 1-1.R.log │ │ ├── 1-1.R.mem.log │ │ ├── 1-1.info.log │ │ ├── 1-1.track.log │ │ ├── 1-2.G.log │ │ ├── 1-2.G.mem.log │ │ ├── 1-2.R.log │ │ ├── 1-2.R.mem.log │ │ ├── 1-2.info.log │ │ ├── 1-2.track.log │ │ ├── 1-3.G.log │ │ ├── 1-3.G.mem.log │ │ ├── 1-3.R.log │ │ ├── 1-3.R.mem.log │ │ ├── 1-3.info.log │ │ ├── 1-3.track.log │ │ ├── 10-1.G.log │ │ ├── 10-1.G.mem.log │ │ ├── 10-1.R.log │ │ ├── 10-1.R.mem.log │ │ ├── 10-1.info.log │ │ ├── 10-1.track.log │ │ ├── 10-2.G.log │ │ ├── 10-2.G.mem.log │ │ ├── 10-2.R.log │ │ ├── 10-2.R.mem.log │ │ ├── 10-2.info.log │ │ ├── 10-2.track.log │ │ ├── 10-3.G.log │ │ ├── 10-3.G.mem.log │ │ ├── 10-3.R.log │ │ ├── 10-3.R.mem.log │ │ ├── 10-3.info.log │ │ ├── 10-3.track.log │ │ ├── 11-1.G.log │ │ ├── 11-1.G.mem.log │ │ ├── 11-1.R.log │ │ ├── 11-1.R.mem.log │ │ ├── 11-1.info.log │ │ ├── 11-1.track.log │ │ ├── 11-2.G.log │ │ ├── 11-2.G.mem.log │ │ ├── 11-2.R.log │ │ ├── 11-2.R.mem.log │ │ ├── 11-2.info.log │ │ ├── 11-2.track.log │ │ ├── 11-3.G.log │ │ ├── 11-3.G.mem.log │ │ ├── 11-3.R.log │ │ ├── 11-3.R.mem.log │ │ ├── 11-3.info.log │ │ ├── 11-3.track.log │ │ ├── 12-1.G.log │ │ ├── 12-1.G.mem.log │ │ ├── 12-1.R.log │ │ ├── 12-1.R.mem.log │ │ ├── 12-1.info.log │ │ ├── 12-1.track.log │ │ ├── 12-2.G.log │ │ ├── 12-2.G.mem.log │ │ ├── 12-2.R.log │ │ ├── 12-2.R.mem.log │ │ ├── 12-2.info.log │ │ ├── 12-2.track.log │ │ ├── 12-3.G.log │ │ ├── 12-3.G.mem.log │ │ ├── 12-3.R.log │ │ ├── 12-3.R.mem.log │ │ ├── 12-3.info.log │ │ ├── 12-3.track.log │ │ ├── 13-1.G.log │ │ ├── 13-1.G.mem.log │ │ ├── 13-1.R.log │ │ ├── 13-1.R.mem.log │ │ ├── 13-1.info.log │ │ ├── 13-1.track.log │ │ ├── 13-2.G.log │ │ ├── 13-2.G.mem.log │ │ ├── 13-2.R.log │ │ ├── 13-2.R.mem.log │ │ ├── 13-2.info.log │ │ ├── 13-2.track.log │ │ ├── 13-3.G.log │ │ ├── 13-3.G.mem.log │ │ ├── 13-3.R.log │ │ ├── 13-3.R.mem.log │ │ ├── 13-3.info.log │ │ ├── 13-3.track.log │ │ ├── 14-1.G.log │ │ ├── 14-1.G.mem.log │ │ ├── 14-1.R.log │ │ ├── 14-1.R.mem.log │ │ ├── 14-1.info.log │ │ ├── 14-1.track.log │ │ ├── 14-2.G.log │ │ ├── 14-2.G.mem.log │ │ ├── 14-2.R.log │ │ ├── 14-2.R.mem.log │ │ ├── 14-2.info.log │ │ ├── 14-2.track.log │ │ ├── 14-3.G.log │ │ ├── 14-3.G.mem.log │ │ ├── 14-3.R.log │ │ ├── 14-3.R.mem.log │ │ ├── 14-3.info.log │ │ ├── 14-3.track.log │ │ ├── 15-1.G.log │ │ ├── 15-1.G.mem.log │ │ ├── 15-1.R.log │ │ ├── 15-1.R.mem.log │ │ ├── 15-1.info.log │ │ ├── 15-1.track.log │ │ ├── 15-2.G.log │ │ ├── 15-2.G.mem.log │ │ ├── 15-2.R.log │ │ ├── 15-2.R.mem.log │ │ ├── 15-2.info.log │ │ ├── 15-2.track.log │ │ ├── 15-3.G.log │ │ ├── 15-3.G.mem.log │ │ ├── 15-3.R.log │ │ ├── 15-3.R.mem.log │ │ ├── 15-3.info.log │ │ ├── 15-3.track.log │ │ ├── 16-1.G.log │ │ ├── 16-1.G.mem.log │ │ ├── 16-1.R.log │ │ ├── 16-1.R.mem.log │ │ ├── 16-1.info.log │ │ ├── 16-1.track.log │ │ ├── 16-2.G.log │ │ ├── 16-2.G.mem.log │ │ ├── 16-2.R.log │ │ ├── 16-2.R.mem.log │ │ ├── 16-2.info.log │ │ ├── 16-2.track.log │ │ ├── 16-3.G.log │ │ ├── 16-3.G.mem.log │ │ ├── 16-3.R.log │ │ ├── 16-3.R.mem.log │ │ ├── 16-3.info.log │ │ ├── 16-3.track.log │ │ ├── 17-1.G.log │ │ ├── 17-1.G.mem.log │ │ ├── 17-1.R.log │ │ ├── 17-1.R.mem.log │ │ ├── 17-1.info.log │ │ ├── 17-1.track.log │ │ ├── 17-2.G.log │ │ ├── 17-2.G.mem.log │ │ ├── 17-2.R.log │ │ ├── 17-2.R.mem.log │ │ ├── 17-2.info.log │ │ ├── 17-2.track.log │ │ ├── 17-3.G.log │ │ ├── 17-3.G.mem.log │ │ ├── 17-3.R.log │ │ ├── 17-3.R.mem.log │ │ ├── 17-3.info.log │ │ ├── 17-3.track.log │ │ ├── 18-1.G.log │ │ ├── 18-1.G.mem.log │ │ ├── 18-1.R.log │ │ ├── 18-1.R.mem.log │ │ ├── 18-1.info.log │ │ ├── 18-1.track.log │ │ ├── 18-2.G.log │ │ ├── 18-2.G.mem.log │ │ ├── 18-2.R.log │ │ ├── 18-2.R.mem.log │ │ ├── 18-2.info.log │ │ ├── 18-2.track.log │ │ ├── 18-3.G.log │ │ ├── 18-3.G.mem.log │ │ ├── 18-3.R.log │ │ ├── 18-3.R.mem.log │ │ ├── 18-3.info.log │ │ ├── 18-3.track.log │ │ ├── 19-1.G.log │ │ ├── 19-1.G.mem.log │ │ ├── 19-1.R.log │ │ ├── 19-1.R.mem.log │ │ ├── 19-1.info.log │ │ ├── 19-1.track.log │ │ ├── 19-2.G.log │ │ ├── 19-2.G.mem.log │ │ ├── 19-2.R.log │ │ ├── 19-2.R.mem.log │ │ ├── 19-2.info.log │ │ ├── 19-2.track.log │ │ ├── 19-3.G.log │ │ ├── 19-3.G.mem.log │ │ ├── 19-3.R.log │ │ ├── 19-3.R.mem.log │ │ ├── 19-3.info.log │ │ ├── 19-3.track.log │ │ ├── 2-1.G.log │ │ ├── 2-1.G.mem.log │ │ ├── 2-1.R.log │ │ ├── 2-1.R.mem.log │ │ ├── 2-1.info.log │ │ ├── 2-1.track.log │ │ ├── 2-2.G.log │ │ ├── 2-2.G.mem.log │ │ ├── 2-2.R.log │ │ ├── 2-2.R.mem.log │ │ ├── 2-2.info.log │ │ ├── 2-2.track.log │ │ ├── 2-3.G.log │ │ ├── 2-3.G.mem.log │ │ ├── 2-3.R.log │ │ ├── 2-3.R.mem.log │ │ ├── 2-3.info.log │ │ ├── 2-3.track.log │ │ ├── 20-1.G.log │ │ ├── 20-1.G.mem.log │ │ ├── 20-1.R.log │ │ ├── 20-1.R.mem.log │ │ ├── 20-1.info.log │ │ ├── 20-1.track.log │ │ ├── 20-2.G.log │ │ ├── 20-2.G.mem.log │ │ ├── 20-2.R.log │ │ ├── 20-2.R.mem.log │ │ ├── 20-2.info.log │ │ ├── 20-2.track.log │ │ ├── 20-3.G.log │ │ ├── 20-3.G.mem.log │ │ ├── 20-3.R.log │ │ ├── 20-3.R.mem.log │ │ ├── 20-3.info.log │ │ ├── 20-3.track.log │ │ ├── 21-1.G.log │ │ ├── 21-1.G.mem.log │ │ ├── 21-1.R.log │ │ ├── 21-1.R.mem.log │ │ ├── 21-1.info.log │ │ ├── 21-1.track.log │ │ ├── 21-2.G.log │ │ ├── 21-2.G.mem.log │ │ ├── 21-2.R.log │ │ ├── 21-2.R.mem.log │ │ ├── 21-2.info.log │ │ ├── 21-2.track.log │ │ ├── 21-3.G.log │ │ ├── 21-3.G.mem.log │ │ ├── 21-3.R.log │ │ ├── 21-3.R.mem.log │ │ ├── 21-3.info.log │ │ ├── 21-3.track.log │ │ ├── 22-1.G.log │ │ ├── 22-1.G.mem.log │ │ ├── 22-1.R.log │ │ ├── 22-1.R.mem.log │ │ ├── 22-1.info.log │ │ ├── 22-1.track.log │ │ ├── 22-2.G.log │ │ ├── 22-2.G.mem.log │ │ ├── 22-2.R.log │ │ ├── 22-2.R.mem.log │ │ ├── 22-2.info.log │ │ ├── 22-2.track.log │ │ ├── 22-3.G.log │ │ ├── 22-3.G.mem.log │ │ ├── 22-3.R.log │ │ ├── 22-3.R.mem.log │ │ ├── 22-3.info.log │ │ ├── 22-3.track.log │ │ ├── 23-1.G.log │ │ ├── 23-1.G.mem.log │ │ ├── 23-1.R.log │ │ ├── 23-1.R.mem.log │ │ ├── 23-1.info.log │ │ ├── 23-1.track.log │ │ ├── 23-2.G.log │ │ ├── 23-2.G.mem.log │ │ ├── 23-2.R.log │ │ ├── 23-2.R.mem.log │ │ ├── 23-2.info.log │ │ ├── 23-2.track.log │ │ ├── 23-3.G.log │ │ ├── 23-3.G.mem.log │ │ ├── 23-3.R.log │ │ ├── 23-3.R.mem.log │ │ ├── 23-3.info.log │ │ ├── 23-3.track.log │ │ ├── 24-1.G.log │ │ ├── 24-1.G.mem.log │ │ ├── 24-1.R.log │ │ ├── 24-1.R.mem.log │ │ ├── 24-1.info.log │ │ ├── 24-1.track.log │ │ ├── 24-2.G.log │ │ ├── 24-2.G.mem.log │ │ ├── 24-2.R.log │ │ ├── 24-2.R.mem.log │ │ ├── 24-2.info.log │ │ ├── 24-2.track.log │ │ ├── 24-3.G.log │ │ ├── 24-3.G.mem.log │ │ ├── 24-3.R.log │ │ ├── 24-3.R.mem.log │ │ ├── 24-3.info.log │ │ ├── 24-3.track.log │ │ ├── 25-1.G.log │ │ ├── 25-1.G.mem.log │ │ ├── 25-1.R.log │ │ ├── 25-1.R.mem.log │ │ ├── 25-1.info.log │ │ ├── 25-1.track.log │ │ ├── 25-2.G.log │ │ ├── 25-2.G.mem.log │ │ ├── 25-2.R.log │ │ ├── 25-2.R.mem.log │ │ ├── 25-2.info.log │ │ ├── 25-2.track.log │ │ ├── 25-3.G.log │ │ ├── 25-3.G.mem.log │ │ ├── 25-3.R.log │ │ ├── 25-3.R.mem.log │ │ ├── 25-3.info.log │ │ ├── 25-3.track.log │ │ ├── 26-1.G.log │ │ ├── 26-1.G.mem.log │ │ ├── 26-1.R.log │ │ ├── 26-1.R.mem.log │ │ ├── 26-1.info.log │ │ ├── 26-1.track.log │ │ ├── 26-2.G.log │ │ ├── 26-2.G.mem.log │ │ ├── 26-2.R.log │ │ ├── 26-2.R.mem.log │ │ ├── 26-2.info.log │ │ ├── 26-2.track.log │ │ ├── 26-3.G.log │ │ ├── 26-3.G.mem.log │ │ ├── 26-3.R.log │ │ ├── 26-3.R.mem.log │ │ ├── 26-3.info.log │ │ ├── 26-3.track.log │ │ ├── 27-1.G.log │ │ ├── 27-1.G.mem.log │ │ ├── 27-1.R.log │ │ ├── 27-1.R.mem.log │ │ ├── 27-1.info.log │ │ ├── 27-1.track.log │ │ ├── 27-2.G.log │ │ ├── 27-2.G.mem.log │ │ ├── 27-2.R.log │ │ ├── 27-2.R.mem.log │ │ ├── 27-2.info.log │ │ ├── 27-2.track.log │ │ ├── 27-3.G.log │ │ ├── 27-3.G.mem.log │ │ ├── 27-3.R.log │ │ ├── 27-3.R.mem.log │ │ ├── 27-3.info.log │ │ ├── 27-3.track.log │ │ ├── 28-1.G.log │ │ ├── 28-1.G.mem.log │ │ ├── 28-1.R.log │ │ ├── 28-1.R.mem.log │ │ ├── 28-1.info.log │ │ ├── 28-1.track.log │ │ ├── 28-2.G.log │ │ ├── 28-2.G.mem.log │ │ ├── 28-2.R.log │ │ ├── 28-2.R.mem.log │ │ ├── 28-2.info.log │ │ ├── 28-2.track.log │ │ ├── 28-3.G.log │ │ ├── 28-3.G.mem.log │ │ ├── 28-3.R.log │ │ ├── 28-3.R.mem.log │ │ ├── 28-3.info.log │ │ ├── 28-3.track.log │ │ ├── 29-1.G.log │ │ ├── 29-1.G.mem.log │ │ ├── 29-1.R.log │ │ ├── 29-1.R.mem.log │ │ ├── 29-1.info.log │ │ ├── 29-1.track.log │ │ ├── 29-2.G.log │ │ ├── 29-2.G.mem.log │ │ ├── 29-2.R.log │ │ ├── 29-2.R.mem.log │ │ ├── 29-2.info.log │ │ ├── 29-2.track.log │ │ ├── 29-3.G.log │ │ ├── 29-3.G.mem.log │ │ ├── 29-3.R.log │ │ ├── 29-3.R.mem.log │ │ ├── 29-3.info.log │ │ ├── 29-3.track.log │ │ ├── 3-1.G.log │ │ ├── 3-1.G.mem.log │ │ ├── 3-1.R.log │ │ ├── 3-1.R.mem.log │ │ ├── 3-1.info.log │ │ ├── 3-1.track.log │ │ ├── 3-2.G.log │ │ ├── 3-2.G.mem.log │ │ ├── 3-2.R.log │ │ ├── 3-2.R.mem.log │ │ ├── 3-2.info.log │ │ ├── 3-2.track.log │ │ ├── 3-3.G.log │ │ ├── 3-3.G.mem.log │ │ ├── 3-3.R.log │ │ ├── 3-3.R.mem.log │ │ ├── 3-3.info.log │ │ ├── 3-3.track.log │ │ ├── 30-1.G.log │ │ ├── 30-1.G.mem.log │ │ ├── 30-1.R.log │ │ ├── 30-1.R.mem.log │ │ ├── 30-1.info.log │ │ ├── 30-1.track.log │ │ ├── 30-2.G.log │ │ ├── 30-2.G.mem.log │ │ ├── 30-2.R.log │ │ ├── 30-2.R.mem.log │ │ ├── 30-2.info.log │ │ ├── 30-2.track.log │ │ ├── 30-3.G.log │ │ ├── 30-3.G.mem.log │ │ ├── 30-3.R.log │ │ ├── 30-3.R.mem.log │ │ ├── 30-3.info.log │ │ ├── 30-3.track.log │ │ ├── 31-1.G.log │ │ ├── 31-1.G.mem.log │ │ ├── 31-1.R.log │ │ ├── 31-1.R.mem.log │ │ ├── 31-1.info.log │ │ ├── 31-1.track.log │ │ ├── 31-2.G.log │ │ ├── 31-2.G.mem.log │ │ ├── 31-2.R.log │ │ ├── 31-2.R.mem.log │ │ ├── 31-2.info.log │ │ ├── 31-2.track.log │ │ ├── 31-3.G.log │ │ ├── 31-3.G.mem.log │ │ ├── 31-3.R.log │ │ ├── 31-3.R.mem.log │ │ ├── 31-3.info.log │ │ ├── 31-3.track.log │ │ ├── 32-1.G.log │ │ ├── 32-1.G.mem.log │ │ ├── 32-1.track.log │ │ ├── 32-2.G.log │ │ ├── 32-2.G.mem.log │ │ ├── 32-2.track.log │ │ ├── 32-3.G.log │ │ ├── 32-3.G.mem.log │ │ ├── 32-3.track.log │ │ ├── 4-1.G.log │ │ ├── 4-1.G.mem.log │ │ ├── 4-1.R.log │ │ ├── 4-1.R.mem.log │ │ ├── 4-1.info.log │ │ ├── 4-1.track.log │ │ ├── 4-2.G.log │ │ ├── 4-2.G.mem.log │ │ ├── 4-2.R.log │ │ ├── 4-2.R.mem.log │ │ ├── 4-2.info.log │ │ ├── 4-2.track.log │ │ ├── 4-3.G.log │ │ ├── 4-3.G.mem.log │ │ ├── 4-3.R.log │ │ ├── 4-3.R.mem.log │ │ ├── 4-3.info.log │ │ ├── 4-3.track.log │ │ ├── 5-1.G.log │ │ ├── 5-1.G.mem.log │ │ ├── 5-1.R.log │ │ ├── 5-1.R.mem.log │ │ ├── 5-1.info.log │ │ ├── 5-1.track.log │ │ ├── 5-2.G.log │ │ ├── 5-2.G.mem.log │ │ ├── 5-2.R.log │ │ ├── 5-2.R.mem.log │ │ ├── 5-2.info.log │ │ ├── 5-2.track.log │ │ ├── 5-3.G.log │ │ ├── 5-3.G.mem.log │ │ ├── 5-3.R.log │ │ ├── 5-3.R.mem.log │ │ ├── 5-3.info.log │ │ ├── 5-3.track.log │ │ ├── 6-1.G.log │ │ ├── 6-1.G.mem.log │ │ ├── 6-1.R.log │ │ ├── 6-1.R.mem.log │ │ ├── 6-1.info.log │ │ ├── 6-1.track.log │ │ ├── 6-2.G.log │ │ ├── 6-2.G.mem.log │ │ ├── 6-2.R.log │ │ ├── 6-2.R.mem.log │ │ ├── 6-2.info.log │ │ ├── 6-2.track.log │ │ ├── 6-3.G.log │ │ ├── 6-3.G.mem.log │ │ ├── 6-3.R.log │ │ ├── 6-3.R.mem.log │ │ ├── 6-3.info.log │ │ ├── 6-3.track.log │ │ ├── 7-1.G.log │ │ ├── 7-1.G.mem.log │ │ ├── 7-1.R.log │ │ ├── 7-1.R.mem.log │ │ ├── 7-1.info.log │ │ ├── 7-1.track.log │ │ ├── 7-2.G.log │ │ ├── 7-2.G.mem.log │ │ ├── 7-2.R.log │ │ ├── 7-2.R.mem.log │ │ ├── 7-2.info.log │ │ ├── 7-2.track.log │ │ ├── 7-3.G.log │ │ ├── 7-3.G.mem.log │ │ ├── 7-3.R.log │ │ ├── 7-3.R.mem.log │ │ ├── 7-3.info.log │ │ ├── 7-3.track.log │ │ ├── 8-1.G.log │ │ ├── 8-1.G.mem.log │ │ ├── 8-1.R.log │ │ ├── 8-1.R.mem.log │ │ ├── 8-1.info.log │ │ ├── 8-1.track.log │ │ ├── 8-2.G.log │ │ ├── 8-2.G.mem.log │ │ ├── 8-2.R.log │ │ ├── 8-2.R.mem.log │ │ ├── 8-2.info.log │ │ ├── 8-2.track.log │ │ ├── 8-3.G.log │ │ ├── 8-3.G.mem.log │ │ ├── 8-3.R.log │ │ ├── 8-3.R.mem.log │ │ ├── 8-3.info.log │ │ ├── 8-3.track.log │ │ ├── 9-1.G.log │ │ ├── 9-1.G.mem.log │ │ ├── 9-1.R.log │ │ ├── 9-1.R.mem.log │ │ ├── 9-1.info.log │ │ ├── 9-1.track.log │ │ ├── 9-2.G.log │ │ ├── 9-2.G.mem.log │ │ ├── 9-2.R.log │ │ ├── 9-2.R.mem.log │ │ ├── 9-2.info.log │ │ ├── 9-2.track.log │ │ ├── 9-3.G.log │ │ ├── 9-3.G.mem.log │ │ ├── 9-3.R.log │ │ ├── 9-3.R.mem.log │ │ ├── 9-3.info.log │ │ ├── 9-3.track.log │ │ ├── results.1-28.log │ │ └── results.log │ ├── resultsParser.py │ ├── results_convert.log │ ├── snippet.cc │ ├── t0.py │ └── tmp-1 │ │ ├── abc2400 │ │ ├── abc2400.pdf │ │ ├── abc49152 │ │ ├── abc49152.pdf │ │ ├── abc50331648 │ │ └── abc50331648.pdf └── myscripts │ ├── EncDecode.cc │ ├── arg.cpp │ ├── cputime.cpp │ ├── fence_load.cpp │ ├── invoke.cpp │ ├── macro_test.cpp │ ├── malloc.cpp │ ├── multithreading.cpp │ ├── mymain.cpp │ ├── rdtscptest.cpp │ ├── replay-file-27.cpp │ ├── run.sh │ ├── shared_ptr.cpp │ ├── static.cpp │ ├── tester.cpp │ ├── tester2.cpp │ └── unsorted_map_tester.cpp ├── silo_rep_paper.pdf ├── silo_small_vector.h ├── single_paxos_group.eps ├── single_paxos_group.pdf ├── skewed.eps ├── small_unordered_map.h ├── software_comparison.eps ├── software_comparison.png ├── software_comparison_hardware.eps ├── spinbarrier.h ├── spinlock.h ├── static_unordered_map.h ├── static_vector.h ├── stats_client.cc ├── stats_common.h ├── stats_server.cc ├── stats_server.h ├── str_arena.h ├── test.cc ├── test ├── README.md └── runner.sh ├── third-party ├── lz4 │ ├── LZ4 Streaming Format.odt │ ├── Makefile │ ├── bench.c │ ├── bench.h │ ├── cmake │ │ ├── CMakeLists.txt │ │ └── pack │ │ │ ├── CMakeLists.txt │ │ │ └── release_COPYING.txt │ ├── fullbench.c │ ├── fuzzer.c │ ├── lz4.c │ ├── lz4.h │ ├── lz4_encoder.h │ ├── lz4_format_description.txt │ ├── lz4c.c │ ├── lz4hc.c │ ├── lz4hc.h │ ├── lz4hc_encoder.h │ ├── xxhash.c │ └── xxhash.h └── paxos │ ├── .idea │ ├── codeStyles │ │ └── codeStyleConfig.xml │ ├── janus.iml │ ├── misc.xml │ ├── modules.xml │ ├── vcs.xml │ └── workspace.xml │ ├── .travis.yml │ ├── .unittest-gtest │ └── gtest-1.7.0 │ │ └── fused-src │ │ └── gtest │ │ ├── gtest-all.cc │ │ ├── gtest.h │ │ ├── gtest │ │ └── gtest.h │ │ └── gtest_main.cc │ ├── .vscode │ └── settings.json │ ├── .waf-tools │ ├── boost.py │ ├── unittest_gtest.py │ └── unittest_gtest.pygz2 │ ├── .waf3-2.0.18-96675f149f50dab16c9e2e6aaf5e787b │ └── waflib │ │ ├── Build.py │ │ ├── ConfigSet.py │ │ ├── Configure.py │ │ ├── Context.py │ │ ├── Errors.py │ │ ├── Logs.py │ │ ├── Node.py │ │ ├── Options.py │ │ ├── Runner.py │ │ ├── Scripting.py │ │ ├── Task.py │ │ ├── TaskGen.py │ │ ├── Tools │ │ ├── __init__.py │ │ ├── ar.py │ │ ├── asm.py │ │ ├── bison.py │ │ ├── c.py │ │ ├── c_aliases.py │ │ ├── c_config.py │ │ ├── c_osx.py │ │ ├── c_preproc.py │ │ ├── c_tests.py │ │ ├── ccroot.py │ │ ├── clang.py │ │ ├── clangxx.py │ │ ├── compiler_c.py │ │ ├── compiler_cxx.py │ │ ├── compiler_d.py │ │ ├── compiler_fc.py │ │ ├── cs.py │ │ ├── cxx.py │ │ ├── d.py │ │ ├── d_config.py │ │ ├── d_scan.py │ │ ├── dbus.py │ │ ├── dmd.py │ │ ├── errcheck.py │ │ ├── fc.py │ │ ├── fc_config.py │ │ ├── fc_scan.py │ │ ├── flex.py │ │ ├── g95.py │ │ ├── gas.py │ │ ├── gcc.py │ │ ├── gdc.py │ │ ├── gfortran.py │ │ ├── glib2.py │ │ ├── gnu_dirs.py │ │ ├── gxx.py │ │ ├── icc.py │ │ ├── icpc.py │ │ ├── ifort.py │ │ ├── intltool.py │ │ ├── irixcc.py │ │ ├── javaw.py │ │ ├── ldc2.py │ │ ├── lua.py │ │ ├── md5_tstamp.py │ │ ├── msvc.py │ │ ├── nasm.py │ │ ├── nobuild.py │ │ ├── perl.py │ │ ├── python.py │ │ ├── qt5.py │ │ ├── ruby.py │ │ ├── suncc.py │ │ ├── suncxx.py │ │ ├── tex.py │ │ ├── vala.py │ │ ├── waf_unit_test.py │ │ ├── winres.py │ │ ├── xlc.py │ │ └── xlcxx.py │ │ ├── Utils.py │ │ ├── __init__.py │ │ ├── ansiterm.py │ │ ├── extras │ │ ├── __init__.py │ │ └── compat15.py │ │ ├── fixpy2.py │ │ └── processor.py │ ├── CMakeLists.txt │ ├── HunterGate.cmake │ ├── LICENSE │ ├── Makefile │ ├── README.md │ ├── TODO.md │ ├── abc.txt │ ├── bin │ ├── gendoxygen.sh │ ├── rlogserver │ └── rpcgen │ ├── cmake │ ├── Hunter │ │ └── config.cmake │ └── cxx14.cmake │ ├── config │ ├── 18p.yml │ ├── 1c10s30r10p.yml │ ├── 1c10s30r1p.yml │ ├── 1c15s45r1p.yml │ ├── 1c1s.yml │ ├── 1c1s1p-2r.yml │ ├── 1c1s1p.yml │ ├── 1c1s2p.yml │ ├── 1c1s2r.yml │ ├── 1c1s3r1p.yml │ ├── 1c1s3r3p.yml │ ├── 1c2s6r1p.yml │ ├── 1p.yml │ ├── 1silo_1paxos_1follower │ │ ├── 1.yml │ │ ├── 10.yml │ │ ├── 11.yml │ │ ├── 12.yml │ │ ├── 13.yml │ │ ├── 14.yml │ │ ├── 15.yml │ │ ├── 16.yml │ │ ├── 17.yml │ │ ├── 18.yml │ │ ├── 19.yml │ │ ├── 2.yml │ │ ├── 20.yml │ │ ├── 21.yml │ │ ├── 22.yml │ │ ├── 23.yml │ │ ├── 24.yml │ │ ├── 25.yml │ │ ├── 26.yml │ │ ├── 27.yml │ │ ├── 28.yml │ │ ├── 29.yml │ │ ├── 3.yml │ │ ├── 30.yml │ │ ├── 31.yml │ │ ├── 32.yml │ │ ├── 4.yml │ │ ├── 5.yml │ │ ├── 6.yml │ │ ├── 7.yml │ │ ├── 8.yml │ │ ├── 9.yml │ │ └── run.sh │ ├── 1silo_1paxos_2follower │ │ ├── 1.yml │ │ ├── 10.yml │ │ ├── 11.yml │ │ ├── 12.yml │ │ ├── 13.yml │ │ ├── 14.yml │ │ ├── 15.yml │ │ ├── 16.yml │ │ ├── 17.yml │ │ ├── 18.yml │ │ ├── 19.yml │ │ ├── 2.yml │ │ ├── 20.yml │ │ ├── 21.yml │ │ ├── 22.yml │ │ ├── 23.yml │ │ ├── 24.yml │ │ ├── 25.yml │ │ ├── 26.yml │ │ ├── 27.yml │ │ ├── 28.yml │ │ ├── 29.yml │ │ ├── 3.yml │ │ ├── 30.yml │ │ ├── 31.yml │ │ ├── 32.yml │ │ ├── 4.yml │ │ ├── 5.yml │ │ ├── 6.yml │ │ ├── 7.yml │ │ ├── 8.yml │ │ ├── 9.yml │ │ └── run.sh │ ├── 1silo_1paxos_4follower │ │ ├── 1.yml │ │ ├── 10.yml │ │ ├── 11.yml │ │ ├── 12.yml │ │ ├── 13.yml │ │ ├── 14.yml │ │ ├── 15.yml │ │ ├── 16.yml │ │ ├── 17.yml │ │ ├── 2.yml │ │ ├── 3.yml │ │ ├── 31.yml │ │ ├── 32.yml │ │ ├── 4.yml │ │ ├── 5.yml │ │ ├── 6.yml │ │ ├── 7.yml │ │ ├── 8.yml │ │ ├── 9.yml │ │ └── run.sh │ ├── 2c2s1p.yml │ ├── 3c1s1p.yml │ ├── 3c1s3r.yml │ ├── 3c1s3r1p.yml │ ├── 3c1s5r.yml │ ├── 3c3s1p.yml │ ├── 3c3s3r1p.yml │ ├── 3p.yml │ ├── 64c8s1p.yml │ ├── 64c8s3r1p.yml │ ├── 8c1s1p.yml │ ├── 9c3s3r.yml │ ├── 9c6s3r.yml │ ├── 9p.yml │ ├── Doxyfile │ ├── brq.yml │ ├── client_closed.yml │ ├── client_open.yml │ ├── client_open_5k.yml │ ├── concurrent_1.yml │ ├── concurrent_10.yml │ ├── concurrent_100.yml │ ├── concurrent_1000.yml │ ├── concurrent_10000.yml │ ├── concurrent_25.yml │ ├── concurrent_50.yml │ ├── etc │ │ ├── exports │ │ ├── fstab │ │ ├── hosts.allow │ │ ├── hosts.deny │ │ ├── ntp.conf │ │ └── security │ │ │ └── limits.conf │ ├── externc.yml │ ├── februus.yml │ ├── hosts-beaker.yml │ ├── hosts-local.yml │ ├── hosts-teaker │ ├── janus.yml │ ├── local │ │ ├── 1follower_1.yml │ │ ├── 1follower_19.yml │ │ ├── 1follower_2.yml │ │ ├── 1follower_3.yml │ │ ├── 2follower_1.yml │ │ ├── 2follower_2.yml │ │ ├── 2follower_3.yml │ │ └── debug.yml │ ├── mdcc.yml │ ├── none.yml │ ├── occ.yml │ ├── occ_paxos.yml │ ├── plot │ │ ├── multi_dc_tpcc_client_90lat.yml │ │ ├── multi_dc_tpcc_client_99lat.yml │ │ ├── multi_dc_tpcc_client_attempts_commit.yml │ │ ├── multi_dc_tpcc_client_lat.yml │ │ ├── multi_dc_tpcc_client_tp_log.yml │ │ ├── multi_dc_zipf_90lat.yml │ │ ├── multi_dc_zipf_99lat.yml │ │ ├── multi_dc_zipf_attempts_commit.yml │ │ ├── multi_dc_zipf_lat.yml │ │ ├── multi_dc_zipf_tp.yml │ │ ├── single_dc_tpcc_client_90lat.yml │ │ ├── single_dc_tpcc_client_99lat.yml │ │ ├── single_dc_tpcc_client_attempts_commit.yml │ │ ├── single_dc_tpcc_client_lat.yml │ │ ├── single_dc_tpcc_client_tp_log.yml │ │ ├── single_dc_zipf_90lat.yml │ │ ├── single_dc_zipf_99lat.yml │ │ ├── single_dc_zipf_attempts_commit.yml │ │ ├── single_dc_zipf_lat.yml │ │ └── single_dc_zipf_tp.yml │ ├── rcc.yml │ ├── rw.yml │ ├── rw_fixed.yml │ ├── sample.yml │ ├── ssh │ │ ├── config │ │ ├── id_rsa │ │ └── id_rsa.pub │ ├── tapir.yml │ ├── teaker-sosp │ │ └── gen.rb │ ├── tpca.yml │ ├── tpca_fixed.yml │ ├── tpca_uniform.yml │ ├── tpca_zipf.yml │ ├── tpca_zipf_0.75.yml │ ├── tpca_zipf_0.9.yml │ ├── tpca_zipf_1.yml │ ├── tpcc.yml │ ├── tpcc_no.yml │ ├── tpcc_pm.yml │ ├── tpccd.yml │ ├── tpl_wd.yml │ ├── tpl_ww.yml │ ├── tpl_ww_paxos.yml │ └── troad.yml │ ├── dependencies │ └── yaml-cpp │ │ ├── .clang-format │ │ ├── .codedocs │ │ ├── .gitignore │ │ ├── .travis.yml │ │ ├── CMakeLists.txt │ │ ├── CONTRIBUTING.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── include │ │ └── yaml-cpp │ │ │ ├── anchor.h │ │ │ ├── binary.h │ │ │ ├── contrib │ │ │ ├── anchordict.h │ │ │ └── graphbuilder.h │ │ │ ├── dll.h │ │ │ ├── emitfromevents.h │ │ │ ├── emitter.h │ │ │ ├── emitterdef.h │ │ │ ├── emittermanip.h │ │ │ ├── emitterstyle.h │ │ │ ├── eventhandler.h │ │ │ ├── exceptions.h │ │ │ ├── mark.h │ │ │ ├── node │ │ │ ├── convert.h │ │ │ ├── detail │ │ │ │ ├── bool_type.h │ │ │ │ ├── impl.h │ │ │ │ ├── iterator.h │ │ │ │ ├── iterator_fwd.h │ │ │ │ ├── memory.h │ │ │ │ ├── node.h │ │ │ │ ├── node_data.h │ │ │ │ ├── node_iterator.h │ │ │ │ └── node_ref.h │ │ │ ├── emit.h │ │ │ ├── impl.h │ │ │ ├── iterator.h │ │ │ ├── node.h │ │ │ ├── parse.h │ │ │ ├── ptr.h │ │ │ └── type.h │ │ │ ├── noncopyable.h │ │ │ ├── null.h │ │ │ ├── ostream_wrapper.h │ │ │ ├── parser.h │ │ │ ├── stlemitter.h │ │ │ ├── traits.h │ │ │ └── yaml.h │ │ ├── install.txt │ │ ├── src │ │ ├── binary.cpp │ │ ├── collectionstack.h │ │ ├── contrib │ │ │ ├── graphbuilder.cpp │ │ │ ├── graphbuilderadapter.cpp │ │ │ └── graphbuilderadapter.h │ │ ├── convert.cpp │ │ ├── directives.cpp │ │ ├── directives.h │ │ ├── emit.cpp │ │ ├── emitfromevents.cpp │ │ ├── emitter.cpp │ │ ├── emitterstate.cpp │ │ ├── emitterstate.h │ │ ├── emitterutils.cpp │ │ ├── emitterutils.h │ │ ├── exceptions.cpp │ │ ├── exp.cpp │ │ ├── exp.h │ │ ├── indentation.h │ │ ├── memory.cpp │ │ ├── node.cpp │ │ ├── node_data.cpp │ │ ├── nodebuilder.cpp │ │ ├── nodebuilder.h │ │ ├── nodeevents.cpp │ │ ├── nodeevents.h │ │ ├── null.cpp │ │ ├── ostream_wrapper.cpp │ │ ├── parse.cpp │ │ ├── parser.cpp │ │ ├── ptr_vector.h │ │ ├── regex_yaml.cpp │ │ ├── regex_yaml.h │ │ ├── regeximpl.h │ │ ├── scanner.cpp │ │ ├── scanner.h │ │ ├── scanscalar.cpp │ │ ├── scanscalar.h │ │ ├── scantag.cpp │ │ ├── scantag.h │ │ ├── scantoken.cpp │ │ ├── setting.h │ │ ├── simplekey.cpp │ │ ├── singledocparser.cpp │ │ ├── singledocparser.h │ │ ├── stream.cpp │ │ ├── stream.h │ │ ├── streamcharsource.h │ │ ├── stringsource.h │ │ ├── tag.cpp │ │ ├── tag.h │ │ └── token.h │ │ ├── test │ │ ├── CMakeLists.txt │ │ ├── create-emitter-tests.py │ │ ├── gtest-1.8.0 │ │ │ ├── .gitignore │ │ │ ├── .travis.yml │ │ │ ├── CMakeLists.txt │ │ │ ├── README.md │ │ │ ├── appveyor.yml │ │ │ ├── googlemock │ │ │ │ ├── CHANGES │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── CONTRIBUTORS │ │ │ │ ├── LICENSE │ │ │ │ ├── Makefile.am │ │ │ │ ├── README.md │ │ │ │ ├── build-aux │ │ │ │ │ └── .keep │ │ │ │ ├── configure.ac │ │ │ │ ├── docs │ │ │ │ │ ├── CheatSheet.md │ │ │ │ │ ├── CookBook.md │ │ │ │ │ ├── DesignDoc.md │ │ │ │ │ ├── DevGuide.md │ │ │ │ │ ├── Documentation.md │ │ │ │ │ ├── ForDummies.md │ │ │ │ │ ├── FrequentlyAskedQuestions.md │ │ │ │ │ ├── KnownIssues.md │ │ │ │ │ ├── v1_5 │ │ │ │ │ │ ├── CheatSheet.md │ │ │ │ │ │ ├── CookBook.md │ │ │ │ │ │ ├── Documentation.md │ │ │ │ │ │ ├── ForDummies.md │ │ │ │ │ │ └── FrequentlyAskedQuestions.md │ │ │ │ │ ├── v1_6 │ │ │ │ │ │ ├── CheatSheet.md │ │ │ │ │ │ ├── CookBook.md │ │ │ │ │ │ ├── Documentation.md │ │ │ │ │ │ ├── ForDummies.md │ │ │ │ │ │ └── FrequentlyAskedQuestions.md │ │ │ │ │ └── v1_7 │ │ │ │ │ │ ├── CheatSheet.md │ │ │ │ │ │ ├── CookBook.md │ │ │ │ │ │ ├── Documentation.md │ │ │ │ │ │ ├── ForDummies.md │ │ │ │ │ │ └── FrequentlyAskedQuestions.md │ │ │ │ ├── include │ │ │ │ │ └── gmock │ │ │ │ │ │ ├── gmock-actions.h │ │ │ │ │ │ ├── gmock-cardinalities.h │ │ │ │ │ │ ├── gmock-generated-actions.h │ │ │ │ │ │ ├── gmock-generated-actions.h.pump │ │ │ │ │ │ ├── gmock-generated-function-mockers.h │ │ │ │ │ │ ├── gmock-generated-function-mockers.h.pump │ │ │ │ │ │ ├── gmock-generated-matchers.h │ │ │ │ │ │ ├── gmock-generated-matchers.h.pump │ │ │ │ │ │ ├── gmock-generated-nice-strict.h │ │ │ │ │ │ ├── gmock-generated-nice-strict.h.pump │ │ │ │ │ │ ├── gmock-matchers.h │ │ │ │ │ │ ├── gmock-more-actions.h │ │ │ │ │ │ ├── gmock-more-matchers.h │ │ │ │ │ │ ├── gmock-spec-builders.h │ │ │ │ │ │ ├── gmock.h │ │ │ │ │ │ └── internal │ │ │ │ │ │ ├── custom │ │ │ │ │ │ ├── gmock-generated-actions.h │ │ │ │ │ │ ├── gmock-generated-actions.h.pump │ │ │ │ │ │ ├── gmock-matchers.h │ │ │ │ │ │ └── gmock-port.h │ │ │ │ │ │ ├── gmock-generated-internal-utils.h │ │ │ │ │ │ ├── gmock-generated-internal-utils.h.pump │ │ │ │ │ │ ├── gmock-internal-utils.h │ │ │ │ │ │ └── gmock-port.h │ │ │ │ ├── make │ │ │ │ │ └── Makefile │ │ │ │ ├── msvc │ │ │ │ │ ├── 2005 │ │ │ │ │ │ ├── gmock.sln │ │ │ │ │ │ ├── gmock.vcproj │ │ │ │ │ │ ├── gmock_config.vsprops │ │ │ │ │ │ ├── gmock_main.vcproj │ │ │ │ │ │ └── gmock_test.vcproj │ │ │ │ │ ├── 2010 │ │ │ │ │ │ ├── gmock.sln │ │ │ │ │ │ ├── gmock.vcxproj │ │ │ │ │ │ ├── gmock_config.props │ │ │ │ │ │ ├── gmock_main.vcxproj │ │ │ │ │ │ └── gmock_test.vcxproj │ │ │ │ │ └── 2015 │ │ │ │ │ │ ├── gmock.sln │ │ │ │ │ │ ├── gmock.vcxproj │ │ │ │ │ │ ├── gmock_config.props │ │ │ │ │ │ ├── gmock_main.vcxproj │ │ │ │ │ │ └── gmock_test.vcxproj │ │ │ │ ├── scripts │ │ │ │ │ ├── fuse_gmock_files.py │ │ │ │ │ ├── generator │ │ │ │ │ │ ├── LICENSE │ │ │ │ │ │ ├── README │ │ │ │ │ │ ├── README.cppclean │ │ │ │ │ │ ├── cpp │ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ │ ├── ast.py │ │ │ │ │ │ │ ├── gmock_class.py │ │ │ │ │ │ │ ├── gmock_class_test.py │ │ │ │ │ │ │ ├── keywords.py │ │ │ │ │ │ │ ├── tokenize.py │ │ │ │ │ │ │ └── utils.py │ │ │ │ │ │ └── gmock_gen.py │ │ │ │ │ ├── gmock-config.in │ │ │ │ │ ├── gmock_doctor.py │ │ │ │ │ ├── upload.py │ │ │ │ │ └── upload_gmock.py │ │ │ │ ├── src │ │ │ │ │ ├── gmock-all.cc │ │ │ │ │ ├── gmock-cardinalities.cc │ │ │ │ │ ├── gmock-internal-utils.cc │ │ │ │ │ ├── gmock-matchers.cc │ │ │ │ │ ├── gmock-spec-builders.cc │ │ │ │ │ ├── gmock.cc │ │ │ │ │ └── gmock_main.cc │ │ │ │ └── test │ │ │ │ │ ├── gmock-actions_test.cc │ │ │ │ │ ├── gmock-cardinalities_test.cc │ │ │ │ │ ├── gmock-generated-actions_test.cc │ │ │ │ │ ├── gmock-generated-function-mockers_test.cc │ │ │ │ │ ├── gmock-generated-internal-utils_test.cc │ │ │ │ │ ├── gmock-generated-matchers_test.cc │ │ │ │ │ ├── gmock-internal-utils_test.cc │ │ │ │ │ ├── gmock-matchers_test.cc │ │ │ │ │ ├── gmock-more-actions_test.cc │ │ │ │ │ ├── gmock-nice-strict_test.cc │ │ │ │ │ ├── gmock-port_test.cc │ │ │ │ │ ├── gmock-spec-builders_test.cc │ │ │ │ │ ├── gmock_all_test.cc │ │ │ │ │ ├── gmock_ex_test.cc │ │ │ │ │ ├── gmock_leak_test.py │ │ │ │ │ ├── gmock_leak_test_.cc │ │ │ │ │ ├── gmock_link2_test.cc │ │ │ │ │ ├── gmock_link_test.cc │ │ │ │ │ ├── gmock_link_test.h │ │ │ │ │ ├── gmock_output_test.py │ │ │ │ │ ├── gmock_output_test_.cc │ │ │ │ │ ├── gmock_output_test_golden.txt │ │ │ │ │ ├── gmock_stress_test.cc │ │ │ │ │ ├── gmock_test.cc │ │ │ │ │ └── gmock_test_utils.py │ │ │ ├── googletest │ │ │ │ ├── .gitignore │ │ │ │ ├── CHANGES │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── CONTRIBUTORS │ │ │ │ ├── LICENSE │ │ │ │ ├── Makefile.am │ │ │ │ ├── README.md │ │ │ │ ├── build-aux │ │ │ │ │ └── .keep │ │ │ │ ├── cmake │ │ │ │ │ └── internal_utils.cmake │ │ │ │ ├── codegear │ │ │ │ │ ├── gtest.cbproj │ │ │ │ │ ├── gtest.groupproj │ │ │ │ │ ├── gtest_all.cc │ │ │ │ │ ├── gtest_link.cc │ │ │ │ │ ├── gtest_main.cbproj │ │ │ │ │ └── gtest_unittest.cbproj │ │ │ │ ├── configure.ac │ │ │ │ ├── docs │ │ │ │ │ ├── AdvancedGuide.md │ │ │ │ │ ├── DevGuide.md │ │ │ │ │ ├── Documentation.md │ │ │ │ │ ├── FAQ.md │ │ │ │ │ ├── Primer.md │ │ │ │ │ ├── PumpManual.md │ │ │ │ │ ├── Samples.md │ │ │ │ │ ├── V1_5_AdvancedGuide.md │ │ │ │ │ ├── V1_5_Documentation.md │ │ │ │ │ ├── V1_5_FAQ.md │ │ │ │ │ ├── V1_5_Primer.md │ │ │ │ │ ├── V1_5_PumpManual.md │ │ │ │ │ ├── V1_5_XcodeGuide.md │ │ │ │ │ ├── V1_6_AdvancedGuide.md │ │ │ │ │ ├── V1_6_Documentation.md │ │ │ │ │ ├── V1_6_FAQ.md │ │ │ │ │ ├── V1_6_Primer.md │ │ │ │ │ ├── V1_6_PumpManual.md │ │ │ │ │ ├── V1_6_Samples.md │ │ │ │ │ ├── V1_6_XcodeGuide.md │ │ │ │ │ ├── V1_7_AdvancedGuide.md │ │ │ │ │ ├── V1_7_Documentation.md │ │ │ │ │ ├── V1_7_FAQ.md │ │ │ │ │ ├── V1_7_Primer.md │ │ │ │ │ ├── V1_7_PumpManual.md │ │ │ │ │ ├── V1_7_Samples.md │ │ │ │ │ ├── V1_7_XcodeGuide.md │ │ │ │ │ └── XcodeGuide.md │ │ │ │ ├── include │ │ │ │ │ └── gtest │ │ │ │ │ │ ├── gtest-death-test.h │ │ │ │ │ │ ├── gtest-message.h │ │ │ │ │ │ ├── gtest-param-test.h │ │ │ │ │ │ ├── gtest-param-test.h.pump │ │ │ │ │ │ ├── gtest-printers.h │ │ │ │ │ │ ├── gtest-spi.h │ │ │ │ │ │ ├── gtest-test-part.h │ │ │ │ │ │ ├── gtest-typed-test.h │ │ │ │ │ │ ├── gtest.h │ │ │ │ │ │ ├── gtest_pred_impl.h │ │ │ │ │ │ ├── gtest_prod.h │ │ │ │ │ │ └── internal │ │ │ │ │ │ ├── custom │ │ │ │ │ │ ├── gtest-port.h │ │ │ │ │ │ ├── gtest-printers.h │ │ │ │ │ │ └── gtest.h │ │ │ │ │ │ ├── gtest-death-test-internal.h │ │ │ │ │ │ ├── gtest-filepath.h │ │ │ │ │ │ ├── gtest-internal.h │ │ │ │ │ │ ├── gtest-linked_ptr.h │ │ │ │ │ │ ├── gtest-param-util-generated.h │ │ │ │ │ │ ├── gtest-param-util-generated.h.pump │ │ │ │ │ │ ├── gtest-param-util.h │ │ │ │ │ │ ├── gtest-port-arch.h │ │ │ │ │ │ ├── gtest-port.h │ │ │ │ │ │ ├── gtest-string.h │ │ │ │ │ │ ├── gtest-tuple.h │ │ │ │ │ │ ├── gtest-tuple.h.pump │ │ │ │ │ │ ├── gtest-type-util.h │ │ │ │ │ │ └── gtest-type-util.h.pump │ │ │ │ ├── m4 │ │ │ │ │ ├── acx_pthread.m4 │ │ │ │ │ └── gtest.m4 │ │ │ │ ├── make │ │ │ │ │ └── Makefile │ │ │ │ ├── msvc │ │ │ │ │ ├── gtest-md.sln │ │ │ │ │ ├── gtest-md.vcproj │ │ │ │ │ ├── gtest.sln │ │ │ │ │ ├── gtest.vcproj │ │ │ │ │ ├── gtest_main-md.vcproj │ │ │ │ │ ├── gtest_main.vcproj │ │ │ │ │ ├── gtest_prod_test-md.vcproj │ │ │ │ │ ├── gtest_prod_test.vcproj │ │ │ │ │ ├── gtest_unittest-md.vcproj │ │ │ │ │ └── gtest_unittest.vcproj │ │ │ │ ├── samples │ │ │ │ │ ├── prime_tables.h │ │ │ │ │ ├── sample1.cc │ │ │ │ │ ├── sample1.h │ │ │ │ │ ├── sample10_unittest.cc │ │ │ │ │ ├── sample1_unittest.cc │ │ │ │ │ ├── sample2.cc │ │ │ │ │ ├── sample2.h │ │ │ │ │ ├── sample2_unittest.cc │ │ │ │ │ ├── sample3-inl.h │ │ │ │ │ ├── sample3_unittest.cc │ │ │ │ │ ├── sample4.cc │ │ │ │ │ ├── sample4.h │ │ │ │ │ ├── sample4_unittest.cc │ │ │ │ │ ├── sample5_unittest.cc │ │ │ │ │ ├── sample6_unittest.cc │ │ │ │ │ ├── sample7_unittest.cc │ │ │ │ │ ├── sample8_unittest.cc │ │ │ │ │ └── sample9_unittest.cc │ │ │ │ ├── scripts │ │ │ │ │ ├── common.py │ │ │ │ │ ├── fuse_gtest_files.py │ │ │ │ │ ├── gen_gtest_pred_impl.py │ │ │ │ │ ├── gtest-config.in │ │ │ │ │ ├── pump.py │ │ │ │ │ ├── release_docs.py │ │ │ │ │ ├── test │ │ │ │ │ │ └── Makefile │ │ │ │ │ ├── upload.py │ │ │ │ │ └── upload_gtest.py │ │ │ │ ├── src │ │ │ │ │ ├── gtest-all.cc │ │ │ │ │ ├── gtest-death-test.cc │ │ │ │ │ ├── gtest-filepath.cc │ │ │ │ │ ├── gtest-internal-inl.h │ │ │ │ │ ├── gtest-port.cc │ │ │ │ │ ├── gtest-printers.cc │ │ │ │ │ ├── gtest-test-part.cc │ │ │ │ │ ├── gtest-typed-test.cc │ │ │ │ │ ├── gtest.cc │ │ │ │ │ └── gtest_main.cc │ │ │ │ ├── test │ │ │ │ │ ├── gtest-death-test_ex_test.cc │ │ │ │ │ ├── gtest-death-test_test.cc │ │ │ │ │ ├── gtest-filepath_test.cc │ │ │ │ │ ├── gtest-linked_ptr_test.cc │ │ │ │ │ ├── gtest-listener_test.cc │ │ │ │ │ ├── gtest-message_test.cc │ │ │ │ │ ├── gtest-options_test.cc │ │ │ │ │ ├── gtest-param-test2_test.cc │ │ │ │ │ ├── gtest-param-test_test.cc │ │ │ │ │ ├── gtest-param-test_test.h │ │ │ │ │ ├── gtest-port_test.cc │ │ │ │ │ ├── gtest-printers_test.cc │ │ │ │ │ ├── gtest-test-part_test.cc │ │ │ │ │ ├── gtest-tuple_test.cc │ │ │ │ │ ├── gtest-typed-test2_test.cc │ │ │ │ │ ├── gtest-typed-test_test.cc │ │ │ │ │ ├── gtest-typed-test_test.h │ │ │ │ │ ├── gtest-unittest-api_test.cc │ │ │ │ │ ├── gtest_all_test.cc │ │ │ │ │ ├── gtest_break_on_failure_unittest.py │ │ │ │ │ ├── gtest_break_on_failure_unittest_.cc │ │ │ │ │ ├── gtest_catch_exceptions_test.py │ │ │ │ │ ├── gtest_catch_exceptions_test_.cc │ │ │ │ │ ├── gtest_color_test.py │ │ │ │ │ ├── gtest_color_test_.cc │ │ │ │ │ ├── gtest_env_var_test.py │ │ │ │ │ ├── gtest_env_var_test_.cc │ │ │ │ │ ├── gtest_environment_test.cc │ │ │ │ │ ├── gtest_filter_unittest.py │ │ │ │ │ ├── gtest_filter_unittest_.cc │ │ │ │ │ ├── gtest_help_test.py │ │ │ │ │ ├── gtest_help_test_.cc │ │ │ │ │ ├── gtest_list_tests_unittest.py │ │ │ │ │ ├── gtest_list_tests_unittest_.cc │ │ │ │ │ ├── gtest_main_unittest.cc │ │ │ │ │ ├── gtest_no_test_unittest.cc │ │ │ │ │ ├── gtest_output_test.py │ │ │ │ │ ├── gtest_output_test_.cc │ │ │ │ │ ├── gtest_output_test_golden_lin.txt │ │ │ │ │ ├── gtest_pred_impl_unittest.cc │ │ │ │ │ ├── gtest_premature_exit_test.cc │ │ │ │ │ ├── gtest_prod_test.cc │ │ │ │ │ ├── gtest_repeat_test.cc │ │ │ │ │ ├── gtest_shuffle_test.py │ │ │ │ │ ├── gtest_shuffle_test_.cc │ │ │ │ │ ├── gtest_sole_header_test.cc │ │ │ │ │ ├── gtest_stress_test.cc │ │ │ │ │ ├── gtest_test_utils.py │ │ │ │ │ ├── gtest_throw_on_failure_ex_test.cc │ │ │ │ │ ├── gtest_throw_on_failure_test.py │ │ │ │ │ ├── gtest_throw_on_failure_test_.cc │ │ │ │ │ ├── gtest_uninitialized_test.py │ │ │ │ │ ├── gtest_uninitialized_test_.cc │ │ │ │ │ ├── gtest_unittest.cc │ │ │ │ │ ├── gtest_xml_outfile1_test_.cc │ │ │ │ │ ├── gtest_xml_outfile2_test_.cc │ │ │ │ │ ├── gtest_xml_outfiles_test.py │ │ │ │ │ ├── gtest_xml_output_unittest.py │ │ │ │ │ ├── gtest_xml_output_unittest_.cc │ │ │ │ │ ├── gtest_xml_test_utils.py │ │ │ │ │ ├── production.cc │ │ │ │ │ └── production.h │ │ │ │ └── xcode │ │ │ │ │ ├── Config │ │ │ │ │ ├── DebugProject.xcconfig │ │ │ │ │ ├── FrameworkTarget.xcconfig │ │ │ │ │ ├── General.xcconfig │ │ │ │ │ ├── ReleaseProject.xcconfig │ │ │ │ │ ├── StaticLibraryTarget.xcconfig │ │ │ │ │ └── TestTarget.xcconfig │ │ │ │ │ ├── Resources │ │ │ │ │ └── Info.plist │ │ │ │ │ ├── Samples │ │ │ │ │ └── FrameworkSample │ │ │ │ │ │ ├── Info.plist │ │ │ │ │ │ ├── WidgetFramework.xcodeproj │ │ │ │ │ │ └── project.pbxproj │ │ │ │ │ │ ├── runtests.sh │ │ │ │ │ │ ├── widget.cc │ │ │ │ │ │ ├── widget.h │ │ │ │ │ │ └── widget_test.cc │ │ │ │ │ ├── Scripts │ │ │ │ │ ├── runtests.sh │ │ │ │ │ └── versiongenerate.py │ │ │ │ │ └── gtest.xcodeproj │ │ │ │ │ └── project.pbxproj │ │ │ └── travis.sh │ │ ├── handler_test.h │ │ ├── integration │ │ │ ├── emitter_test.cpp │ │ │ ├── encoding_test.cpp │ │ │ ├── gen_emitter_test.cpp │ │ │ ├── handler_spec_test.cpp │ │ │ ├── handler_test.cpp │ │ │ ├── load_node_test.cpp │ │ │ └── node_spec_test.cpp │ │ ├── main.cpp │ │ ├── mock_event_handler.h │ │ ├── node │ │ │ └── node_test.cpp │ │ ├── ostream_wrapper_test.cpp │ │ ├── regex_test.cpp │ │ └── specexamples.h │ │ ├── util │ │ ├── CMakeLists.txt │ │ ├── api.cpp │ │ ├── parse.cpp │ │ ├── read.cpp │ │ └── sandbox.cpp │ │ ├── yaml-cpp-config-version.cmake.in │ │ ├── yaml-cpp-config.cmake.in │ │ └── yaml-cpp.pc.cmake │ ├── doc │ ├── Open-loop-vs-Closed-loop-clients.md │ ├── README.md │ ├── build.md │ ├── ec2.md │ ├── paxos.md │ ├── plot.md │ ├── profile.md │ └── run.md │ ├── extern_interface │ ├── scheduler.c │ └── scheduler.h │ ├── fabfile.py │ ├── old-test │ ├── benchmark_service.cc │ ├── benchmark_service.h │ ├── benchmark_service.rpc │ ├── rpc_microbench.cc │ ├── rpcbench.cc │ ├── test-bench-kv.cc │ ├── test-helper.h │ ├── test-txnbench.cc │ ├── test_alock.cc │ ├── test_config_sharding.cc │ ├── test_dtxn.cc │ ├── test_graph.cc │ ├── test_io_wait.cc │ ├── test_lambda.cc │ ├── test_marshal_value.cc │ ├── test_rand.cc │ ├── test_sm.cc │ ├── test_timer.cc │ ├── test_tpca.cc │ └── testharness.cc │ ├── pylib │ ├── __init__.py │ ├── cluster.py │ ├── ec2.py │ ├── placement_strategy.py │ ├── ps.py │ └── security_group.py │ ├── requirements.txt │ ├── run.py │ ├── run_all.py │ ├── run_all.sh │ ├── run_teaker.rb │ ├── scripts │ ├── add_latency.sh │ ├── aggregate_and_graph.sh │ ├── aggregate_run_output.py │ ├── archive.sh │ ├── aws │ │ ├── build_aws.sh │ │ ├── clean_test.sh │ │ ├── deploy_multi.sh │ │ ├── deploy_single.sh │ │ ├── extract_csv.sh │ │ ├── fabmulti │ │ ├── fabsingle │ │ ├── get_results.sh │ │ ├── graph_zipf.sh │ │ ├── instance_ip.sh │ │ ├── process_aws_run.py │ │ ├── run_multi.sh │ │ ├── run_single.sh │ │ ├── run_single_shard.sh │ │ └── zipf_graph.py │ ├── csv_order_by_experiement_id.sh │ ├── del_latency.sh │ ├── deptran_gdb.sh │ ├── extract_txn_info.py │ ├── figure.py │ ├── fixup_yml.py │ ├── generate_latex_macros.py │ ├── make_graphs │ ├── paxos-microbench.py │ ├── plot │ │ ├── cmds.gnuplot │ │ └── do_plot.py │ ├── pprof │ ├── strace.sh │ └── tpccd │ │ ├── tpcc_mix_10_nlog_figure_gen_local.py │ │ └── tpcc_no_10_nlog_figure_gen_local.py │ ├── src │ ├── bench │ │ ├── micro │ │ │ ├── procedure.cc │ │ │ ├── procedure.h │ │ │ ├── workload.cc │ │ │ └── workload.h │ │ ├── paxos_lib │ │ │ └── network_bench.cc │ │ ├── rw │ │ │ ├── procedure.cc │ │ │ ├── procedure.h │ │ │ ├── sharding.h │ │ │ ├── workload.cc │ │ │ └── workload.h │ │ ├── tpca │ │ │ ├── payment.cc │ │ │ ├── payment.h │ │ │ ├── sharding.cc │ │ │ ├── sharding.h │ │ │ ├── workload.cc │ │ │ ├── workload.h │ │ │ └── zipf.h │ │ ├── tpcc │ │ │ ├── delivery.cc │ │ │ ├── new_order.cc │ │ │ ├── order_status.cc │ │ │ ├── payment.cc │ │ │ ├── procedure.cc │ │ │ ├── procedure.h │ │ │ ├── sharding.cc │ │ │ ├── sharding.h │ │ │ ├── stock_level.cc │ │ │ ├── workload.cc │ │ │ └── workload.h │ │ ├── tpcc_dist │ │ │ ├── procedure.cc │ │ │ └── procedure.h │ │ └── tpcc_real_dist │ │ │ ├── delivery.cc │ │ │ ├── new_order.cc │ │ │ ├── payment.cc │ │ │ ├── procedure.cc │ │ │ ├── procedure.h │ │ │ ├── sharding.cc │ │ │ ├── sharding.h │ │ │ ├── workload.cc │ │ │ └── workload.h │ ├── deptran │ │ ├── 2pl │ │ │ ├── coordinator.h │ │ │ ├── scheduler.cc │ │ │ ├── scheduler.h │ │ │ ├── tx.cc │ │ │ └── tx.h │ │ ├── __dep__.h │ │ ├── __init__.py │ │ ├── benchmark_control_rpc.cc │ │ ├── benchmark_control_rpc.h │ │ ├── classic │ │ │ ├── coordinator.cc │ │ │ ├── coordinator.h │ │ │ ├── scheduler.cc │ │ │ ├── scheduler.h │ │ │ ├── tpc_command.cc │ │ │ ├── tpc_command.h │ │ │ └── tx.h │ │ ├── client_worker.cc │ │ ├── client_worker.h │ │ ├── command.h │ │ ├── command_marshaler.cc │ │ ├── command_marshaler.h │ │ ├── communicator.cc │ │ ├── communicator.h │ │ ├── compress.h │ │ ├── concurrentqueue.h │ │ ├── config.cc │ │ ├── config.h │ │ ├── constants.h │ │ ├── coordinator.cc │ │ ├── coordinator.h │ │ ├── empty.cc │ │ ├── epochs.h │ │ ├── executor.cc │ │ ├── executor.h │ │ ├── extern_c │ │ │ ├── frame.cc │ │ │ ├── frame.h │ │ │ ├── sched.cc │ │ │ └── sched.h │ │ ├── februus │ │ │ ├── commo.cc │ │ │ ├── commo.h │ │ │ ├── coordinator.cc │ │ │ ├── coordinator.h │ │ │ ├── frame.cc │ │ │ ├── frame.h │ │ │ ├── scheduler.cc │ │ │ ├── scheduler.h │ │ │ └── tx.h │ │ ├── frame.cc │ │ ├── frame.h │ │ ├── janus │ │ │ ├── commo.cc │ │ │ ├── commo.h │ │ │ ├── coordinator.cc │ │ │ ├── coordinator.h │ │ │ ├── frame.cc │ │ │ ├── frame.h │ │ │ ├── scheduler.cc │ │ │ ├── scheduler.h │ │ │ ├── tx.cc │ │ │ └── tx.h │ │ ├── kvdb.h │ │ ├── marshal-value.cc │ │ ├── marshal-value.h │ │ ├── msg.h │ │ ├── multi_value.cc │ │ ├── multi_value.h │ │ ├── network.h │ │ ├── network.rpc │ │ ├── network_client │ │ │ ├── network_impl.cc │ │ │ └── network_impl.h │ │ ├── none │ │ │ ├── coordinator.cc │ │ │ ├── coordinator.h │ │ │ ├── scheduler.cc │ │ │ └── scheduler.h │ │ ├── occ │ │ │ ├── coordinator.h │ │ │ ├── scheduler.cc │ │ │ ├── scheduler.h │ │ │ ├── tx.cc │ │ │ └── tx.h │ │ ├── paxos │ │ │ ├── commo.cc │ │ │ ├── commo.h │ │ │ ├── coordinator.cc │ │ │ ├── coordinator.h │ │ │ ├── exec.cc │ │ │ ├── exec.h │ │ │ ├── frame.cc │ │ │ ├── frame.h │ │ │ ├── server.cc │ │ │ ├── server.h │ │ │ ├── service.cc │ │ │ └── service.h │ │ ├── paxos_main_helper.cc │ │ ├── paxos_worker.cc │ │ ├── paxos_worker.h │ │ ├── procedure.cc │ │ ├── procedure.h │ │ ├── rcc │ │ │ ├── commo.cc │ │ │ ├── commo.h │ │ │ ├── coord.cc │ │ │ ├── coord.h │ │ │ ├── dep_graph.cc │ │ │ ├── dep_graph.h │ │ │ ├── frame.cc │ │ │ ├── frame.h │ │ │ ├── graph.h │ │ │ ├── graph_marshaler.cc │ │ │ ├── graph_marshaler.h │ │ │ ├── row.cc │ │ │ ├── row.h │ │ │ ├── server.cc │ │ │ ├── server.h │ │ │ ├── tx.cc │ │ │ └── tx.h │ │ ├── rcc_rpc.h │ │ ├── rcc_rpc.py │ │ ├── rcc_rpc.rpc │ │ ├── s_main.cc │ │ ├── s_main.h │ │ ├── scheduler.cc │ │ ├── scheduler.h │ │ ├── server_worker.cc │ │ ├── server_worker.h │ │ ├── service.cc │ │ ├── service.h │ │ ├── sharding.cc │ │ ├── sharding.h │ │ ├── snow │ │ │ ├── ro6.cc │ │ │ ├── ro6.h │ │ │ ├── ro6_coord.cc │ │ │ ├── ro6_coord.h │ │ │ ├── ro6_row.cc │ │ │ └── ro6_row.h │ │ ├── tapir │ │ │ ├── commo.cc │ │ │ ├── commo.h │ │ │ ├── coordinator.cc │ │ │ ├── coordinator.h │ │ │ ├── frame.cc │ │ │ ├── frame.h │ │ │ ├── scheduler.cc │ │ │ ├── scheduler.h │ │ │ ├── tx.cc │ │ │ └── tx.h │ │ ├── troad │ │ │ ├── troad.cc │ │ │ └── troad.h │ │ ├── tx.cc │ │ ├── tx.h │ │ ├── txn_reg.cc │ │ ├── txn_reg.h │ │ ├── workload.cc │ │ └── workload.h │ ├── memdb │ │ ├── MurmurHash3.cc │ │ ├── MurmurHash3.h │ │ ├── blob.h │ │ ├── locking.h │ │ ├── row.cc │ │ ├── row.h │ │ ├── schema.cc │ │ ├── schema.h │ │ ├── snapshot.h │ │ ├── table.cc │ │ ├── table.h │ │ ├── txn.cc │ │ ├── txn.h │ │ ├── txn_2pl.cc │ │ ├── txn_2pl.h │ │ ├── txn_nested.cc │ │ ├── txn_nested.h │ │ ├── txn_occ.cc │ │ ├── txn_occ.h │ │ ├── txn_unsafe.cc │ │ ├── txn_unsafe.h │ │ ├── utils.cc │ │ ├── utils.h │ │ ├── value.cc │ │ ├── value.h │ │ ├── xxhash.cc │ │ └── xxhash.h │ ├── nc_main.cc │ ├── nc_util.h │ ├── rrr │ │ ├── .gitignore │ │ ├── README.md │ │ ├── base │ │ │ ├── all.hpp │ │ │ ├── basetypes.cpp │ │ │ ├── basetypes.hpp │ │ │ ├── debugging.cpp │ │ │ ├── debugging.hpp │ │ │ ├── logging.cpp │ │ │ ├── logging.hpp │ │ │ ├── misc.cpp │ │ │ ├── misc.hpp │ │ │ ├── strop.cpp │ │ │ ├── strop.hpp │ │ │ ├── threading.cpp │ │ │ ├── threading.hpp │ │ │ ├── unittest.cpp │ │ │ └── unittest.hpp │ │ ├── misc │ │ │ ├── alarm.hpp │ │ │ ├── alock.cpp │ │ │ ├── alock.hpp │ │ │ ├── cpuinfo.hpp │ │ │ ├── dball.hpp │ │ │ ├── marshal.cpp │ │ │ ├── marshal.hpp │ │ │ ├── rand.cpp │ │ │ ├── rand.hpp │ │ │ ├── recorder.cpp │ │ │ ├── recorder.hpp │ │ │ ├── stat.hpp │ │ │ └── stat.hpp~ │ │ ├── mq │ │ │ ├── buf.cpp │ │ │ ├── buf.h │ │ │ ├── client.cpp │ │ │ ├── client.h │ │ │ ├── polling.cpp │ │ │ ├── polling.h │ │ │ ├── rpc.cpp │ │ │ ├── rpc.h │ │ │ ├── rpc_comm.h │ │ │ ├── server.cpp │ │ │ └── server.h │ │ ├── pylib │ │ │ ├── simplerpc │ │ │ │ ├── __init__.py │ │ │ │ ├── _pyrpc.cpp │ │ │ │ ├── client.py │ │ │ │ ├── future.py │ │ │ │ ├── marshal.py │ │ │ │ └── server.py │ │ │ ├── simplerpcgen │ │ │ │ ├── __init__.py │ │ │ │ ├── lang_cpp.py │ │ │ │ ├── lang_python.py │ │ │ │ ├── misc.py │ │ │ │ ├── rpcgen.g │ │ │ │ └── rpcgen.py │ │ │ └── yapps │ │ │ │ ├── __init__.py │ │ │ │ ├── grammar.py │ │ │ │ ├── main.py │ │ │ │ ├── parsetree.py │ │ │ │ └── runtime.py │ │ ├── reactor │ │ │ ├── coroutine.cc │ │ │ ├── coroutine.h │ │ │ ├── epoll_wrapper.cc │ │ │ ├── epoll_wrapper.h │ │ │ ├── event.cc │ │ │ ├── event.h │ │ │ ├── quorum_event.cc │ │ │ ├── quorum_event.h │ │ │ ├── reactor.cc │ │ │ └── reactor.h │ │ ├── rlog │ │ │ ├── log_server.cpp │ │ │ ├── log_service.h │ │ │ ├── log_service.rpc │ │ │ ├── log_service_impl.cpp │ │ │ ├── log_service_impl.h │ │ │ ├── rlog.cpp │ │ │ └── rlog.h │ │ ├── rpc │ │ │ ├── client.cpp │ │ │ ├── client.hpp │ │ │ ├── server.cpp │ │ │ ├── server.hpp │ │ │ ├── utils.cpp │ │ │ └── utils.hpp │ │ ├── rpc_test │ │ │ ├── Makefile │ │ │ ├── c.cpp │ │ │ ├── c_share_n.cpp │ │ │ ├── c_share_one.cpp │ │ │ ├── counter.rpc │ │ │ └── s.cpp │ │ ├── rrr.h │ │ ├── rrr.hpp │ │ └── utils │ │ │ ├── hostname.h │ │ │ ├── logger.h │ │ │ ├── mht.h │ │ │ ├── mlock.h │ │ │ ├── mpr_dag.h │ │ │ ├── mpr_hash.h │ │ │ ├── mpr_queue.h │ │ │ ├── mpr_thread_pool.h │ │ │ ├── mtime.h │ │ │ └── safe_assert.h │ └── run.cc │ ├── template │ ├── figure_gen_template.py │ ├── kv_bench.xml │ ├── micro_bench.xml │ ├── micro_bench_figure_gen_template.py │ ├── ori_tpcc_mix.xml │ ├── ori_tpcc_no.xml │ ├── scale_figure_gen_template.py │ ├── scale_tpcc_mix_1.xml │ ├── scale_tpcc_mix_10.xml │ ├── scale_tpcc_no_1.xml │ ├── scale_tpcc_no_10.xml │ ├── tpcc_mix_1.xml │ ├── tpcc_mix_10.xml │ ├── tpcc_no_1.xml │ └── tpcc_no_10.xml │ ├── test │ └── coroutine.cc │ ├── test_run.py │ ├── tla │ ├── Janus.tla │ └── Janus.toolbox │ │ ├── Janus___SingleTxn1C1P1R.launch │ │ ├── Janus___SingleTxn1C1P2R.launch │ │ ├── Janus___SingleTxn1C1P3R.launch │ │ ├── Janus___SingleTxn1C3P1R.launch │ │ ├── Janus___SingleTxn1C3P2R.launch │ │ ├── Janus___SingleTxn1C3P3R.launch │ │ ├── Janus___SingleTxn2C1P1R.launch │ │ ├── Janus___SingleTxn2C1P2R.launch │ │ ├── Janus___SingleTxn2C1P3R.launch │ │ ├── Janus___SingleTxn2C2P1R.launch │ │ └── Janus___SingleTxn3C1P1R.launch │ ├── tmp.sh │ ├── waf │ └── wscript ├── thread.cc ├── thread.h ├── ticker.cc ├── ticker.h ├── todo.txt ├── tpcc_18_threads.sh ├── tpcc_2_threads.sh ├── tuple.cc ├── tuple.h ├── txn.cc ├── txn.h ├── txn_btree.cc ├── txn_btree.h ├── txn_impl.h ├── txn_proto2_impl.cc ├── txn_proto2_impl.h ├── typed_txn_btree.h ├── util.h ├── varint.cc ├── varint.h ├── varkey.h └── ycsb_2_threads.sh /2pl_software.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stonysystems/rolis/c141efef78b436022d9aba2aa7a6e3b7d4b9c98b/2pl_software.pdf -------------------------------------------------------------------------------- /AUTHORS: -------------------------------------------------------------------------------- 1 | Stephen Tu 2 | stephentu@csail.mit.edu 3 | 4 | Wenting Zheng 5 | wzheng@mit.edu 6 | 7 | Eddie Kohler 8 | kohler@seas.harvard.edu 9 | -------------------------------------------------------------------------------- /BUILD: -------------------------------------------------------------------------------- 1 | Baseline: 2 | 3 | $ sudo apt-get install libnuma-dev 4 | 5 | To use with jemalloc: 6 | 7 | $ sudo apt-get install libjemalloc-dev 8 | 9 | Note that jemalloc2 has a bug which shows up in tests- make sure 10 | to use jemalloc3 11 | 12 | To use with tcmalloc: 13 | 14 | $ sudo apt-get install libgoogle-perftools-dev 15 | 16 | For benchmarks: 17 | 18 | $ sudo apt-get install libaio-dev 19 | -------------------------------------------------------------------------------- /CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.6) 2 | project(silo_ons) 3 | 4 | set(CMAKE_CXX_STANDARD 11) 5 | 6 | include_directories( 7 | masstree 8 | ) 9 | 10 | file(GLOB SOURCE_FILES 11 | "benchmarks/sto/*.cc" 12 | "benchmarks/sto/*.hh" 13 | benchmarks/sto/*.c 14 | benchmarks/sto/*.cpp 15 | benchmarks/sto/*.h 16 | benchmarks/*.h 17 | benchmarks/*.cc 18 | benchmarks/*.hh 19 | config/*.h 20 | masstree/*.hh 21 | masstree/*.cc 22 | masstree/*.c 23 | masstree/*.h 24 | record/*.h 25 | third-party/lz4/*.c 26 | third-party/lz4/*.h 27 | *.cc 28 | *.h 29 | *.hh) 30 | 31 | add_executable(silo_ons ${SOURCE_FILES}) -------------------------------------------------------------------------------- /amd64.h: -------------------------------------------------------------------------------- 1 | #ifndef _AMD64_H_ 2 | #define _AMD64_H_ 3 | 4 | #include "macros.h" 5 | #include 6 | 7 | inline ALWAYS_INLINE void 8 | nop_pause() 9 | { 10 | __asm volatile("pause" : :); 11 | } 12 | 13 | inline ALWAYS_INLINE uint64_t 14 | rdtsc(void) 15 | { 16 | uint32_t hi, lo; 17 | __asm volatile("rdtsc" : "=a"(lo), "=d"(hi)); 18 | return ((uint64_t)lo)|(((uint64_t)hi)<<32); 19 | } 20 | 21 | #endif /* _AMD64_H_ */ 22 | -------------------------------------------------------------------------------- /analytics/Scripts/exe.sh: -------------------------------------------------------------------------------- 1 | python gen_io_graphs.py "csv_logs/$1/" NewOut "$1" 2 | -------------------------------------------------------------------------------- /analytics/reports/scaled_report.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stonysystems/rolis/c141efef78b436022d9aba2aa7a6e3b7d4b9c98b/analytics/reports/scaled_report.png -------------------------------------------------------------------------------- /b0.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | sudo cgdelete -g cpuset:/cpulimitl 3 | mkdir -p xxxx15 4 | sudo cgcreate -t $USER:$USER -a $USER:$USER -g cpuset:/cpulimitl 5 | trd=$1 6 | let yyml=trd+1 7 | defvalue=1000 8 | batch=${2:-$defvalue} 9 | sudo cgset -r cpuset.mems=0 cpulimitl 10 | sudo cgset -r cpuset.cpus=0-$trd cpulimitl 11 | sudo cgexec -g cpuset:cpulimitl ./out-perf.masstree/benchmarks/dbtest --verbose --bench tpcc --db-type mbta --scale-factor $trd --num-threads $trd --numa-memory 1G --parallel-loading --runtime 30 --bench-opts="--cpu-gap 1 --num-cpus 32" -F third-party/paxos/config/1silo_1paxos_2follower/$yyml.yml -F third-party/paxos/config/occ_paxos.yml --paxos-leader-config --multi-process -P localhost -S $batch > ./xxxx15/leader-$trd-$batch.log 2>&1 & 12 | #tail -f ./xxxx15/leader-$trd-$batch.log 13 | -------------------------------------------------------------------------------- /b1.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | sudo cgdelete -g cpuset:/cpulimitf 3 | mkdir -p xxxx15 4 | sudo cgcreate -t $USER:$USER -a $USER:$USER -g cpuset:/cpulimitf 5 | trd=$1 6 | let yyml=trd+1 7 | sudo cgset -r cpuset.mems=0 cpulimitf 8 | #sudo cgset -r cpuset.cpus=0-$trd cpulimitf 9 | sudo cgset -r cpuset.cpus=0-$trd cpulimitf 10 | sudo cgexec -g cpuset:cpulimitf ./out-perf.masstree/benchmarks/dbtest --verbose --bench tpcc --db-type mbta --scale-factor $trd --num-threads $trd --numa-memory 1G --parallel-loading --runtime 30 --bench-opts="--cpu-gap 1 --num-cpus 32" -F third-party/paxos/config/1silo_1paxos_2follower/$yyml.yml -F third-party/paxos/config/occ_paxos.yml --multi-process -P p1 > ./xxxx15/follower-$trd.log 2>&1 & 11 | #tail -f ./xxxx15/follower-$trd.log 12 | -------------------------------------------------------------------------------- /b2.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | sudo cgdelete -g cpuset:/cpulimitf 3 | mkdir -p xxxx15 4 | sudo cgcreate -t $USER:$USER -a $USER:$USER -g cpuset:/cpulimitf 5 | trd=$1 6 | let yyml=trd+1 7 | sudo cgset -r cpuset.mems=0 cpulimitf 8 | sudo cgset -r cpuset.cpus=0-$trd cpulimitf 9 | sudo cgexec -g cpuset:cpulimitf ./out-perf.masstree/benchmarks/dbtest --verbose --bench tpcc --db-type mbta --scale-factor $trd --num-threads $trd --numa-memory 1G --parallel-loading --runtime 30 --bench-opts="--cpu-gap 1 --num-cpus 32" -F third-party/paxos/config/1silo_1paxos_2follower/$yyml.yml -F third-party/paxos/config/occ_paxos.yml --multi-process -P p2 > ./xxxx15/follower-$trd.log 2>&1 & 10 | #tail -f ./xxxx15/follower-$trd.log 11 | -------------------------------------------------------------------------------- /benchmarks/data/test: -------------------------------------------------------------------------------- 1 | 1 thread 2 | -------------------------------------------------------------------------------- /benchmarks/data/tpcc_rmw: -------------------------------------------------------------------------------- 1 | 1 thread 2 | us 3 | ([65924.8, 65425.5, 66266.1, 65262.3, 65330.1], []) 4 | readmywrites 5 | ([63792.5, 64025.0, 63591.3, 63405.1, 64068.8], [862374.0, 865490.0, 859606.0, 857073.0, 866082.0]) 6 | nodupreads 7 | ([57958.5, 58104.9, 57806.9, 57816.7, 57706.4], []) 8 | nodupnohash 9 | ([51729.1, 51503.7, 51480.7, 51651.6, 51535], []) -------------------------------------------------------------------------------- /benchmarks/gc_runner.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -x 4 | 5 | BENCH=./dbtest 6 | NTHREADS=28 7 | PREFIX=$1 8 | YCSB_MEM=`python -c "print int(100+1.4*$NTHREADS)"` 9 | 10 | $BENCH \ 11 | --verbose \ 12 | --bench ycsb \ 13 | --db-type ndb-proto2 \ 14 | --scale-factor 320000 \ 15 | --num-threads $NTHREADS \ 16 | --bench-opts '--workload-mix 80,0,20,0' \ 17 | --numa-memory ${YCSB_MEM}G \ 18 | --parallel-loading \ 19 | --runtime 60 \ 20 | --slow-exit 2>&1 | grep chain_ > results/$PREFIX-ycsb-chains.txt 21 | 22 | $BENCH \ 23 | --verbose \ 24 | --bench tpcc \ 25 | --db-type ndb-proto2 \ 26 | --scale-factor $NTHREADS \ 27 | --num-threads $NTHREADS \ 28 | --numa-memory $((4 * $NTHREADS))G \ 29 | --parallel-loading \ 30 | --runtime 60 \ 31 | --slow-exit 2>&1 | grep chain_ > results/$PREFIX-tpcc-chains.txt 32 | -------------------------------------------------------------------------------- /benchmarks/mbta_wrapper.hh: -------------------------------------------------------------------------------- 1 | mbta_wrapper_norm.hh -------------------------------------------------------------------------------- /benchmarks/plotter.py: -------------------------------------------------------------------------------- 1 | import matplotlib 2 | matplotlib.use('Agg') 3 | import pylab as plt 4 | 5 | import sys 6 | 7 | if __name__ == '__main__': 8 | (_, fname, oname) = sys.argv 9 | execfile(fname) 10 | for name, data in zip(DBS, RESULTS): 11 | plt.plot(THREADS, data) 12 | plt.xlabel('num threads') 13 | plt.ylabel('ops/sec') 14 | plt.title('') 15 | plt.legend(DBS, loc='lower right') 16 | plt.savefig(oname) 17 | -------------------------------------------------------------------------------- /benchmarks/results/istc11-5-18-13-ycsb-chains.txt: -------------------------------------------------------------------------------- 1 | chain_1 : 205228249 2 | chain_2 : 91357162 3 | chain_3 : 20138902 4 | chain_4 : 2929173 5 | chain_5 : 317410 6 | chain_6 : 27081 7 | chain_7 : 1901 8 | chain_8 : 113 9 | chain_9 : 9 10 | -------------------------------------------------------------------------------- /benchmarks/results/istc3-8-1-13_log_reduce_size_1.py: -------------------------------------------------------------------------------- 1 | RESULTS = [({'scale_factor': 28, 'db': 'ndb-proto2', 'par_load': False, 'threads': 28, 'bench_opts': '', 'log_fake_writes': False, 'retry': False, 'name': 'scale_tpcc', 'bench': 'tpcc', 'numa_memory': '112G', 'persist': True}, [(670070.0, 670070.0, 0.041655, 103.69, 27.1961), (669347.0, 669347.0, 0.0416867, 141.835, 27.8873), (669634.0, 669634.0, 0.0416696, 102.389, 26.9551)]), ({'scale_factor': 32, 'db': 'ndb-proto2', 'par_load': False, 'threads': 32, 'bench_opts': '', 'log_fake_writes': False, 'retry': False, 'name': 'scale_tpcc', 'bench': 'tpcc', 'numa_memory': '128G', 'persist': True}, [(712434.0, 712434.0, 0.0447644, 214.95, 29.8936), (700382.0, 700382.0, 0.0455139, 240.664, 27.8856), (712480.0, 712480.0, 0.0447631, 234.26, 28.4791)])] 2 | -------------------------------------------------------------------------------- /benchmarks/results/tom-1-22-13.py: -------------------------------------------------------------------------------- 1 | #DBS = ('ndb-proto1', 'ndb-proto2') 2 | DBS = ('nu-db', 'ndb-proto2') 3 | THREADS = (1, 2, 4, 8, 16, 24, 32, 40, 48) 4 | RESULTS = [[24379.9, 39409.1, 69521.0, 111504.0, 93520.6, 74206.8, 59526.8, 29637.5, 24295.9], [133844.0, 78811.2, 82557.7, 76093.0, 77323.0, 78700.7, 76911.0, 41490.7, 38417.1], [342565.0, 793420.0, 1467000.0, 2850810.0, 4767900.0, 5926280.0, 6401950.0, 7045150.0, 6379670.0], [535023.0, 804012.0, 1551490.0, 2866770.0, 4857820.0, 7156630.0, 8767890.0, 9970540.0, 9252390.0]] 5 | -------------------------------------------------------------------------------- /benchmarks/sto/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | *.o 3 | *.d 4 | *.dSYM 5 | *.a 6 | *.swp 7 | *~ 8 | *# 9 | /.deps 10 | /GNUmakefile 11 | /autom4te.cache 12 | /config.h 13 | /config.h.in 14 | /config.log 15 | /config.mk 16 | /config.status 17 | /configure 18 | /stamp-h 19 | /single 20 | /array1 21 | /concurrent 22 | /genericTest 23 | /list1 24 | /pqueue 25 | /predicates 26 | /rbtree 27 | /singleelems 28 | /tags 29 | /trans_test 30 | /vector 31 | /hashtable_nostm 32 | /ht_mt 33 | /iterators 34 | /pqVsIt 35 | /ex-counter 36 | /unit-rcu 37 | /unit-tarray 38 | /unit-tbox 39 | /unit-tgeneric 40 | /unit-tintpredicate 41 | /unit-tcounter 42 | /unit-tvector 43 | /unit-tvector-nopred 44 | .ycm_* 45 | -------------------------------------------------------------------------------- /benchmarks/sto/.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "masstree-beta"] 2 | path = masstree-beta 3 | url = git@github.com:kohler/masstree-beta.git 4 | -------------------------------------------------------------------------------- /benchmarks/sto/Boosting_standalone.cc: -------------------------------------------------------------------------------- 1 | #include "Boosting_standalone.hh" 2 | 3 | Boosting __boostingtransactions[BOOSTING_MAX_THREADS]; 4 | -------------------------------------------------------------------------------- /benchmarks/sto/Boosting_sto.hh: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #if defined(BOOSTING) && defined(STO) 4 | 5 | #include "Transaction.hh" 6 | #include "TransUndoable.hh" 7 | #include "TransPessimisticLocking.hh" 8 | 9 | extern TransPessimisticLocking __pessimistLocking; 10 | 11 | #define ADD_UNDO(callback, self, context1, context2) ({ assert(self == this); this->add_undo(callback, context1, context2); }) 12 | #define TRANS_READ_LOCK(lock) __pessimistLocking.transReadLock(lock) 13 | #define TRANS_WRITE_LOCK(lock) __pessimistLocking.transWriteLock(lock) 14 | 15 | #endif 16 | -------------------------------------------------------------------------------- /benchmarks/sto/Boosting_tl2.hh: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #if defined(BOOSTING) && defined(STM) 4 | #include "Boosting_common.hh" 5 | #include "../../../tl2/stm.h" 6 | 7 | #define DO_ABORT() TxAbort(STM_CUR_SELF) 8 | #define POST_COMMIT(callback, context1, context2, context3) TxPostCommitHook(STM_CUR_SELF, (callback), (context1), (context2), (context3)) 9 | #define ON_ABORT(callback, context1, context2, context3) TxAbortHook(STM_CUR_SELF, (callback), (context1), (context2), (context3)) 10 | #endif 11 | -------------------------------------------------------------------------------- /benchmarks/sto/IntStr.hh: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "str.hh" 3 | 4 | struct IntStr { 5 | char s_[16]; 6 | lcdf::Str str_; 7 | IntStr(int i) { 8 | int n = snprintf(s_, sizeof(s_), "%d", i); 9 | str_.assign(s_, n); 10 | } 11 | lcdf::Str& str() { 12 | return str_; 13 | } 14 | operator lcdf::Str&() { 15 | return str_; 16 | } 17 | }; 18 | -------------------------------------------------------------------------------- /benchmarks/sto/MassTrans.cc: -------------------------------------------------------------------------------- 1 | #include "MassTrans.hh" 2 | 3 | volatile bool recovering = false; 4 | volatile uint64_t globalepoch = 1; 5 | -------------------------------------------------------------------------------- /benchmarks/sto/Packer.cc: -------------------------------------------------------------------------------- 1 | #include "Packer.hh" 2 | 3 | constexpr size_t TransactionBuffer::default_capacity; 4 | 5 | void TransactionBuffer::hard_get_space(size_t needed) { 6 | size_t s = std::max(needed, e_ ? e_->size * 2 : default_capacity); 7 | elt* ne = (elt*) new char[sizeof(elthdr) + s]; 8 | ne->next = e_; 9 | ne->pos = 0; 10 | ne->size = s; 11 | if (e_) 12 | size_ += e_->pos; 13 | e_ = ne; 14 | } 15 | 16 | void TransactionBuffer::hard_clear(bool delete_all) { 17 | while (e_ && e_->next) { 18 | elt* e = e_->next; 19 | e_->next = e->next; 20 | e->clear(); 21 | delete[] (char*) e; 22 | } 23 | if (e_) 24 | e_->clear(); 25 | size_ = 0; 26 | if (e_ && delete_all) { 27 | delete[] (char*) e_; 28 | e_ = 0; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /benchmarks/sto/bootstrap.sh: -------------------------------------------------------------------------------- 1 | #! /bin/sh 2 | 3 | if [ ! -f masstree-beta/configure.ac ]; then 4 | git submodule init 5 | git submodule update 6 | fi 7 | 8 | if [ -x masstree-beta/bootstrap.sh ]; then 9 | ( cd masstree-beta; ./bootstrap.sh ) 10 | fi 11 | 12 | autoreconf -i 13 | 14 | echo "Now, run ./configure [ARGS]." 15 | -------------------------------------------------------------------------------- /benchmarks/sto/masstree-beta/AUTHORS: -------------------------------------------------------------------------------- 1 | Eddie Kohler 2 | kohler@seas.harvard.edu 3 | 4 | Yandong Mao 5 | ydmao@csail.mit.edu 6 | 7 | Robert Morris 8 | rtm@csail.mit.edu 9 | -------------------------------------------------------------------------------- /benchmarks/sto/masstree-beta/bootstrap.sh: -------------------------------------------------------------------------------- 1 | #! /bin/sh -e 2 | 3 | autoreconf -i 4 | 5 | echo "Now, run ./configure." 6 | -------------------------------------------------------------------------------- /benchmarks/sto/masstree-beta/doc/.gitignore: -------------------------------------------------------------------------------- 1 | *.aux 2 | *.bbl 3 | *.blg 4 | *.dvi 5 | *.log 6 | *.mpx 7 | *_[0-9]*.eps 8 | *_[0-9]*.pdf 9 | !GNUmakefile 10 | mpxerr.tex 11 | spec.pdf 12 | -------------------------------------------------------------------------------- /benchmarks/sto/masstree-beta/scantest.cc: -------------------------------------------------------------------------------- 1 | #include "query_masstree.hh" 2 | 3 | using namespace Masstree; 4 | 5 | kvepoch_t global_log_epoch = 0; 6 | volatile mrcu_epoch_type globalepoch = 1; // global epoch, updated by main thread regularly 7 | volatile bool recovering = false; // so don't add log entries, and free old value immediately 8 | kvtimestamp_t initial_timestamp; 9 | 10 | int 11 | main(int argc, char *argv[]) 12 | { 13 | (void) argc; 14 | (void) argv; 15 | 16 | threadinfo* ti = threadinfo::make(threadinfo::TI_MAIN, -1); 17 | default_table::test(*ti); 18 | } 19 | -------------------------------------------------------------------------------- /benchmarks/sto/microbenchmarks/parse.py: -------------------------------------------------------------------------------- 1 | # Parses the json results of running run_benchmark.py for the boosting 2 | # microbenchmark. Expects the json filename as an argument. 3 | 4 | import sys 5 | import json 6 | from collections import defaultdict 7 | 8 | with open(sys.argv[1], 'r') as f: 9 | d = json.loads(f.read()) 10 | 11 | names = {"2": "sto", "3": "boostingsto", "4": "boostingstandalone"} 12 | output = defaultdict(lambda: {"results": []}) 13 | for k, v in d.iteritems(): 14 | idx = k.split('/')[0] 15 | name = names[idx] 16 | output[name]["results"].append(v["time"]) 17 | 18 | for k, v in output.iteritems(): 19 | res = sorted(v["results"]) 20 | v["results"] = res 21 | v["median"] = res[len(res)/2] 22 | v["min"] = res[0] 23 | v["max"] = res[-1] 24 | 25 | print json.dumps(output, indent=2) 26 | -------------------------------------------------------------------------------- /benchmarks/sto/randgen.hh: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | struct Rand { 4 | typedef uint32_t result_type; 5 | result_type x; 6 | Rand(result_type a, result_type = 0) 7 | : x(a) { 8 | } 9 | result_type operator()() { 10 | x = 1103515245 * x + 12345; 11 | return x & 0x7fffffff; 12 | } 13 | static constexpr result_type min() { 14 | return 0; 15 | } 16 | static constexpr result_type max() { 17 | return 0x7fffffff; 18 | } 19 | }; 20 | -------------------------------------------------------------------------------- /benchmarks/sto/srandomdev.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | 6 | #if __cplusplus__ 7 | extern "C" { 8 | #endif 9 | void srandomdev(void) { 10 | unsigned seed; 11 | size_t n = 0; 12 | FILE* f = fopen("/dev/urandom", "r"); 13 | if (f) { 14 | n = fread(&seed, sizeof(seed), 1, f); 15 | fclose(f); 16 | } 17 | if (!n) { 18 | struct timeval tv; 19 | gettimeofday(&tv, NULL); 20 | seed = (getpid() ^ tv.tv_sec) + tv.tv_usec; 21 | } 22 | srandom(seed); 23 | } 24 | #if __cplusplus__ 25 | } 26 | #endif 27 | -------------------------------------------------------------------------------- /benchmarks/sto/tm.h: -------------------------------------------------------------------------------- 1 | #include "Transaction.hh" 2 | 3 | #define TM_BEGIN() TRANSACTION { 4 | #define TM_END() } RETRY(true) 5 | #define TM_ARG /* Nothing */ 6 | #define TM_ARG_ALONE /* Nothing */ 7 | -------------------------------------------------------------------------------- /boost.sh: -------------------------------------------------------------------------------- 1 | cd ~ 2 | wget https://boostorg.jfrog.io/artifactory/main/release/1.70.0/source/boost_1_70_0.tar.bz2 3 | tar -xvf boost_1_70_0.tar.bz2 4 | cd boost_1_70_0/ 5 | ./bootstrap.sh --prefix=/usr/local --libdir=/usr/lib/x86_64-linux-gnu 6 | sudo ./b2 install -j8 7 | -------------------------------------------------------------------------------- /c0.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | sudo cgdelete -g cpuset:/cpulimitl 3 | mkdir -p xxxx14 4 | sudo cgcreate -t $USER:$USER -a $USER:$USER -g cpuset:/cpulimitl 5 | trd=$1 6 | let yyml=trd+1 7 | sudo cgset -r cpuset.mems=0 cpulimitl 8 | sudo cgset -r cpuset.cpus=0-$trd cpulimitl 9 | sudo cgexec -g cpuset:cpulimitl ./out-perf.masstree/benchmarks/dbtest --verbose --bench tpcc --db-type mbta --scale-factor $trd --num-threads $trd --numa-memory 1G --parallel-loading --runtime 30 --bench-opts="--cpu-gap 1 --num-cpus 32" -F third-party/paxos/config/1silo_1paxos_1follower/$yyml.yml -F third-party/paxos/config/occ_paxos.yml --paxos-leader-config --multi-process -P localhost -S 1000 > ./xxxx14/leader-$trd.log 2>&1 & 10 | #tail -f ./xxxx14/leader-$trd.log 11 | -------------------------------------------------------------------------------- /c1.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | sudo cgdelete -g cpuset:/cpulimitf 3 | mkdir -p xxxx14 4 | sudo cgcreate -t $USER:$USER -a $USER:$USER -g cpuset:/cpulimitf 5 | trd=$1 6 | let yyml=trd+1 7 | sudo cgset -r cpuset.mems=0 cpulimitf 8 | sudo cgset -r cpuset.cpus=0-$trd cpulimitf 9 | sudo cgexec -g cpuset:cpulimitf ./out-perf.masstree/benchmarks/dbtest --verbose --bench tpcc --db-type mbta --scale-factor $trd --num-threads $trd --numa-memory 1G --parallel-loading --runtime 30 --bench-opts="--cpu-gap 1 --num-cpus 32" -F third-party/paxos/config/1silo_1paxos_1follower/$yyml.yml -F third-party/paxos/config/occ_paxos.yml --multi-process -P p1 > ./xxxx14/follower-$trd.log 2>&1 & 10 | #tail -f ./xxxx14/follower-$trd.log 11 | -------------------------------------------------------------------------------- /config/config-backoff.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #define SPINLOCK_BACKOFF 4 | -------------------------------------------------------------------------------- /config/config-factor-fake-compression.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #define LOGGER_UNSAFE_FAKE_COMPRESSION 4 | -------------------------------------------------------------------------------- /config/config-factor-gc-nowriteinplace.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #define PROTO2_CAN_DISABLE_GC 4 | #define PROTO2_CAN_DISABLE_SNAPSHOTS 5 | #define DISABLE_OVERWRITE_IN_PLACE 6 | -------------------------------------------------------------------------------- /config/config-factor-gc.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #define PROTO2_CAN_DISABLE_GC 4 | #define PROTO2_CAN_DISABLE_SNAPSHOTS 5 | -------------------------------------------------------------------------------- /config/config-perf.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | -------------------------------------------------------------------------------- /config/config-sandbox.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | /** 4 | * just for debugging purposes - 5 | * sandbox builds should never be used for any performance testing 6 | */ 7 | -------------------------------------------------------------------------------- /docker/docker.sh: -------------------------------------------------------------------------------- 1 | docker build -t weihshen/ubuntu_eurosys2022 . 2 | # docker run --name ubuntu_rolis_18.04 -d -p 5555:22 weihshen/ubuntu_rolis 3 | docker run --name ubuntu_eurosys2022 -t weihshen/ubuntu_eurosys2022 -------------------------------------------------------------------------------- /docker/gitconfig: -------------------------------------------------------------------------------- 1 | [user] 2 | name = ubuntu 3 | email = ubuntu@example.com 4 | [color] 5 | status = auto 6 | branch = auto 7 | interactive = auto 8 | diff = auto 9 | [alias] 10 | freebase = pull --rebase 11 | commit = commit -a -v 12 | ci = commit 13 | co = checkout 14 | b = branch 15 | nb = checkout -b 16 | st = status 17 | -------------------------------------------------------------------------------- /documents/arch.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stonysystems/rolis/c141efef78b436022d9aba2aa7a6e3b7d4b9c98b/documents/arch.jpeg -------------------------------------------------------------------------------- /documents/case2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stonysystems/rolis/c141efef78b436022d9aba2aa7a6e3b7d4b9c98b/documents/case2.png -------------------------------------------------------------------------------- /documents/diff-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stonysystems/rolis/c141efef78b436022d9aba2aa7a6e3b7d4b9c98b/documents/diff-1.png -------------------------------------------------------------------------------- /documents/diff-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stonysystems/rolis/c141efef78b436022d9aba2aa7a6e3b7d4b9c98b/documents/diff-2.png -------------------------------------------------------------------------------- /documents/diff-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stonysystems/rolis/c141efef78b436022d9aba2aa7a6e3b7d4b9c98b/documents/diff-3.png -------------------------------------------------------------------------------- /documents/exp1-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stonysystems/rolis/c141efef78b436022d9aba2aa7a6e3b7d4b9c98b/documents/exp1-1.png -------------------------------------------------------------------------------- /documents/exp1-result.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stonysystems/rolis/c141efef78b436022d9aba2aa7a6e3b7d4b9c98b/documents/exp1-result.png -------------------------------------------------------------------------------- /documents/exp2-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stonysystems/rolis/c141efef78b436022d9aba2aa7a6e3b7d4b9c98b/documents/exp2-1.png -------------------------------------------------------------------------------- /documents/exp2-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stonysystems/rolis/c141efef78b436022d9aba2aa7a6e3b7d4b9c98b/documents/exp2-2.png -------------------------------------------------------------------------------- /documents/exp2-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stonysystems/rolis/c141efef78b436022d9aba2aa7a6e3b7d4b9c98b/documents/exp2-3.png -------------------------------------------------------------------------------- /documents/exp2-results.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stonysystems/rolis/c141efef78b436022d9aba2aa7a6e3b7d4b9c98b/documents/exp2-results.png -------------------------------------------------------------------------------- /documents/exp3-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stonysystems/rolis/c141efef78b436022d9aba2aa7a6e3b7d4b9c98b/documents/exp3-1.png -------------------------------------------------------------------------------- /documents/exp4-results.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stonysystems/rolis/c141efef78b436022d9aba2aa7a6e3b7d4b9c98b/documents/exp4-results.png -------------------------------------------------------------------------------- /documents/exp6-results.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stonysystems/rolis/c141efef78b436022d9aba2aa7a6e3b7d4b9c98b/documents/exp6-results.png -------------------------------------------------------------------------------- /documents/exp7-results.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stonysystems/rolis/c141efef78b436022d9aba2aa7a6e3b7d4b9c98b/documents/exp7-results.png -------------------------------------------------------------------------------- /documents/exp8-results.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stonysystems/rolis/c141efef78b436022d9aba2aa7a6e3b7d4b9c98b/documents/exp8-results.png -------------------------------------------------------------------------------- /documents/failover-follower.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stonysystems/rolis/c141efef78b436022d9aba2aa7a6e3b7d4b9c98b/documents/failover-follower.png -------------------------------------------------------------------------------- /documents/latexdiff-result.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stonysystems/rolis/c141efef78b436022d9aba2aa7a6e3b7d4b9c98b/documents/latexdiff-result.png -------------------------------------------------------------------------------- /documents/major_claim.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stonysystems/rolis/c141efef78b436022d9aba2aa7a6e3b7d4b9c98b/documents/major_claim.PNG -------------------------------------------------------------------------------- /documents/minimal_exp.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stonysystems/rolis/c141efef78b436022d9aba2aa7a6e3b7d4b9c98b/documents/minimal_exp.PNG -------------------------------------------------------------------------------- /documents/one-click.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stonysystems/rolis/c141efef78b436022d9aba2aa7a6e3b7d4b9c98b/documents/one-click.png -------------------------------------------------------------------------------- /documents/rerun-exp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stonysystems/rolis/c141efef78b436022d9aba2aa7a6e3b7d4b9c98b/documents/rerun-exp.png -------------------------------------------------------------------------------- /documents/results-all.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stonysystems/rolis/c141efef78b436022d9aba2aa7a6e3b7d4b9c98b/documents/results-all.png -------------------------------------------------------------------------------- /exp_scalability_tpcc.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stonysystems/rolis/c141efef78b436022d9aba2aa7a6e3b7d4b9c98b/exp_scalability_tpcc.pdf -------------------------------------------------------------------------------- /f0.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | sudo cgdelete -g cpuset:/cpulimitl 3 | mkdir -p xxxx16 4 | sudo cgcreate -t $USER:$USER -a $USER:$USER -g cpuset:/cpulimitl 5 | trd=$1 6 | let yyml=trd+1 7 | defvalue=1000 8 | batch=${2:-$defvalue} 9 | sudo cgset -r cpuset.mems=0 cpulimitl 10 | sudo cgset -r cpuset.cpus=0-$trd cpulimitl 11 | sudo cgexec -g cpuset:cpulimitl ./out-perf.masstree/benchmarks/dbtest --verbose --bench tpcc --db-type mbta --scale-factor $trd --num-threads $trd --numa-memory 1G --parallel-loading --runtime 30 --bench-opts="--cpu-gap 1 --num-cpus 32" -F third-party/paxos/config/1silo_1paxos_4follower/$yyml.yml -F third-party/paxos/config/occ_paxos.yml --paxos-leader-config --multi-process -P localhost -S $batch > ./xxxx16/leader-$trd-$batch.log 2>&1 & 12 | #tail -f ./xxxx16/leader-$trd-$batch.log 13 | -------------------------------------------------------------------------------- /f1.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | sudo cgdelete -g cpuset:/cpulimitf 3 | mkdir -p xxxx16 4 | sudo cgcreate -t $USER:$USER -a $USER:$USER -g cpuset:/cpulimitf 5 | trd=$1 6 | let yyml=trd+1 7 | sudo cgset -r cpuset.mems=0 cpulimitf 8 | #sudo cgset -r cpuset.cpus=0-$trd cpulimitf 9 | sudo cgset -r cpuset.cpus=0-$trd cpulimitf 10 | sudo cgexec -g cpuset:cpulimitf ./out-perf.masstree/benchmarks/dbtest --verbose --bench tpcc --db-type mbta --scale-factor $trd --num-threads $trd --numa-memory 1G --parallel-loading --runtime 30 --bench-opts="--cpu-gap 1 --num-cpus 32" -F third-party/paxos/config/1silo_1paxos_4follower/$yyml.yml -F third-party/paxos/config/occ_paxos.yml --multi-process -P p1 > ./xxxx16/follower-$trd.log 2>&1 & 11 | #tail -f ./xxxx16/follower-$trd.log 12 | -------------------------------------------------------------------------------- /f2.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | sudo cgdelete -g cpuset:/cpulimitf 3 | mkdir -p xxxx16 4 | sudo cgcreate -t $USER:$USER -a $USER:$USER -g cpuset:/cpulimitf 5 | trd=$1 6 | let yyml=trd+1 7 | sudo cgset -r cpuset.mems=0 cpulimitf 8 | sudo cgset -r cpuset.cpus=0-$trd cpulimitf 9 | sudo cgexec -g cpuset:cpulimitf ./out-perf.masstree/benchmarks/dbtest --verbose --bench tpcc --db-type mbta --scale-factor $trd --num-threads $trd --numa-memory 1G --parallel-loading --runtime 30 --bench-opts="--cpu-gap 1 --num-cpus 32" -F third-party/paxos/config/1silo_1paxos_4follower/$yyml.yml -F third-party/paxos/config/occ_paxos.yml --multi-process -P p2 > ./xxxx16/follower-$trd.log 2>&1 & 10 | #tail -f ./xxxx16/follower-$trd.log 11 | -------------------------------------------------------------------------------- /f3.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | sudo cgdelete -g cpuset:/cpulimitf 3 | mkdir -p xxxx16 4 | sudo cgcreate -t $USER:$USER -a $USER:$USER -g cpuset:/cpulimitf 5 | trd=$1 6 | let yyml=trd+1 7 | sudo cgset -r cpuset.mems=0 cpulimitf 8 | sudo cgset -r cpuset.cpus=0-$trd cpulimitf 9 | sudo cgexec -g cpuset:cpulimitf ./out-perf.masstree/benchmarks/dbtest --verbose --bench tpcc --db-type mbta --scale-factor $trd --num-threads $trd --numa-memory 1G --parallel-loading --runtime 30 --bench-opts="--cpu-gap 1 --num-cpus 32" -F third-party/paxos/config/1silo_1paxos_4follower/$yyml.yml -F third-party/paxos/config/occ_paxos.yml --multi-process -P p3 > ./xxxx16/follower-$trd.log 2>&1 & 10 | #tail -f ./xxxx16/follower-$trd.log 11 | -------------------------------------------------------------------------------- /f4.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | sudo cgdelete -g cpuset:/cpulimitf 3 | mkdir -p xxxx16 4 | sudo cgcreate -t $USER:$USER -a $USER:$USER -g cpuset:/cpulimitf 5 | trd=$1 6 | let yyml=trd+1 7 | sudo cgset -r cpuset.mems=0 cpulimitf 8 | sudo cgset -r cpuset.cpus=0-$trd cpulimitf 9 | sudo cgexec -g cpuset:cpulimitf ./out-perf.masstree/benchmarks/dbtest --verbose --bench tpcc --db-type mbta --scale-factor $trd --num-threads $trd --numa-memory 1G --parallel-loading --runtime 30 --bench-opts="--cpu-gap 1 --num-cpus 32" -F third-party/paxos/config/1silo_1paxos_4follower/$yyml.yml -F third-party/paxos/config/occ_paxos.yml --multi-process -P p4 > ./xxxx16/follower-$trd.log 2>&1 & 10 | #tail -f ./xxxx16/follower-$trd.log 11 | -------------------------------------------------------------------------------- /fileutils.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | 6 | class fileutils { 7 | public: 8 | 9 | static int 10 | writeall(int fd, const char *buf, int n) 11 | { 12 | while (n) { 13 | int r = write(fd, buf, n); 14 | if (unlikely(r < 0)) 15 | return r; 16 | buf += r; 17 | n -= r; 18 | } 19 | return 0; 20 | } 21 | 22 | static int 23 | readall(int fd, char *buf, int n) 24 | { 25 | while (n) { 26 | int r = read(fd, buf, n); 27 | if (r == 0) 28 | return EOF; 29 | if (r < 0) { 30 | if (errno == EAGAIN || errno == EWOULDBLOCK || errno == EINTR) 31 | continue; 32 | return r; 33 | } 34 | buf += r; 35 | n -= r; 36 | } 37 | return 0; 38 | } 39 | 40 | }; 41 | -------------------------------------------------------------------------------- /init_submodule.sh: -------------------------------------------------------------------------------- 1 | git submodule update --init --recursive 2 | cd third-party/paxos/ 3 | git checkout Rolis-failover 4 | 5 | cd ../.. 6 | -------------------------------------------------------------------------------- /lockguard.h: -------------------------------------------------------------------------------- 1 | #ifndef _LOCK_GUARD_H_ 2 | #define _LOCK_GUARD_H_ 3 | 4 | #include 5 | 6 | #include "macros.h" 7 | 8 | // this exists in C++11, but we have a richer constructor 9 | template 10 | class lock_guard { 11 | public: 12 | 13 | template 14 | lock_guard(BasicLockable *l, Args &&... args) 15 | : l(l) 16 | { 17 | if (likely(l)) 18 | l->lock(std::forward(args)...); 19 | } 20 | 21 | template 22 | lock_guard(BasicLockable &l, Args &&... args) 23 | : l(&l) 24 | { 25 | l.lock(std::forward(args)...); 26 | } 27 | 28 | ~lock_guard() 29 | { 30 | if (likely(l)) 31 | l->unlock(); 32 | } 33 | private: 34 | BasicLockable *l; 35 | }; 36 | 37 | #endif /* _LOCK_GUARD_H_ */ 38 | -------------------------------------------------------------------------------- /logs/Log-ThreadID-0.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stonysystems/rolis/c141efef78b436022d9aba2aa7a6e3b7d4b9c98b/logs/Log-ThreadID-0.txt -------------------------------------------------------------------------------- /logs/Log-ThreadID-1.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stonysystems/rolis/c141efef78b436022d9aba2aa7a6e3b7d4b9c98b/logs/Log-ThreadID-1.txt -------------------------------------------------------------------------------- /logs/Log-ThreadID-2.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stonysystems/rolis/c141efef78b436022d9aba2aa7a6e3b7d4b9c98b/logs/Log-ThreadID-2.txt -------------------------------------------------------------------------------- /logs/Log-ThreadID-3.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stonysystems/rolis/c141efef78b436022d9aba2aa7a6e3b7d4b9c98b/logs/Log-ThreadID-3.txt -------------------------------------------------------------------------------- /logs/Log-ThreadID-4.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stonysystems/rolis/c141efef78b436022d9aba2aa7a6e3b7d4b9c98b/logs/Log-ThreadID-4.txt -------------------------------------------------------------------------------- /masstree/AUTHORS: -------------------------------------------------------------------------------- 1 | Eddie Kohler 2 | kohler@seas.harvard.edu 3 | 4 | Yandong Mao 5 | ydmao@csail.mit.edu 6 | 7 | Robert Morris 8 | rtm@csail.mit.edu 9 | -------------------------------------------------------------------------------- /masstree/bootstrap.sh: -------------------------------------------------------------------------------- 1 | #! /bin/sh -e 2 | 3 | autoreconf -i 4 | 5 | echo "Now, run ./configure." 6 | -------------------------------------------------------------------------------- /masstree/doc/.gitignore: -------------------------------------------------------------------------------- 1 | *.aux 2 | *.bbl 3 | *.blg 4 | *.dvi 5 | *.log 6 | *.mpx 7 | *_[0-9]*.eps 8 | *_[0-9]*.pdf 9 | !GNUmakefile 10 | mpxerr.tex 11 | spec.pdf 12 | -------------------------------------------------------------------------------- /masstree/scantest.cc: -------------------------------------------------------------------------------- 1 | #include "query_masstree.hh" 2 | 3 | using namespace Masstree; 4 | 5 | kvepoch_t global_log_epoch = 0; 6 | volatile mrcu_epoch_type globalepoch = 1; // global epoch, updated by main thread regularly 7 | volatile bool recovering = false; // so don't add log entries, and free old value immediately 8 | kvtimestamp_t initial_timestamp; 9 | 10 | int 11 | main(int argc, char *argv[]) 12 | { 13 | (void) argc; 14 | (void) argv; 15 | 16 | threadinfo* ti = threadinfo::make(threadinfo::TI_MAIN, -1); 17 | default_table::test(*ti); 18 | } 19 | -------------------------------------------------------------------------------- /mb0.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | sudo cgdelete -g cpuset:/cpulimitl 3 | mkdir -p xxxx15_micro 4 | sudo cgcreate -t $USER:$USER -a $USER:$USER -g cpuset:/cpulimitl 5 | trd=$1 6 | let yyml=trd+1 7 | sudo cgset -r cpuset.mems=0 cpulimitl 8 | sudo cgset -r cpuset.cpus=0-$trd cpulimitl 9 | sudo cgexec -g cpuset:cpulimitl ./out-perf.masstree/benchmarks/dbtest --verbose --bench micro --db-type mbta --scale-factor $trd --num-threads $trd --numa-memory 1G --parallel-loading --runtime 30 -F third-party/paxos/config/1silo_1paxos_2follower/$yyml.yml -F third-party/paxos/config/occ_paxos.yml --paxos-leader-config --multi-process -P localhost -S 10000 > ./xxxx15_micro/leader-$trd-1000.log 2>&1 & 10 | #tail -f ./xxxx15_micro/leader-$trd.log 11 | -------------------------------------------------------------------------------- /mb1.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | sudo cgdelete -g cpuset:/cpulimitf 3 | mkdir -p xxxx15_micro 4 | sudo cgcreate -t $USER:$USER -a $USER:$USER -g cpuset:/cpulimitf 5 | trd=$1 6 | let yyml=trd+1 7 | sudo cgset -r cpuset.mems=0 cpulimitf 8 | sudo cgset -r cpuset.cpus=0-$trd cpulimitf 9 | sudo cgexec -g cpuset:cpulimitf ./out-perf.masstree/benchmarks/dbtest --verbose --bench micro --db-type mbta --scale-factor $trd --num-threads $trd --numa-memory 1G --parallel-loading --runtime 30 -F third-party/paxos/config/1silo_1paxos_2follower/$yyml.yml -F third-party/paxos/config/occ_paxos.yml --multi-process -P p1 > ./xxxx15_micro/follower-$trd-1000.log 2>&1 & 10 | #tail -f ./xxxx15_micro/follower-$trd.log 11 | -------------------------------------------------------------------------------- /mb2.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | sudo cgdelete -g cpuset:/cpulimitf 3 | mkdir -p xxxx15_micro 4 | sudo cgcreate -t $USER:$USER -a $USER:$USER -g cpuset:/cpulimitf 5 | trd=$1 6 | let yyml=trd+1 7 | sudo cgset -r cpuset.mems=0 cpulimitf 8 | sudo cgset -r cpuset.cpus=0-$trd cpulimitf 9 | sudo cgexec -g cpuset:cpulimitf ./out-perf.masstree/benchmarks/dbtest --verbose --bench micro --db-type mbta --scale-factor $trd --num-threads $trd --numa-memory 1G --parallel-loading --runtime 30 -F third-party/paxos/config/1silo_1paxos_2follower/$yyml.yml -F third-party/paxos/config/occ_paxos.yml --multi-process -P p2 > ./xxxx15_micro/follower-$trd-1000.log 2>&1 & 10 | #tail -f ./xxxx15_micro/follower-$trd.log 11 | -------------------------------------------------------------------------------- /mc0.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | sudo cgdelete -g cpuset:/cpulimitl 3 | mkdir -p xxxx14_micro 4 | sudo cgcreate -t $USER:$USER -a $USER:$USER -g cpuset:/cpulimitl 5 | trd=$1 6 | let yyml=trd+1 7 | sudo cgset -r cpuset.mems=0 cpulimitl 8 | sudo cgset -r cpuset.cpus=0-$trd cpulimitl 9 | sudo cgexec -g cpuset:cpulimitl ./out-perf.masstree/benchmarks/dbtest --verbose --bench micro --db-type mbta --scale-factor $trd --num-threads $trd --numa-memory 1G --parallel-loading --runtime 30 -F third-party/paxos/config/1silo_1paxos_1follower/$yyml.yml -F third-party/paxos/config/occ_paxos.yml --paxos-leader-config --multi-process -P localhost -S 10000 > ./xxxx14_micro/leader-$trd.log 2>&1 & 10 | #tail -f ./xxxx14_micro/leader-$trd.log 11 | -------------------------------------------------------------------------------- /mc1.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | sudo cgdelete -g cpuset:/cpulimitf 3 | mkdir -p xxxx14_micro 4 | sudo cgcreate -t $USER:$USER -a $USER:$USER -g cpuset:/cpulimitf 5 | trd=$1 6 | let yyml=trd+1 7 | sudo cgset -r cpuset.mems=0 cpulimitf 8 | sudo cgset -r cpuset.cpus=0-$trd cpulimitf 9 | sudo cgexec -g cpuset:cpulimitf ./out-perf.masstree/benchmarks/dbtest --verbose --bench micro --db-type mbta --scale-factor $trd --num-threads $trd --numa-memory 1G --parallel-loading --runtime 30 -F third-party/paxos/config/1silo_1paxos_1follower/$yyml.yml -F third-party/paxos/config/occ_paxos.yml --multi-process -P p1 > ./xxxx14_micro/follower-$trd.log 2>&1 & 10 | #tail -f ./xxxx14_micro/follower-$trd.log 11 | -------------------------------------------------------------------------------- /multi-failover-variable.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # ulimit -n 8000 3 | # ----------------------------------------------------------------------------- compile ------------------------------------------------------------------------------------------ 4 | sudo pkill -f dbtest 5 | # make paxos 6 | make clean && make -j dbtest MODE=perf \ 7 | SERIALIZE=1 PAXOS_ENABLE_CONFIG=1 \ 8 | STO_BATCH_CONFIG=2 SILO_SERIAL_CONFIG=0 \ 9 | PAXOS_ZERO_CONFIG=0 LOGGING_TO_ONLY_FILE=0 \ 10 | OPTIMIZED_REPLAY=1 REPLAY_FOLLOWER=1 \ 11 | DBTEST_PROFILER=0 FAIL_OVER_CONFIG=1 FAIL_OVER_VARIABLE_CONFIG=1 -------------------------------------------------------------------------------- /multi-failover.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # ulimit -n 8000 3 | # ----------------------------------------------------------------------------- compile ------------------------------------------------------------------------------------------ 4 | sudo pkill -f dbtest 5 | # make paxos 6 | make clean && make -j dbtest MODE=perf \ 7 | SERIALIZE=1 PAXOS_ENABLE_CONFIG=1 \ 8 | STO_BATCH_CONFIG=2 SILO_SERIAL_CONFIG=0 \ 9 | PAXOS_ZERO_CONFIG=0 LOGGING_TO_ONLY_FILE=0 \ 10 | OPTIMIZED_REPLAY=1 REPLAY_FOLLOWER=1 \ 11 | DBTEST_PROFILER=0 FAIL_OVER_CONFIG=1 -------------------------------------------------------------------------------- /multi-latency.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # ulimit -n 8000 3 | # ----------------------------------------------------------------------------- compile ------------------------------------------------------------------------------------------ 4 | 5 | sudo pkill -f dbtest 6 | # make paxos 7 | make clean && make -j dbtest MODE=perf \ 8 | SERIALIZE=1 PAXOS_ENABLE_CONFIG=1 \ 9 | STO_BATCH_CONFIG=2 SILO_SERIAL_CONFIG=0 \ 10 | PAXOS_ZERO_CONFIG=0 LOGGING_TO_ONLY_FILE=0 \ 11 | OPTIMIZED_REPLAY=1 REPLAY_FOLLOWER=1 \ 12 | DBTEST_PROFILER=0 TRACKER_LATENCY=1 -------------------------------------------------------------------------------- /multi-skewed.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # ulimit -n 8000 3 | # ----------------------------------------------------------------------------- compile ------------------------------------------------------------------------------------------ 4 | sudo pkill -f dbtest 5 | # make paxos 6 | # for the skewed workload, using backoff instead of perf?? 7 | make clean && make -j dbtest MODE=perf \ 8 | SERIALIZE=1 PAXOS_ENABLE_CONFIG=1 \ 9 | STO_BATCH_CONFIG=2 SILO_SERIAL_CONFIG=0 \ 10 | PAXOS_ZERO_CONFIG=0 LOGGING_TO_ONLY_FILE=0 \ 11 | OPTIMIZED_REPLAY=1 REPLAY_FOLLOWER=1 \ 12 | DBTEST_PROFILER=0 SKEWED_WORKLOAD=1 13 | -------------------------------------------------------------------------------- /multi.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # ulimit -n 8000 3 | # ----------------------------------------------------------------------------- compile ------------------------------------------------------------------------------------------ 4 | sudo pkill -f dbtest 5 | # make paxos 6 | make clean && make -j dbtest MODE=perf \ 7 | SERIALIZE=1 PAXOS_ENABLE_CONFIG=1 \ 8 | STO_BATCH_CONFIG=2 SILO_SERIAL_CONFIG=0 \ 9 | PAXOS_ZERO_CONFIG=0 LOGGING_TO_ONLY_FILE=0 \ 10 | OPTIMIZED_REPLAY=1 REPLAY_FOLLOWER=1 \ 11 | DBTEST_PROFILER=0 -------------------------------------------------------------------------------- /multi_client.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # ulimit -n 8000 3 | # ----------------------------------------------------------------------------- compile ------------------------------------------------------------------------------------------ 4 | sudo pkill -f dbtest 5 | # make paxos 6 | # for the skewed workload, using backoff instead of perf?? 7 | make clean && make -j dbtest MODE=perf \ 8 | SERIALIZE=1 PAXOS_ENABLE_CONFIG=1 \ 9 | STO_BATCH_CONFIG=2 SILO_SERIAL_CONFIG=0 \ 10 | PAXOS_ZERO_CONFIG=0 LOGGING_TO_ONLY_FILE=0 \ 11 | OPTIMIZED_REPLAY=1 REPLAY_FOLLOWER=1 \ 12 | DBTEST_PROFILER=0 NETWORK_CLIENT_CONFIG=1 13 | -------------------------------------------------------------------------------- /multi_client_ycsb.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # ulimit -n 8000 3 | # ----------------------------------------------------------------------------- compile ------------------------------------------------------------------------------------------ 4 | sudo pkill -f dbtest 5 | # make paxos 6 | # for the skewed workload, using backoff instead of perf?? 7 | make clean && make -j dbtest MODE=perf \ 8 | SERIALIZE=1 PAXOS_ENABLE_CONFIG=1 \ 9 | STO_BATCH_CONFIG=2 SILO_SERIAL_CONFIG=0 \ 10 | PAXOS_ZERO_CONFIG=0 LOGGING_TO_ONLY_FILE=0 \ 11 | OPTIMIZED_REPLAY=1 REPLAY_FOLLOWER=1 \ 12 | DBTEST_PROFILER=0 NETWORK_CLIENT_CONFIG_YCSB=1 13 | -------------------------------------------------------------------------------- /multi_disable_replay.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # ulimit -n 8000 3 | # ----------------------------------------------------------------------------- compile ------------------------------------------------------------------------------------------ 4 | sudo pkill -f dbtest 5 | # make paxos 6 | # for the skewed workload, using backoff instead of perf?? 7 | make clean && make -j dbtest MODE=perf \ 8 | SERIALIZE=1 PAXOS_ENABLE_CONFIG=1 \ 9 | STO_BATCH_CONFIG=2 SILO_SERIAL_CONFIG=0 \ 10 | PAXOS_ZERO_CONFIG=0 LOGGING_TO_ONLY_FILE=0 \ 11 | OPTIMIZED_REPLAY=1 REPLAY_FOLLOWER=1 \ 12 | DBTEST_PROFILER=0 DISABLE_REPLAY=1 13 | -------------------------------------------------------------------------------- /multi_no_add_log_to_nc.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # ulimit -n 8000 3 | # ----------------------------------------------------------------------------- compile ------------------------------------------------------------------------------------------ 4 | sudo pkill -f dbtest 5 | # make paxos 6 | # for the skewed workload, using backoff instead of perf?? 7 | make clean && make -j dbtest MODE=perf \ 8 | SERIALIZE=1 PAXOS_ENABLE_CONFIG=1 \ 9 | STO_BATCH_CONFIG=2 SILO_SERIAL_CONFIG=0 \ 10 | PAXOS_ZERO_CONFIG=0 LOGGING_TO_ONLY_FILE=0 \ 11 | OPTIMIZED_REPLAY=1 REPLAY_FOLLOWER=1 \ 12 | DBTEST_PROFILER=0 NO_ADD_LOG_TO_NC=1 13 | -------------------------------------------------------------------------------- /multi_single_paxos.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # ulimit -n 8000 3 | # ----------------------------------------------------------------------------- compile ------------------------------------------------------------------------------------------ 4 | sudo pkill -f dbtest 5 | # make paxos 6 | make clean && make -j dbtest MODE=perf \ 7 | SERIALIZE=1 PAXOS_ENABLE_CONFIG=1 \ 8 | STO_BATCH_CONFIG=2 SILO_SERIAL_CONFIG=0 \ 9 | PAXOS_ZERO_CONFIG=0 LOGGING_TO_ONLY_FILE=0 \ 10 | OPTIMIZED_REPLAY=1 REPLAY_FOLLOWER=1 \ 11 | DBTEST_PROFILER=0 SINGLE_PAXOS=1 -------------------------------------------------------------------------------- /nginx_cp.sh: -------------------------------------------------------------------------------- 1 | sudo cp results/* /var/www/html/weihai/results/ 2 | -------------------------------------------------------------------------------- /perf-scripts/common.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | PARENT_DIR="/home/mrityunjaykumar/projects/silo-sto" 3 | CURRENT_DIR="`pwd`" 4 | limits=(1 2 5 10 20 30) 5 | -------------------------------------------------------------------------------- /release.md: -------------------------------------------------------------------------------- 1 | ## Release format 2 | ### Steps 3 | 1. Each new feature should account as minor release 4 | 2. Must include all the previous features list with feature identifier numbers 5 | 3. A combined feature list 6 | 7 | current version : 1.0.0 8 | 9 | Release Notes 10 | ================= 11 | 1. Fix the bug in reporting of statistics by dbtest (pseudo-client) 12 | 2. Add release note. 13 | 14 | Release 1.0.0 15 | 16 | 1. Fix for correct statistics report by `dbtest` client 17 | 2. new configurable changes 18 | - `ALLOW_FOLLOWER_REPLAY` : Flag to enable follower replay 19 | - `ALLOW_WAIT_AFTER_SUBMIT` : Flag for making paxos worker to finish the processing after each submit @depricated 20 | - `ALLOW_WAIT_AT_PAXOS_END` : Defualt enabled flag indicating wait for each leader/follow to finish processing -------------------------------------------------------------------------------- /results/batch-throughput.log: -------------------------------------------------------------------------------- 1 | xxxx15/leader-16-1600.log:1777:agg_throughput: 630986 ops/sec 2 | xxxx15/leader-16-100.log:1777:agg_throughput: 562908 ops/sec 3 | xxxx15/leader-16-800.log:1777:agg_throughput: 627155 ops/sec 4 | xxxx15/leader-16-3200.log:1777:agg_throughput: 617875 ops/sec 5 | xxxx15/leader-16-400.log:1777:agg_throughput: 617211 ops/sec 6 | xxxx15/leader-16-50.log:1777:agg_throughput: 497411 ops/sec 7 | xxxx15/leader-16-200.log:1777:agg_throughput: 594331 ops/sec 8 | -------------------------------------------------------------------------------- /results/breakdown.log: -------------------------------------------------------------------------------- 1 | throughput: 863293.0 2 | ds0.log 17.670500000000004 99.06822916666667 3 | throughput: 784103.0 4 | ds0.log 18.74533333333333 98.68354166666664 5 | throughput: 627653.0 6 | ds0.log 28.767999999999994 96.75489583333339 7 | ds1.log 12.451694915254237 5.149364406779661 8 | ds2.log 12.349833333333333 5.276354166666666 9 | throughput: 631813.0 10 | ds0.log 28.848983050847455 96.92033898305088 11 | ds1.log 19.558666666666667 44.68010416666673 12 | ds2.log 19.502999999999997 44.94208333333335 13 | -------------------------------------------------------------------------------- /results/scalability-tpcc.log: -------------------------------------------------------------------------------- 1 | 1 73458.6 2 | 2 138098 3 | 3 155335 4 | 4 214993 5 | 5 235452 6 | 6 290432 7 | 7 313898 8 | 8 363808 9 | 9 382929 10 | 10 432299 11 | 11 454606 12 | 12 503084 13 | 13 523661 14 | 14 570765 15 | 15 578270 16 | 16 633132 17 | 17 648907 18 | 18 696570 19 | 19 713145 20 | 20 754722 21 | 21 778280 22 | 22 817166 23 | 23 837805 24 | 24 876260 25 | 25 892306 26 | 26 928791 27 | 27 940796 28 | 28 978389 29 | 29 988470 30 | 30 1.01809e+06 31 | 31 1.02662e+06 32 | -------------------------------------------------------------------------------- /results/silo-only-skewed.log: -------------------------------------------------------------------------------- 1 | 1 78142.8 2 | 2 156715 3 | 3 192041 4 | 4 275643 5 | 5 289982 6 | 6 354948 7 | 7 369024 8 | 8 429444 9 | 9 429493 10 | 10 463318 11 | 11 460503 12 | 12 482133 13 | 13 461604 14 | 14 474686 15 | 15 459766 16 | 16 470161 17 | 17 455336 18 | 18 458591 19 | 19 450329 20 | 20 455064 21 | 21 446246 22 | 22 451524 23 | 23 445698 24 | 24 454408 25 | 25 445999 26 | 26 450963 27 | 27 449862 28 | 28 453550 29 | 29 451609 30 | 30 449656 31 | 31 448397 32 | -------------------------------------------------------------------------------- /results/silo-only-tpcc.log: -------------------------------------------------------------------------------- 1 | 1 85979.5 2 | 2 166700 3 | 3 193015 4 | 4 272218 5 | 5 297835 6 | 6 372591 7 | 7 400228 8 | 8 477035 9 | 9 501271 10 | 10 572880 11 | 11 599828 12 | 12 671782 13 | 13 695629 14 | 14 756467 15 | 15 782212 16 | 16 860598 17 | 17 890395 18 | 18 953467 19 | 19 977281 20 | 20 1.03961e+06 21 | 21 1.06901e+06 22 | 22 1.12972e+06 23 | 23 1.14772e+06 24 | 24 1.21892e+06 25 | 25 1.244e+06 26 | 26 1.30405e+06 27 | 27 1.32688e+06 28 | 28 1.38891e+06 29 | 29 1.41916e+06 30 | 30 1.47378e+06 31 | 31 1.49182e+06 32 | -------------------------------------------------------------------------------- /results/single_paxos_stream.log: -------------------------------------------------------------------------------- 1 | 1 74051.4 2 | 2 141290 3 | 3 160643 4 | 4 225656 5 | 5 245642 6 | 6 307685 7 | 7 325263 8 | 8 386773 9 | 9 404503 10 | 10 419650 11 | 11 421392 12 | 12 429043 13 | 13 424339 14 | 14 414874 15 | 15 424233 16 | 16 418594 17 | 17 419484 18 | 18 420718 19 | 19 426476 20 | 20 425430 21 | 21 419394 22 | 22 426826 23 | 23 424407 24 | 24 426031 25 | 25 428517 26 | 26 428194 27 | 27 424666 28 | 28 429158 29 | 29 430207 30 | 30 428846 31 | 31 425442 32 | -------------------------------------------------------------------------------- /results/throughput_skewed_workload-rolis.log: -------------------------------------------------------------------------------- 1 | 1 64112.2 2 | 2 127976 3 | 3 152779 4 | 4 214060 5 | 5 229214 6 | 6 278506 7 | 7 290945 8 | 8 336098 9 | 9 339907 10 | 10 370250 11 | 11 369147 12 | 12 389811 13 | 13 379198 14 | 14 391492 15 | 15 379793 16 | 16 387130 17 | 17 371901 18 | 18 380140 19 | 19 370610 20 | 20 376940 21 | 21 367394 22 | 22 372678 23 | 23 360527 24 | 24 369623 25 | 25 363356 26 | 26 371173 27 | 27 366879 28 | 28 369418 29 | 29 366838 30 | 30 368566 31 | 31 371047 32 | -------------------------------------------------------------------------------- /sb0.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | sudo cgdelete -g cpuset:/cpulimitl 3 | mkdir -p xxxx15 4 | sudo cgcreate -t $USER:$USER -a $USER:$USER -g cpuset:/cpulimitl 5 | trd=$1 6 | let yyml=trd+1 7 | defvalue=1000 8 | batch=${2:-$defvalue} 9 | sudo cgset -r cpuset.mems=0 cpulimitl 10 | sudo cgset -r cpuset.cpus=0-$trd cpulimitl 11 | sudo cgexec -g cpuset:cpulimitl ./out-perf.masstree/benchmarks/dbtest --verbose --bench tpcc --db-type mbta --scale-factor 4 --num-threads $trd --numa-memory 1G --parallel-loading --runtime 30 --bench-opts="--cpu-gap 1 --num-cpus 32" -F third-party/paxos/config/1silo_1paxos_2follower/$yyml.yml -F third-party/paxos/config/occ_paxos.yml --paxos-leader-config --multi-process -P localhost -S $batch > ./xxxx15/leader-$trd-$batch.log 2>&1 & 12 | #tail -f ./xxxx15/leader-$trd-$batch.log 13 | -------------------------------------------------------------------------------- /sb1.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | sudo cgdelete -g cpuset:/cpulimitf 3 | mkdir -p xxxx15 4 | sudo cgcreate -t $USER:$USER -a $USER:$USER -g cpuset:/cpulimitf 5 | trd=$1 6 | let yyml=trd+1 7 | sudo cgset -r cpuset.mems=0 cpulimitf 8 | #sudo cgset -r cpuset.cpus=0-$trd cpulimitf 9 | sudo cgset -r cpuset.cpus=0-$trd cpulimitf 10 | sudo cgexec -g cpuset:cpulimitf ./out-perf.masstree/benchmarks/dbtest --verbose --bench tpcc --db-type mbta --scale-factor 4 --num-threads $trd --numa-memory 1G --parallel-loading --runtime 30 --bench-opts="--cpu-gap 1 --num-cpus 32" -F third-party/paxos/config/1silo_1paxos_2follower/$yyml.yml -F third-party/paxos/config/occ_paxos.yml --multi-process -P p1 > ./xxxx15/follower-$trd.log 2>&1 & 11 | #tail -f ./xxxx15/follower-$trd.log 12 | -------------------------------------------------------------------------------- /sb2.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | sudo cgdelete -g cpuset:/cpulimitf 3 | mkdir -p xxxx15 4 | sudo cgcreate -t $USER:$USER -a $USER:$USER -g cpuset:/cpulimitf 5 | trd=$1 6 | let yyml=trd+1 7 | sudo cgset -r cpuset.mems=0 cpulimitf 8 | sudo cgset -r cpuset.cpus=0-$trd cpulimitf 9 | sudo cgexec -g cpuset:cpulimitf ./out-perf.masstree/benchmarks/dbtest --verbose --bench tpcc --db-type mbta --scale-factor 4 --num-threads $trd --numa-memory 1G --parallel-loading --runtime 30 --bench-opts="--cpu-gap 1 --num-cpus 32" -F third-party/paxos/config/1silo_1paxos_2follower/$yyml.yml -F third-party/paxos/config/occ_paxos.yml --multi-process -P p2 > ./xxxx15/follower-$trd.log 2>&1 & 10 | #tail -f ./xxxx15/follower-$trd.log 11 | -------------------------------------------------------------------------------- /scripts/bench_atomic.sh: -------------------------------------------------------------------------------- 1 | g++ bench_atomic.cpp -g -lpthread -Wall -O0 -o bench_atomic 2 | echo "complete compiling..." 3 | echo "" 4 | 5 | for i in {1..31} 6 | do 7 | ./bench_atomic $i "fetch" 8 | echo "" 9 | done 10 | 11 | echo "XXXXX\n" 12 | 13 | for i in {1..31} 14 | do 15 | ./bench_atomic $i "rdtscp" 16 | echo "" 17 | done 18 | 19 | 20 | -------------------------------------------------------------------------------- /scripts/ip_leader_replica: -------------------------------------------------------------------------------- 1 | 10.1.0.7 -------------------------------------------------------------------------------- /scripts/ip_p1_follower_replica: -------------------------------------------------------------------------------- 1 | 10.1.0.8 -------------------------------------------------------------------------------- /scripts/ip_p2_follower_replica: -------------------------------------------------------------------------------- 1 | 10.1.0.9 -------------------------------------------------------------------------------- /scripts/pointer_reference_test.sh: -------------------------------------------------------------------------------- 1 | g++ pointer_reference_test.cpp -g -lpthread -Wall -O0 -o run 2 | ./run 3 | -------------------------------------------------------------------------------- /scripts/rpc_tests/client_test.cc: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include "rpc/server.h" 5 | #include "rpc/client.h" 6 | 7 | using namespace std; 8 | 9 | int main(int argc, char *argv[]) { 10 | rpc::client client("127.0.0.1", 8081); 11 | std::cout << "get a response - onGetRole: " << client.call("onGetRole").as() << " to 8081" << std::endl; 12 | 13 | std::cout << "get a response - onSyncSource: " << client.call("onSyncSource").as() << std::endl; 14 | 15 | rpc::client client2("127.0.0.1", 8082); 16 | std::cout << "get a response - onGetRole: " << client2.call("onGetRole").as() << " to 8082" << std::endl; 17 | 18 | usleep(120 * 1000 * 1000) ; 19 | return 0; 20 | } 21 | 22 | // g++ client_test.cc -g -lrpc -lpthread -Wall -O0 -o client_test -------------------------------------------------------------------------------- /scripts/rpc_tests/client_test.sh: -------------------------------------------------------------------------------- 1 | g++ client_test.cc -g -lrpc -lpthread -Wall -O0 -o client_test -------------------------------------------------------------------------------- /scripts/rpc_tests/compile.sh: -------------------------------------------------------------------------------- 1 | # we want to find in /usr/local/include 2 | # https://stackoverflow.com/questions/344317/where-does-gcc-look-for-c-and-c-header-files 3 | # echo '#include "rpc/server.h"' > t.c; g++ -v t.c; rm t.c 4 | g++ echo_follower.cc -g -lrpc -lpthread -Wall -O0 -o echo_follower 5 | g++ echo_old_leader.cc -g -lrpc -lpthread -Wall -O0 -o echo_old_leader -------------------------------------------------------------------------------- /scripts/rpc_tests/echo_follower: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stonysystems/rolis/c141efef78b436022d9aba2aa7a6e3b7d4b9c98b/scripts/rpc_tests/echo_follower -------------------------------------------------------------------------------- /scripts/rpc_tests/echo_old_leader: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stonysystems/rolis/c141efef78b436022d9aba2aa7a6e3b7d4b9c98b/scripts/rpc_tests/echo_old_leader -------------------------------------------------------------------------------- /scripts/tester.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | for ncores in 1 2 4 8 16 24 32; do 4 | #for wset in 4 8 16; do 5 | for wset in 18; do 6 | echo -n "$ncores $wset " 7 | ./persist_test \ 8 | --logfile data.log \ 9 | --logfile /data/scidb/001/2/stephentu/data.log \ 10 | --logfile /data/scidb/001/3/stephentu/data.log \ 11 | --num-threads $ncores --strategy epoch --writeset $wset --valuesize 32 12 | sleep 1 13 | done 14 | done 15 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stonysystems/rolis/c141efef78b436022d9aba2aa7a6e3b7d4b9c98b/silo-scripts/multi-replay/.gitkeep -------------------------------------------------------------------------------- /silo-scripts/multi-replay/convert.py: -------------------------------------------------------------------------------- 1 | from subprocess import call 2 | 3 | if __name__ == "__main__": 4 | start, end = 1, 28 5 | 6 | for i in range(start, end+1): 7 | for j in range(1, 3+1): 8 | try: 9 | cmd = "rm ./results/{thread_num}-{trial}.pdf".format(thread_num=i, trial=j) 10 | print(cmd) 11 | cmd = "google-pprof --pdf ../out-perf.masstree/benchmarks/ht_mt2 ./results/{thread_num}-{trial}.ht_mt2.prof > ./results/{thread_num}-{trial}.pdf".format(thread_num=i, trial=j) 12 | print(cmd) 13 | except Exception as ex: 14 | print(ex) -------------------------------------------------------------------------------- /silo-scripts/multi-replay/init_compiler.sh: -------------------------------------------------------------------------------- 1 | cd ../ 2 | #rm -rf /dev/shm/* 3 | rm ht_mt2.prof 4 | git checkout LogToFile 5 | make clean 6 | make -j dbtest MODE=perf SERIALIZE=1 PAXOS_ENABLE_CONFIG=0 REPLAY_FOLLOWER=0 7 | 8 | git checkout ntd-2jay 9 | make ht_mt2 10 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results.tmp.log: -------------------------------------------------------------------------------- 1 | 1 111853.0 2 | 2 206525.0 3 | 3 292263.0 4 | 4 370148.0 5 | 5 411707.0 6 | 6 452561.0 7 | 7 493537.0 8 | 8 533742.0 9 | 9 599710.0 10 | 10 673775.0 11 | 11 751781.0 12 | 12 818363.0 13 | 13 842502.0 14 | 14 895301.0 15 | 15 924857.0 16 | 16 958811.0 17 | 17 879917.0 18 | 18 891432.0 19 | 19 938149.0 20 | 20 983229.0 21 | 21 1003340.0 22 | 22 1038090.0 23 | 23 1058970.0 24 | 24 1090740.0 25 | 25 1012670.0 26 | 26 1016550.0 27 | 27 1048150.0 28 | 28 1082730.0 29 | 29 1107650.0 30 | 30 1123540.0 31 | 31 1148720.0 32 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/1-1.G.log: -------------------------------------------------------------------------------- 1 | paxos batch=50000 :::: 50000 2 | kSTOBatchSize = 100 3 | nthreads = 1 4 | ParID now : 1 5 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/1-1.R.log: -------------------------------------------------------------------------------- 1 | total size of logs: 972.897 MB, # of entries:37783556 2 | Thread 0 gets started, coreid: 0, offset: 0 3 | [cost of second: 8.592, # of PUTs: 37857353]Thread: 0, coreid: 0 is completed! 4 | Time Taken : 8592 millis 5 | Replay Exec Spent 8.59231 sec for txns: 970970 6 | Throughput : 113005 ops/sec 7 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/1-1.info.log: -------------------------------------------------------------------------------- 1 | total 973M 2 | -rw-rw-r-- 1 AzureUser AzureUser 9.5M Dec 19 22:30 Log-ThreadID:0.txt 3 | -rw-rw-r-- 1 AzureUser AzureUser 54 Dec 19 22:30 Log-ThreadID:1.txt 4 | -rw-rw-r-- 1 AzureUser AzureUser 270 Dec 19 22:30 Log-ThreadID:2.txt 5 | -rw-rw-r-- 1 AzureUser AzureUser 2.4M Dec 19 22:29 Log-ThreadID:3.txt 6 | -rw-rw-r-- 1 AzureUser AzureUser 2.6M Dec 19 22:29 Log-ThreadID:4.txt 7 | -rw-rw-r-- 1 AzureUser AzureUser 5.3M Dec 19 22:29 Log-ThreadID:5.txt 8 | -rw-rw-r-- 1 AzureUser AzureUser 954M Dec 19 22:30 Log-ThreadID:6.txt 9 | drwxrwxr-x 2 AzureUser AzureUser 80 Dec 19 22:30 info 10 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/1-1.track.log: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stonysystems/rolis/c141efef78b436022d9aba2aa7a6e3b7d4b9c98b/silo-scripts/multi-replay/results/1-1.track.log -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/1-2.R.log: -------------------------------------------------------------------------------- 1 | total size of logs: 972.118 MB, # of entries:37753312 2 | Thread 0 gets started, coreid: 0, offset: 0 3 | [cost of second: 8.54, # of PUTs: 37827049]Thread: 0, coreid: 0 is completed! 4 | Time Taken : 8540 millis 5 | Replay Exec Spent 8.54023 sec for txns: 970255 6 | Throughput : 113610 ops/sec 7 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/1-2.info.log: -------------------------------------------------------------------------------- 1 | total 973M 2 | -rw-rw-r-- 1 AzureUser AzureUser 54 Dec 19 22:30 Log-ThreadID:0.txt 3 | -rw-rw-r-- 1 AzureUser AzureUser 2.6M Dec 19 22:30 Log-ThreadID:1.txt 4 | -rw-rw-r-- 1 AzureUser AzureUser 2.4M Dec 19 22:30 Log-ThreadID:2.txt 5 | -rw-rw-r-- 1 AzureUser AzureUser 9.5M Dec 19 22:30 Log-ThreadID:3.txt 6 | -rw-rw-r-- 1 AzureUser AzureUser 5.3M Dec 19 22:30 Log-ThreadID:4.txt 7 | -rw-rw-r-- 1 AzureUser AzureUser 270 Dec 19 22:30 Log-ThreadID:5.txt 8 | -rw-rw-r-- 1 AzureUser AzureUser 953M Dec 19 22:30 Log-ThreadID:6.txt 9 | drwxrwxr-x 2 AzureUser AzureUser 80 Dec 19 22:30 info 10 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/1-2.track.log: -------------------------------------------------------------------------------- 1 | 970255 8.54 113613.0 2 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/1-3.R.log: -------------------------------------------------------------------------------- 1 | total size of logs: 965.767 MB, # of entries:37506655 2 | Thread 0 gets started, coreid: 0, offset: 0 3 | [cost of second: 8.474, # of PUTs: 37579911]Thread: 0, coreid: 0 is completed! 4 | Time Taken : 8474 millis 5 | Replay Exec Spent 8.4746 sec for txns: 963926 6 | Throughput : 113743 ops/sec 7 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/1-3.info.log: -------------------------------------------------------------------------------- 1 | total 966M 2 | -rw-rw-r-- 1 AzureUser AzureUser 54 Dec 19 22:30 Log-ThreadID:0.txt 3 | -rw-rw-r-- 1 AzureUser AzureUser 2.6M Dec 19 22:30 Log-ThreadID:1.txt 4 | -rw-rw-r-- 1 AzureUser AzureUser 9.5M Dec 19 22:30 Log-ThreadID:2.txt 5 | -rw-rw-r-- 1 AzureUser AzureUser 2.4M Dec 19 22:30 Log-ThreadID:3.txt 6 | -rw-rw-r-- 1 AzureUser AzureUser 5.3M Dec 19 22:30 Log-ThreadID:4.txt 7 | -rw-rw-r-- 1 AzureUser AzureUser 270 Dec 19 22:30 Log-ThreadID:5.txt 8 | -rw-rw-r-- 1 AzureUser AzureUser 947M Dec 19 22:30 Log-ThreadID:6.txt 9 | drwxrwxr-x 2 AzureUser AzureUser 80 Dec 19 22:30 info 10 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/1-3.track.log: -------------------------------------------------------------------------------- 1 | 963926 8.474 113751.0 2 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/10-1.track.log: -------------------------------------------------------------------------------- 1 | 2978773 4.169 714505.4 2 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/10-2.track.log: -------------------------------------------------------------------------------- 1 | 2981855 4.122 723400.05 2 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/10-3.track.log: -------------------------------------------------------------------------------- 1 | 2905951 3.955 734753.73 2 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/11-1.track.log: -------------------------------------------------------------------------------- 1 | 3026014 3.872 781511.88 2 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/11-2.track.log: -------------------------------------------------------------------------------- 1 | 3113140 3.821 814744.83 2 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/11-3.track.log: -------------------------------------------------------------------------------- 1 | 3006031 3.708 810687.97 2 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/12-1.track.log: -------------------------------------------------------------------------------- 1 | 4018035 4.675 859472.73 2 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/12-2.track.log: -------------------------------------------------------------------------------- 1 | 3899698 4.541 858775.16 2 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/12-3.track.log: -------------------------------------------------------------------------------- 1 | 3936273 4.554 864355.07 2 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/13-1.track.log: -------------------------------------------------------------------------------- 1 | 3932974 4.219 932205.26 2 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/13-2.track.log: -------------------------------------------------------------------------------- 1 | 3919305 4.217 929405.98 2 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/13-3.track.log: -------------------------------------------------------------------------------- 1 | 3847845 4.092 940333.58 2 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/14-1.track.log: -------------------------------------------------------------------------------- 1 | 3954434 3.919 1009041.59 2 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/14-2.track.log: -------------------------------------------------------------------------------- 1 | 4040794 4.018 1005672.97 2 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/14-3.track.log: -------------------------------------------------------------------------------- 1 | 3941090 3.902 1010017.94 2 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/15-1.track.log: -------------------------------------------------------------------------------- 1 | 3933129 3.591 1095274.02 2 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/15-2.track.log: -------------------------------------------------------------------------------- 1 | 3879209 3.573 1085700.81 2 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/15-3.track.log: -------------------------------------------------------------------------------- 1 | 3928790 3.568 1101118.27 2 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/16-1.track.log: -------------------------------------------------------------------------------- 1 | 3863464 3.408 1133645.54 2 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/16-2.track.log: -------------------------------------------------------------------------------- 1 | 3925781 3.455 1136260.78 2 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/16-3.track.log: -------------------------------------------------------------------------------- 1 | 3812456 3.335 1143165.22 2 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/17-1.track.log: -------------------------------------------------------------------------------- 1 | 3890568 3.23 1204510.22 2 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/17-2.track.log: -------------------------------------------------------------------------------- 1 | 3828024 3.176 1205297.23 2 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/17-3.track.log: -------------------------------------------------------------------------------- 1 | 3965017 3.254 1218505.53 2 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/18-1.track.log: -------------------------------------------------------------------------------- 1 | 3953240 3.069 1288119.91 2 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/18-2.track.log: -------------------------------------------------------------------------------- 1 | 3900128 3.057 1275802.42 2 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/18-3.track.log: -------------------------------------------------------------------------------- 1 | 3873808 3.046 1271768.88 2 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/19-1.track.log: -------------------------------------------------------------------------------- 1 | 3946656 2.935 1344686.88 2 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/19-2.track.log: -------------------------------------------------------------------------------- 1 | 4008290 2.945 1361049.24 2 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/19-3.track.log: -------------------------------------------------------------------------------- 1 | 3970770 2.894 1372069.8 2 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/2-1.R.log: -------------------------------------------------------------------------------- 1 | total size of logs: 1618.73 MB, # of entries:62865356 2 | Thread 0 gets started, coreid: 0, offset: 0 3 | Thread 1 gets started, coreid: 1, offset: 848682306 4 | [cost of second: 9.951, # of PUTs: 31494070]Thread: 1, coreid: 1 is completed! 5 | [cost of second: 10.24, # of PUTs: 31494070]Thread: 0, coreid: 0 is completed! 6 | Time Taken : 10241 millis 7 | Replay Exec Spent 10.241 sec for txns: 1622462 8 | Throughput : 158428 ops/sec 9 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/2-1.track.log: -------------------------------------------------------------------------------- 1 | 1622624 10.241 158443.9 2 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/2-2.R.log: -------------------------------------------------------------------------------- 1 | total size of logs: 1619.13 MB, # of entries:62880943 2 | Thread 0 gets started, coreid: 0, offset: 0 3 | Thread 1 gets started, coreid: 1, offset: 848892717 4 | [cost of second: 10.018, # of PUTs: 31501880]Thread: 1, coreid: 1 is completed! 5 | [cost of second: 10.261, # of PUTs: 31501879]Thread: 0, coreid: 0 is completed! 6 | Time Taken : 10261 millis 7 | Replay Exec Spent 10.2612 sec for txns: 1622646 8 | Throughput : 158134 ops/sec 9 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/2-2.track.log: -------------------------------------------------------------------------------- 1 | 1622818 10.261 158153.98 2 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/2-3.R.log: -------------------------------------------------------------------------------- 1 | total size of logs: 1633.44 MB, # of entries:63436351 2 | Thread Thread 0 gets started, coreid: 1 gets started, coreid: 10, offset: , offset: 0856390725 3 | 4 | [cost of second: 9.293, # of PUTs: 31780126]Thread: 1, coreid: 1 is completed! 5 | [cost of second: 9.492, # of PUTs: 31780125]Thread: 0, coreid: 0 is completed! 6 | Time Taken : 9492 millis 7 | Replay Exec Spent 9.4927 sec for txns: 1636802 8 | Throughput : 172427 ops/sec 9 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/2-3.track.log: -------------------------------------------------------------------------------- 1 | 1636970 9.492 172457.86 2 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/20-1.track.log: -------------------------------------------------------------------------------- 1 | 6554660 4.861 1348418.02 2 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/20-2.track.log: -------------------------------------------------------------------------------- 1 | 6589902 4.846 1359864.22 2 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/20-3.track.log: -------------------------------------------------------------------------------- 1 | 6241107 4.629 1348262.48 2 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/21-1.track.log: -------------------------------------------------------------------------------- 1 | 4594786 3.146 1460516.85 2 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/21-2.track.log: -------------------------------------------------------------------------------- 1 | 4717910 3.265 1444995.41 2 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/21-3.track.log: -------------------------------------------------------------------------------- 1 | 4714762 3.246 1452483.67 2 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/22-1.track.log: -------------------------------------------------------------------------------- 1 | 4623323 3.011 1535477.58 2 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/22-2.track.log: -------------------------------------------------------------------------------- 1 | 4790436 3.196 1498884.86 2 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/22-3.track.log: -------------------------------------------------------------------------------- 1 | 4613662 3.052 1511684.8 2 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/23-1.track.log: -------------------------------------------------------------------------------- 1 | 4719224 2.946 1601909.03 2 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/23-2.track.log: -------------------------------------------------------------------------------- 1 | 4804225 3.04 1580337.17 2 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/23-3.track.log: -------------------------------------------------------------------------------- 1 | 4603056 2.882 1597174.18 2 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/24-1.track.log: -------------------------------------------------------------------------------- 1 | 4816952 2.929 1644572.21 2 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/24-2.track.log: -------------------------------------------------------------------------------- 1 | 4736009 2.863 1654212.02 2 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/24-3.track.log: -------------------------------------------------------------------------------- 1 | 4923674 2.99 1646713.71 2 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/25-1.track.log: -------------------------------------------------------------------------------- 1 | 4797959 2.774 1729617.52 2 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/25-2.track.log: -------------------------------------------------------------------------------- 1 | 4631562 2.653 1745782.89 2 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/25-3.track.log: -------------------------------------------------------------------------------- 1 | 4846659 2.729 1775983.51 2 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/26-1.track.log: -------------------------------------------------------------------------------- 1 | 5537540 3.061 1809062.4 2 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/26-2.track.log: -------------------------------------------------------------------------------- 1 | 5701883 3.24 1759840.43 2 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/26-3.track.log: -------------------------------------------------------------------------------- 1 | 5662124 3.18 1780542.14 2 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/27-1.track.log: -------------------------------------------------------------------------------- 1 | 5567295 2.966 1877038.1 2 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/27-2.track.log: -------------------------------------------------------------------------------- 1 | 5618392 3.084 1821787.29 2 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/27-3.track.log: -------------------------------------------------------------------------------- 1 | 5724945 3.107 1842595.75 2 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/28-1.track.log: -------------------------------------------------------------------------------- 1 | 5777642 2.992 1931030.08 2 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/28-2.track.log: -------------------------------------------------------------------------------- 1 | 5641001 2.944 1916100.88 2 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/28-3.track.log: -------------------------------------------------------------------------------- 1 | 5682371 2.92 1946017.47 2 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/29-1.track.log: -------------------------------------------------------------------------------- 1 | 5469650 2.733 2001335.53 2 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/29-2.track.log: -------------------------------------------------------------------------------- 1 | 5643211 2.905 1942585.54 2 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/29-3.track.log: -------------------------------------------------------------------------------- 1 | 5581677 2.799 1994168.27 2 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/3-1.R.log: -------------------------------------------------------------------------------- 1 | total size of logs: 2061.13 MB, # of entries:80046457 2 | Thread 0 gets started, coreid: 0, offset: 0 3 | Thread Thread 2 gets started, coreid: 2, offset: 1440836208 4 | 1 gets started, coreid: 1, offset: 720418104 5 | [cost of second: 6.904, # of PUTs: 26734267]Thread: 2, coreid: 2 is completed! 6 | [cost of second: 8.777, # of PUTs: 26734266]Thread: 1, coreid: 1 is completed! 7 | [cost of second: 9.055, # of PUTs: 26734266]Thread: 0, coreid: 0 is completed! 8 | Time Taken : 9055 millis 9 | Replay Exec Spent 9.0559 sec for txns: 2075136 10 | Throughput : 229148 ops/sec 11 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/3-1.track.log: -------------------------------------------------------------------------------- 1 | 2075411 9.055 229200.55 2 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/3-2.R.log: -------------------------------------------------------------------------------- 1 | total size of logs: 2070.85 MB, # of entries:80423872 2 | Thread Thread 0 gets started, coreid: 1 gets started, coreid: 0, offset: 1, offset: 0723814839 3 | 4 | Thread 2 gets started, coreid: 2, offset: 1447629678 5 | [cost of second: 6.916, # of PUTs: 26860318]Thread: 2, coreid: 2 is completed! 6 | [cost of second: 8.82, # of PUTs: 26860317]Thread: 1, coreid: 1 is completed! 7 | [cost of second: 9.089, # of PUTs: 26860317]Thread: 0, coreid: 0 is completed! 8 | Time Taken : 9088 millis 9 | Replay Exec Spent 9.08892 sec for txns: 2085151 10 | Throughput : 229417 ops/sec 11 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/3-2.track.log: -------------------------------------------------------------------------------- 1 | 2085451 9.088 229473.04 2 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/3-3.R.log: -------------------------------------------------------------------------------- 1 | total size of logs: 2038.53 MB, # of entries:79168545 2 | Thread Thread 10 gets started, coreid: gets started, coreid: 10, offset: , offset: 0712516905 3 | 4 | Thread 2 gets started, coreid: 2, offset: 1425033810 5 | [cost of second: 6.851, # of PUTs: 26441058]Thread: 2, coreid: 2 is completed! 6 | [cost of second: 8.653, # of PUTs: 26441058]Thread: 1, coreid: 1 is completed! 7 | [cost of second: 8.915, # of PUTs: 26441058]Thread: 0, coreid: 0 is completed! 8 | Time Taken : 8915 millis 9 | Replay Exec Spent 8.91588 sec for txns: 2053038 10 | Throughput : 230268 ops/sec 11 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/3-3.track.log: -------------------------------------------------------------------------------- 1 | 2053228 8.915 230311.61 2 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/30-1.track.log: -------------------------------------------------------------------------------- 1 | 5936603 2.951 2011725.86 2 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/30-2.track.log: -------------------------------------------------------------------------------- 1 | 5690377 2.805 2028654.9 2 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/30-3.track.log: -------------------------------------------------------------------------------- 1 | 5773993 2.819 2048241.58 2 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/31-1.track.log: -------------------------------------------------------------------------------- 1 | 5665029 2.685 2109880.45 2 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/31-2.track.log: -------------------------------------------------------------------------------- 1 | 5732989 2.689 2132015.25 2 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/31-3.track.log: -------------------------------------------------------------------------------- 1 | 5638834 2.675 2107975.33 2 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/32-1.G.log: -------------------------------------------------------------------------------- 1 | paxos batch=50000 :::: 50000 2 | kSTOBatchSize = 100 3 | nthreads = 32 4 | ParID now : 1 5 | ParID now : 2 6 | ParID now : 3 7 | ParID now : 4 8 | ParID now : 5 9 | ParID now : 6 10 | ParID now : 7 11 | ParID now : 8 12 | ParID now : 9 13 | ParID now : 10 14 | ParID now : 11 15 | ParID now : 12 16 | ParID now : 13 17 | ParID now : 14 18 | ParID now : 15 19 | ParID now : 16 20 | ParID now : 17 21 | ParID now : 19 22 | ParID now : 19 23 | ParID now : 20 24 | ParID now : 21 25 | ParID now : 22 26 | ParID now : 23 27 | ParID now : 24 28 | ParID now : 25 29 | ParID now : 26 30 | ParID now : 27 31 | ParID now : 28 32 | ParID now : 29 33 | ParID now : 30 34 | ParID now : 31 35 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/32-1.track.log: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stonysystems/rolis/c141efef78b436022d9aba2aa7a6e3b7d4b9c98b/silo-scripts/multi-replay/results/32-1.track.log -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/32-2.G.log: -------------------------------------------------------------------------------- 1 | paxos batch=50000 :::: 50000 2 | kSTOBatchSize = 100 3 | nthreads = 32 4 | ParID now : 1 5 | ParID now : 2 6 | ParID now : 3 7 | ParID now : 4 8 | ParID now : ParID now : 66 9 | ParID now : 8 10 | 11 | ParID now : 8 12 | ParID now : 9 13 | ParID now : 10 14 | ParID now : 11 15 | ParID now : 12 16 | ParID now : 13 17 | ParID now : 14 18 | ParID now : 15 19 | ParID now : 16 20 | ParID now : 17 21 | ParID now : 18 22 | ParID now : 19 23 | ParID now : 20 24 | ParID now : 21 25 | ParID now : 22 26 | ParID now : 23 27 | ParID now : 24 28 | ParID now : 25 29 | ParID now : 26 30 | ParID now : 27 31 | ParID now : 28 32 | ParID now : 29 33 | ParID now : 30 34 | ParID now : 31 35 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/32-2.track.log: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stonysystems/rolis/c141efef78b436022d9aba2aa7a6e3b7d4b9c98b/silo-scripts/multi-replay/results/32-2.track.log -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/32-3.G.log: -------------------------------------------------------------------------------- 1 | paxos batch=50000 :::: 50000 2 | kSTOBatchSize = 100 3 | nthreads = 32 4 | ParID now : 1 5 | ParID now : 2 6 | ParID now : 3 7 | ParID now : 4 8 | ParID now : 5 9 | ParID now : 6 10 | ParID now : 7 11 | ParID now : 8 12 | ParID now : 9 13 | ParID now : 10 14 | ParID now : 11 15 | ParID now : 12 16 | ParID now : 13 17 | ParID now : 14 18 | ParID now : 15 19 | ParID now : 16 20 | ParID now : 17 21 | ParID now : 18 22 | ParID now : 19 23 | ParID now : 20 24 | ParID now : 21 25 | ParID now : 22 26 | ParID now : 23 27 | ParID now : 24 28 | ParID now : 25 29 | ParID now : 26 30 | ParID now : 27 31 | ParID now : 28 32 | ParID now : 29 33 | ParID now : 30 34 | ParID now : 31 35 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/32-3.track.log: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stonysystems/rolis/c141efef78b436022d9aba2aa7a6e3b7d4b9c98b/silo-scripts/multi-replay/results/32-3.track.log -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/4-1.R.log: -------------------------------------------------------------------------------- 1 | total size of logs: 2379.74 MB, # of entries:92419950 2 | Thread Thread 1 gets started, coreid: 0 gets started, coreid: 01, offset: , offset: 0623834649 3 | 4 | Thread 2 gets started, coreid: 2, offset: Thread 3 gets started, coreid: 3, offset: 1871503947 5 | 1247669298 6 | [cost of second: 7.831, # of PUTs: 23150114]Thread: 1, coreid: 1 is completed! 7 | [cost of second: 7.855, # of PUTs: 23150116]Thread: 3, coreid: 3 is completed! 8 | [cost of second: 7.947, # of PUTs: 23150114]Thread: 2, coreid: 2 is completed! 9 | [cost of second: 8.056, # of PUTs: 23150114]Thread: 0, coreid: 0 is completed! 10 | Time Taken : 8056 millis 11 | Replay Exec Spent 8.05665 sec for txns: 2406863 12 | Throughput : 298742 ops/sec 13 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/4-1.track.log: -------------------------------------------------------------------------------- 1 | 2407161 8.056 298803.5 2 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/4-2.R.log: -------------------------------------------------------------------------------- 1 | total size of logs: 2366.79 MB, # of entries:91917141 2 | Thread Thread 0 gets started, coreid: 1 gets started, coreid: 10, offset: , offset: 0620440695 3 | 4 | Thread 2 gets started, coreid: 2, offset: 1240881390 5 | Thread 3 gets started, coreid: 3, offset: 1861322085 6 | [cost of second: 7.602, # of PUTs: 23024168]Thread: 3, coreid: 3 is completed! 7 | [cost of second: 7.631, # of PUTs: 23024167]Thread: 1, coreid: 1 is completed! 8 | [cost of second: 7.651, # of PUTs: 23024167]Thread: 2, coreid: 2 is completed! 9 | [cost of second: 7.804, # of PUTs: 23024167]Thread: 0, coreid: 0 is completed! 10 | Time Taken : 7804 millis 11 | Replay Exec Spent 7.80491 sec for txns: 2393934 12 | Throughput : 306722 ops/sec 13 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/4-2.track.log: -------------------------------------------------------------------------------- 1 | 2394154 7.804 306785.49 2 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/4-3.R.log: -------------------------------------------------------------------------------- 1 | total size of logs: 2358.42 MB, # of entries:91592076 2 | Thread 0 gets started, coreid: 0, offset: Thread 10 gets started, coreid: 1, offset: 618246513 3 | 4 | Thread 2 gets started, coreid: 2, offset: 1236493026 5 | Thread 3 gets started, coreid: 3, offset: 1854739539 6 | [cost of second: 7.446, # of PUTs: 22942742]Thread: 2, coreid: 2 is completed! 7 | [cost of second: 7.468, # of PUTs: 22942742]Thread: 3, coreid: 3 is completed! 8 | [cost of second: 7.539, # of PUTs: 22942742]Thread: 1, coreid: 1 is completed! 9 | [cost of second: 7.736, # of PUTs: 22942742]Thread: 0, coreid: 0 is completed! 10 | Time Taken : 7736 millis 11 | Replay Exec Spent 7.73689 sec for txns: 2385299 12 | Throughput : 308302 ops/sec 13 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/4-3.track.log: -------------------------------------------------------------------------------- 1 | 2385584 7.736 308374.35 2 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/5-1.track.log: -------------------------------------------------------------------------------- 1 | 3365030 9.28 362610.99 2 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/5-2.track.log: -------------------------------------------------------------------------------- 1 | 3367626 8.891 378767.97 2 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/5-3.track.log: -------------------------------------------------------------------------------- 1 | 3373451 9.395 359068.76 2 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/6-1.track.log: -------------------------------------------------------------------------------- 1 | 3252059 7.347 442637.68 2 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/6-2.track.log: -------------------------------------------------------------------------------- 1 | 3228547 7.544 427962.22 2 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/6-3.track.log: -------------------------------------------------------------------------------- 1 | 3171487 7.509 422358.1 2 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/7-1.track.log: -------------------------------------------------------------------------------- 1 | 2963921 5.728 517444.31 2 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/7-2.track.log: -------------------------------------------------------------------------------- 1 | 2985418 5.755 518752.04 2 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/7-3.track.log: -------------------------------------------------------------------------------- 1 | 3014465 5.742 524985.2 2 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/8-1.track.log: -------------------------------------------------------------------------------- 1 | 2857996 5.0 571599.2 2 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/8-2.track.log: -------------------------------------------------------------------------------- 1 | 2803575 4.94 567525.3 2 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/8-3.track.log: -------------------------------------------------------------------------------- 1 | 2800986 4.948 566084.48 2 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/9-1.track.log: -------------------------------------------------------------------------------- 1 | 2880352 4.442 648435.84 2 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/9-2.track.log: -------------------------------------------------------------------------------- 1 | 2843131 4.395 646901.25 2 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/9-3.track.log: -------------------------------------------------------------------------------- 1 | 2860275 4.465 640599.1 2 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/results/results.log: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stonysystems/rolis/c141efef78b436022d9aba2aa7a6e3b7d4b9c98b/silo-scripts/multi-replay/results/results.log -------------------------------------------------------------------------------- /silo-scripts/multi-replay/snippet.cc: -------------------------------------------------------------------------------- 1 | 2 | #include 3 | #include 4 | 5 | void sleepB(std::string prev, int m, std::string msg) { 6 | if (prev != "") 7 | std::cout << prev << " running on coreid " << sched_getcpu() << std::endl; 8 | std::this_thread::sleep_for (std::chrono::seconds (m)); 9 | if (msg != "") 10 | std::cout << msg << " running on coreid " << sched_getcpu() << std::endl; 11 | } 12 | 13 | register_for_follower([=](const char* log, int len) { 14 | std::ofstream outfile("log/follower_dbtest.txt", ios::app); 15 | outfile << log << std::endl; 16 | outfile.close(); 17 | } i); 18 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/t0.py: -------------------------------------------------------------------------------- 1 | import collections 2 | 3 | if __name__ == "__main__": 4 | with open("./logs.log", "r") as handler: 5 | M = {} 6 | cM = {} 7 | valid = 0 8 | for l in handler.readlines(): 9 | l = l.strip() 10 | cid, k, v = int(l.split("_")[0]),int(l.split("_")[1]),int(l.split("_")[2]) 11 | cM[cid] = 1 12 | if "%s_%s" % (cid, k) in M: 13 | valid += 1 14 | print("%s_%s" % (cid, k)) 15 | else: 16 | M["%s_%s" % (cid, k)] = 1 17 | print(valid, len(cM)) 18 | -------------------------------------------------------------------------------- /silo-scripts/multi-replay/tmp-1/abc2400: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stonysystems/rolis/c141efef78b436022d9aba2aa7a6e3b7d4b9c98b/silo-scripts/multi-replay/tmp-1/abc2400 -------------------------------------------------------------------------------- /silo-scripts/multi-replay/tmp-1/abc2400.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stonysystems/rolis/c141efef78b436022d9aba2aa7a6e3b7d4b9c98b/silo-scripts/multi-replay/tmp-1/abc2400.pdf -------------------------------------------------------------------------------- /silo-scripts/multi-replay/tmp-1/abc49152: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stonysystems/rolis/c141efef78b436022d9aba2aa7a6e3b7d4b9c98b/silo-scripts/multi-replay/tmp-1/abc49152 -------------------------------------------------------------------------------- /silo-scripts/multi-replay/tmp-1/abc49152.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stonysystems/rolis/c141efef78b436022d9aba2aa7a6e3b7d4b9c98b/silo-scripts/multi-replay/tmp-1/abc49152.pdf -------------------------------------------------------------------------------- /silo-scripts/multi-replay/tmp-1/abc50331648: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stonysystems/rolis/c141efef78b436022d9aba2aa7a6e3b7d4b9c98b/silo-scripts/multi-replay/tmp-1/abc50331648 -------------------------------------------------------------------------------- /silo-scripts/multi-replay/tmp-1/abc50331648.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stonysystems/rolis/c141efef78b436022d9aba2aa7a6e3b7d4b9c98b/silo-scripts/multi-replay/tmp-1/abc50331648.pdf -------------------------------------------------------------------------------- /silo-scripts/myscripts/arg.cpp: -------------------------------------------------------------------------------- 1 | // 2 | // Created by weihshen on 9/11/21. 3 | // 4 | #include 5 | #include 6 | #include 7 | #include 8 | 9 | using namespace std; 10 | 11 | int 12 | main(int argc, char **argv) 13 | { 14 | // clang-format off 15 | const char *rte_argv[] = { 16 | "-c", "0x0", 17 | "-n", "6", // Memory channels 18 | "-m", "1024", // Max memory in megabytes 19 | "--proc-type", "auto", 20 | nullptr}; 21 | // clang-format on 22 | 23 | const int rte_argc = 24 | static_cast(sizeof(rte_argv) / sizeof(rte_argv[0])) - 1; 25 | std::cout << argc << std::endl; 26 | 27 | return 0; 28 | } 29 | -------------------------------------------------------------------------------- /silo-scripts/myscripts/macro_test.cpp: -------------------------------------------------------------------------------- 1 | // 2 | // Created by weihshen on 11/18/2021. 3 | // 4 | 5 | // https://riptutorial.com/cplusplus/example/3527/macros 6 | #include 7 | #include 8 | #include 9 | #include 10 | 11 | using namespace std; 12 | 13 | int var_1 = 1; 14 | int var_2 = 2; 15 | #define SHOW(a) std::cout << #a << ": " << (a) << std::endl 16 | 17 | int main(int argc, char **argv) 18 | { 19 | SHOW(var_1); 20 | SHOW("var_1"); 21 | return 0; 22 | } -------------------------------------------------------------------------------- /silo-scripts/myscripts/run.sh: -------------------------------------------------------------------------------- 1 | g++ shared_ptr.cpp -g -lpthread -Wall -O0 -o run -------------------------------------------------------------------------------- /silo-scripts/myscripts/tester2.cpp: -------------------------------------------------------------------------------- 1 | // 2 | // Created by weihshen on 6/27/21. 3 | // 4 | #include 5 | #include 6 | #include 7 | #include 8 | using namespace std; 9 | 10 | int main() { 11 | auto start = std::chrono::steady_clock::now(); 12 | sleep(1); 13 | auto end = std::chrono::steady_clock::now(); 14 | auto diff = end - start; 15 | auto timeTaken = std::chrono::duration (diff).count() ; 16 | std::cout << timeTaken ; 17 | return 0 ; 18 | } -------------------------------------------------------------------------------- /silo_rep_paper.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stonysystems/rolis/c141efef78b436022d9aba2aa7a6e3b7d4b9c98b/silo_rep_paper.pdf -------------------------------------------------------------------------------- /single_paxos_group.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stonysystems/rolis/c141efef78b436022d9aba2aa7a6e3b7d4b9c98b/single_paxos_group.pdf -------------------------------------------------------------------------------- /software_comparison.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stonysystems/rolis/c141efef78b436022d9aba2aa7a6e3b7d4b9c98b/software_comparison.png -------------------------------------------------------------------------------- /stats_server.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include "stats_common.h" 5 | 6 | // serves over unix socket 7 | class stats_server { 8 | public: 9 | stats_server(const std::string &sockfile); 10 | void serve_forever(); // blocks current thread 11 | private: 12 | bool handle_cmd_get_counter_value(const std::string &name, packet &pkt); 13 | void serve_client(int fd); 14 | std::string sockfile_; 15 | }; 16 | -------------------------------------------------------------------------------- /test/README.md: -------------------------------------------------------------------------------- 1 | ## bash_test tools 2 | `cd ./silo-sto && sudo bash runner.sh` 3 | References: https://thorsteinssonh.github.io/bash_test_tools/ 4 | -------------------------------------------------------------------------------- /third-party/lz4/LZ4 Streaming Format.odt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stonysystems/rolis/c141efef78b436022d9aba2aa7a6e3b7d4b9c98b/third-party/lz4/LZ4 Streaming Format.odt -------------------------------------------------------------------------------- /third-party/paxos/.idea/codeStyles/codeStyleConfig.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | -------------------------------------------------------------------------------- /third-party/paxos/.idea/janus.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /third-party/paxos/.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /third-party/paxos/.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /third-party/paxos/.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /third-party/paxos/.waf-tools/unittest_gtest.pygz2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stonysystems/rolis/c141efef78b436022d9aba2aa7a6e3b7d4b9c98b/third-party/paxos/.waf-tools/unittest_gtest.pygz2 -------------------------------------------------------------------------------- /third-party/paxos/.waf3-2.0.18-96675f149f50dab16c9e2e6aaf5e787b/waflib/Tools/__init__.py: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env python 2 | # encoding: utf-8 3 | # WARNING! Do not edit! https://waf.io/book/index.html#_obtaining_the_waf_file 4 | 5 | -------------------------------------------------------------------------------- /third-party/paxos/.waf3-2.0.18-96675f149f50dab16c9e2e6aaf5e787b/waflib/Tools/ar.py: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env python 2 | # encoding: utf-8 3 | # WARNING! Do not edit! https://waf.io/book/index.html#_obtaining_the_waf_file 4 | 5 | from waflib.Configure import conf 6 | @conf 7 | def find_ar(conf): 8 | conf.load('ar') 9 | def configure(conf): 10 | conf.find_program('ar',var='AR') 11 | conf.add_os_flags('ARFLAGS') 12 | if not conf.env.ARFLAGS: 13 | conf.env.ARFLAGS=['rcs'] 14 | -------------------------------------------------------------------------------- /third-party/paxos/.waf3-2.0.18-96675f149f50dab16c9e2e6aaf5e787b/waflib/Tools/clang.py: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env python 2 | # encoding: utf-8 3 | # WARNING! Do not edit! https://waf.io/book/index.html#_obtaining_the_waf_file 4 | 5 | from waflib.Tools import ccroot,ar,gcc 6 | from waflib.Configure import conf 7 | @conf 8 | def find_clang(conf): 9 | cc=conf.find_program('clang',var='CC') 10 | conf.get_cc_version(cc,clang=True) 11 | conf.env.CC_NAME='clang' 12 | def configure(conf): 13 | conf.find_clang() 14 | conf.find_program(['llvm-ar','ar'],var='AR') 15 | conf.find_ar() 16 | conf.gcc_common_flags() 17 | conf.gcc_modifier_platform() 18 | conf.cc_load_tools() 19 | conf.cc_add_flags() 20 | conf.link_add_flags() 21 | -------------------------------------------------------------------------------- /third-party/paxos/.waf3-2.0.18-96675f149f50dab16c9e2e6aaf5e787b/waflib/Tools/clangxx.py: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env python 2 | # encoding: utf-8 3 | # WARNING! Do not edit! https://waf.io/book/index.html#_obtaining_the_waf_file 4 | 5 | from waflib.Tools import ccroot,ar,gxx 6 | from waflib.Configure import conf 7 | @conf 8 | def find_clangxx(conf): 9 | cxx=conf.find_program('clang++',var='CXX') 10 | conf.get_cc_version(cxx,clang=True) 11 | conf.env.CXX_NAME='clang' 12 | def configure(conf): 13 | conf.find_clangxx() 14 | conf.find_program(['llvm-ar','ar'],var='AR') 15 | conf.find_ar() 16 | conf.gxx_common_flags() 17 | conf.gxx_modifier_platform() 18 | conf.cxx_load_tools() 19 | conf.cxx_add_flags() 20 | conf.link_add_flags() 21 | -------------------------------------------------------------------------------- /third-party/paxos/.waf3-2.0.18-96675f149f50dab16c9e2e6aaf5e787b/waflib/Tools/gas.py: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env python 2 | # encoding: utf-8 3 | # WARNING! Do not edit! https://waf.io/book/index.html#_obtaining_the_waf_file 4 | 5 | import waflib.Tools.asm 6 | from waflib.Tools import ar 7 | def configure(conf): 8 | conf.find_program(['gas','gcc'],var='AS') 9 | conf.env.AS_TGT_F=['-c','-o'] 10 | conf.env.ASLNK_TGT_F=['-o'] 11 | conf.find_ar() 12 | conf.load('asm') 13 | conf.env.ASM_NAME='gas' 14 | -------------------------------------------------------------------------------- /third-party/paxos/.waf3-2.0.18-96675f149f50dab16c9e2e6aaf5e787b/waflib/Tools/icc.py: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env python 2 | # encoding: utf-8 3 | # WARNING! Do not edit! https://waf.io/book/index.html#_obtaining_the_waf_file 4 | 5 | import sys 6 | from waflib.Tools import ccroot,ar,gcc 7 | from waflib.Configure import conf 8 | @conf 9 | def find_icc(conf): 10 | cc=conf.find_program(['icc','ICL'],var='CC') 11 | conf.get_cc_version(cc,icc=True) 12 | conf.env.CC_NAME='icc' 13 | def configure(conf): 14 | conf.find_icc() 15 | conf.find_ar() 16 | conf.gcc_common_flags() 17 | conf.gcc_modifier_platform() 18 | conf.cc_load_tools() 19 | conf.cc_add_flags() 20 | conf.link_add_flags() 21 | -------------------------------------------------------------------------------- /third-party/paxos/.waf3-2.0.18-96675f149f50dab16c9e2e6aaf5e787b/waflib/Tools/icpc.py: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env python 2 | # encoding: utf-8 3 | # WARNING! Do not edit! https://waf.io/book/index.html#_obtaining_the_waf_file 4 | 5 | import sys 6 | from waflib.Tools import ccroot,ar,gxx 7 | from waflib.Configure import conf 8 | @conf 9 | def find_icpc(conf): 10 | cxx=conf.find_program('icpc',var='CXX') 11 | conf.get_cc_version(cxx,icc=True) 12 | conf.env.CXX_NAME='icc' 13 | def configure(conf): 14 | conf.find_icpc() 15 | conf.find_ar() 16 | conf.gxx_common_flags() 17 | conf.gxx_modifier_platform() 18 | conf.cxx_load_tools() 19 | conf.cxx_add_flags() 20 | conf.link_add_flags() 21 | -------------------------------------------------------------------------------- /third-party/paxos/.waf3-2.0.18-96675f149f50dab16c9e2e6aaf5e787b/waflib/Tools/lua.py: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env python 2 | # encoding: utf-8 3 | # WARNING! Do not edit! https://waf.io/book/index.html#_obtaining_the_waf_file 4 | 5 | from waflib.TaskGen import extension 6 | from waflib import Task 7 | @extension('.lua') 8 | def add_lua(self,node): 9 | tsk=self.create_task('luac',node,node.change_ext('.luac')) 10 | inst_to=getattr(self,'install_path',self.env.LUADIR and'${LUADIR}'or None) 11 | if inst_to: 12 | self.add_install_files(install_to=inst_to,install_from=tsk.outputs) 13 | return tsk 14 | class luac(Task.Task): 15 | run_str='${LUAC} -s -o ${TGT} ${SRC}' 16 | color='PINK' 17 | def configure(conf): 18 | conf.find_program('luac',var='LUAC') 19 | -------------------------------------------------------------------------------- /third-party/paxos/.waf3-2.0.18-96675f149f50dab16c9e2e6aaf5e787b/waflib/Tools/nasm.py: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env python 2 | # encoding: utf-8 3 | # WARNING! Do not edit! https://waf.io/book/index.html#_obtaining_the_waf_file 4 | 5 | import os 6 | import waflib.Tools.asm 7 | from waflib.TaskGen import feature 8 | @feature('asm') 9 | def apply_nasm_vars(self): 10 | self.env.append_value('ASFLAGS',self.to_list(getattr(self,'nasm_flags',[]))) 11 | def configure(conf): 12 | conf.find_program(['nasm','yasm'],var='AS') 13 | conf.env.AS_TGT_F=['-o'] 14 | conf.env.ASLNK_TGT_F=['-o'] 15 | conf.load('asm') 16 | conf.env.ASMPATH_ST='-I%s'+os.sep 17 | txt=conf.cmd_and_log(conf.env.AS+['--version']) 18 | if'yasm'in txt.lower(): 19 | conf.env.ASM_NAME='yasm' 20 | else: 21 | conf.env.ASM_NAME='nasm' 22 | -------------------------------------------------------------------------------- /third-party/paxos/.waf3-2.0.18-96675f149f50dab16c9e2e6aaf5e787b/waflib/Tools/nobuild.py: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env python 2 | # encoding: utf-8 3 | # WARNING! Do not edit! https://waf.io/book/index.html#_obtaining_the_waf_file 4 | 5 | from waflib import Task 6 | def build(bld): 7 | def run(self): 8 | for x in self.outputs: 9 | x.write('') 10 | for(name,cls)in Task.classes.items(): 11 | cls.run=run 12 | -------------------------------------------------------------------------------- /third-party/paxos/.waf3-2.0.18-96675f149f50dab16c9e2e6aaf5e787b/waflib/__init__.py: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env python 2 | # encoding: utf-8 3 | # WARNING! Do not edit! https://waf.io/book/index.html#_obtaining_the_waf_file 4 | 5 | -------------------------------------------------------------------------------- /third-party/paxos/.waf3-2.0.18-96675f149f50dab16c9e2e6aaf5e787b/waflib/extras/__init__.py: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env python 2 | # encoding: utf-8 3 | # WARNING! Do not edit! https://waf.io/book/index.html#_obtaining_the_waf_file 4 | 5 | -------------------------------------------------------------------------------- /third-party/paxos/Makefile: -------------------------------------------------------------------------------- 1 | all: 2 | @echo $(PWD) 3 | python3 waf configure build 4 | -------------------------------------------------------------------------------- /third-party/paxos/abc.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stonysystems/rolis/c141efef78b436022d9aba2aa7a6e3b7d4b9c98b/third-party/paxos/abc.txt -------------------------------------------------------------------------------- /third-party/paxos/bin/gendoxygen.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | if [ ! -f run.py ]; then 3 | echo "run from root of project!" 4 | exit 1 5 | fi 6 | mkdir -p docs 7 | doxygen config/Doxyfile 8 | -------------------------------------------------------------------------------- /third-party/paxos/bin/rlogserver: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stonysystems/rolis/c141efef78b436022d9aba2aa7a6e3b7d4b9c98b/third-party/paxos/bin/rlogserver -------------------------------------------------------------------------------- /third-party/paxos/cmake/Hunter/config.cmake: -------------------------------------------------------------------------------- 1 | hunter_config( 2 | Boost 3 | VERSION ${HUNTER_Boost_VERSION} 4 | # VERSION 1.68.0-p1 5 | # CMAKE_ARGS 6 | # CONFIG_MACRO=BOOST_REGEX_MATCH_EXTRA;BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS 7 | # CONFIG_MACRO_BOOST_MPL_LIMIT_LIST_SIZE=3 8 | # CONFIG_MACRO=BOOST_USE_UCONTEXT;BOOST_USE_ASAN 9 | # COROUTINE_context-impl=ucontext 10 | ) 11 | -------------------------------------------------------------------------------- /third-party/paxos/cmake/cxx14.cmake: -------------------------------------------------------------------------------- 1 | #set(CMAKE_C_COMPILER clang) 2 | #set(CMAKE_CXX_COMPILER clang++) 3 | set(CMAKE_CXX_STANDARD 14) 4 | set(CMAKE_CXX_STANDARD_REQUIRED YES) 5 | -------------------------------------------------------------------------------- /third-party/paxos/config/18p.yml: -------------------------------------------------------------------------------- 1 | process: 2 | s101: s101 3 | s102: s102 4 | s103: s103 5 | s104: s104 6 | s105: s105 7 | s106: s106 8 | s201: s201 9 | s202: s202 10 | s203: s203 11 | s204: s204 12 | s205: s205 13 | s206: s206 14 | s301: s301 15 | s302: s302 16 | s303: s303 17 | s304: s304 18 | s305: s305 19 | s306: s306 20 | c101: c101 21 | c102: c102 22 | c103: c103 23 | c104: c104 24 | c105: c105 25 | c106: c106 26 | c201: c201 27 | c202: c202 28 | c203: c203 29 | c204: c204 30 | c205: c205 31 | c206: c206 32 | c301: c301 33 | c302: c302 34 | c303: c303 35 | c304: c304 36 | c305: c305 37 | c306: c306 38 | -------------------------------------------------------------------------------- /third-party/paxos/config/1c1s.yml: -------------------------------------------------------------------------------- 1 | # 2 | # host machine 3 | # physical process as container 4 | # logical site as a thread 5 | # site --> process --> host 6 | # 7 | # site: logical site (either as server/coordinator), which lives in a thread (may share thread 8 | # process 9 | # host is 10 | 11 | # site - partition map 12 | site: 13 | server: # each line is a partition, the first is the master site_name:port 14 | # - ["s101:8000", "s201:8001", "s301:8002"] 15 | # - ["s102:8100", "s202:8101", "s302:8102"] 16 | # - ["s103:8200", "s203:8201", "s303:8202"] 17 | - ["s101:8101"] 18 | # - ["s102:8102"] 19 | # - ["s103:8103"] 20 | client: # each line is a partition 21 | - ["c101"] 22 | # - ["c102"] 23 | -------------------------------------------------------------------------------- /third-party/paxos/config/1c1s2r.yml: -------------------------------------------------------------------------------- 1 | 2 | site: 3 | server: # each line is a partition, the first is the master site_name:port 4 | - ["s101:8000", "s201:8001"] 5 | client: # each line is a partition 6 | - ["c101"] 7 | 8 | process: 9 | s101: localhost 10 | s201: p2 11 | c101: localhost 12 | 13 | # process_name - host_addr map 14 | host: 15 | localhost: 127.0.0.1 16 | p2: 127.0.0.1 17 | 18 | -------------------------------------------------------------------------------- /third-party/paxos/config/1c1s3r3p.yml: -------------------------------------------------------------------------------- 1 | 2 | site: 3 | server: # each line is a partition, the first is the master site_name:port 4 | - ["s101:8100", "s201:8101" , "s301:8102"] 5 | client: # each line is a partition 6 | - ["c101"] 7 | 8 | process: 9 | s101: localhost 10 | s201: p2 11 | s301: p3 12 | c101: localhost 13 | 14 | # process_name - host_addr map 15 | host: 16 | localhost: 127.0.0.1 17 | p2: 127.0.0.1 18 | p3: 127.0.0.1 19 | 20 | -------------------------------------------------------------------------------- /third-party/paxos/config/1c2s6r1p.yml: -------------------------------------------------------------------------------- 1 | 2 | site: 3 | server: # each line is a partition, the first is the master site_name:port 4 | - ["s101:8000", "s201:8001", "s301:8002"] 5 | - ["s102:8010", "s202:8011", "s302:8012"] 6 | client: # each line is a partition 7 | - ["c101"] 8 | 9 | process: 10 | s101: localhost 11 | s201: localhost 12 | s301: localhost 13 | s102: localhost 14 | s202: localhost 15 | s302: localhost 16 | c101: localhost 17 | 18 | # process_name - host_addr map 19 | host: 20 | localhost: 127.0.0.1 21 | -------------------------------------------------------------------------------- /third-party/paxos/config/1silo_1paxos_1follower/run.sh: -------------------------------------------------------------------------------- 1 | git checkout . 2 | sed -i "s/localhost: 127.0.0.1/localhost: 10.1.0.7/g" `grep "localhost: 127.0.0.1" -rl ./*.yml` 3 | sed -i "s/p1: 127.0.0.1/p1: 10.1.0.8/g" `grep "p1: 127.0.0.1" -rl ./*.yml` 4 | -------------------------------------------------------------------------------- /third-party/paxos/config/1silo_1paxos_2follower/run.sh: -------------------------------------------------------------------------------- 1 | # ./run.sh "10.1.0.7" "10.1.0.8" "10.1.0.9" 2 | leader=$1 3 | p1=$2 4 | p2=$3 5 | echo $leader > ../../../../scripts/ip_leader_replica 6 | echo $p1 > ../../../../scripts/ip_p1_follower_replica 7 | echo $p2 > ../../../../scripts/ip_p2_follower_replica 8 | sed -i "s/localhost: 127.0.0.1/localhost: $leader/g" `grep "localhost: 127.0.0.1" -rl ./*.yml` 9 | sed -i "s/p1: 127.0.0.1/p1: $p1/g" `grep "p1: 127.0.0.1" -rl ./*.yml` 10 | sed -i "s/p2: 127.0.0.1/p2: $p2/g" `grep "p2: 127.0.0.1" -rl ./*.yml` 11 | -------------------------------------------------------------------------------- /third-party/paxos/config/1silo_1paxos_4follower/1.yml: -------------------------------------------------------------------------------- 1 | site: 2 | server: # each line is a partition, the first is the master site_name:port 3 | - ["s101:8001", "s201:8101", "s301:8201", "s401:8301", "s501:8401"] 4 | 5 | process: 6 | s101: localhost 7 | 8 | s201: p1 9 | 10 | s301: p2 11 | 12 | s401: p3 13 | 14 | s501: p4 15 | 16 | # process_name - host_addr map 17 | host: 18 | localhost: 10.1.0.7 19 | p1: 10.1.0.8 20 | p2: 10.1.0.9 21 | p3: 10.1.0.72 22 | p4: 10.1.0.73 23 | -------------------------------------------------------------------------------- /third-party/paxos/config/1silo_1paxos_4follower/2.yml: -------------------------------------------------------------------------------- 1 | site: 2 | server: # each line is a partition, the first is the master site_name:port 3 | - ["s101:8001", "s201:8101", "s301:8201", "s401:8301", "s501:8401"] 4 | - ["s102:8002", "s202:8102", "s302:8202", "s402:8302", "s502:8402"] 5 | 6 | process: 7 | s101: localhost 8 | s102: localhost 9 | 10 | s201: p1 11 | s202: p1 12 | 13 | s301: p2 14 | s302: p2 15 | 16 | s401: p3 17 | s402: p3 18 | 19 | s501: p4 20 | s502: p4 21 | 22 | # process_name - host_addr map 23 | host: 24 | localhost: 10.1.0.7 25 | p1: 10.1.0.8 26 | p2: 10.1.0.9 27 | p3: 10.1.0.72 28 | p4: 10.1.0.73 29 | -------------------------------------------------------------------------------- /third-party/paxos/config/1silo_1paxos_4follower/3.yml: -------------------------------------------------------------------------------- 1 | site: 2 | server: # each line is a partition, the first is the master site_name:port 3 | - ["s101:8001", "s201:8101", "s301:8201", "s401:8301", "s501:8401"] 4 | - ["s102:8002", "s202:8102", "s302:8202", "s402:8302", "s502:8402"] 5 | - ["s103:8003", "s203:8103", "s303:8203", "s403:8303", "s503:8403"] 6 | 7 | process: 8 | s101: localhost 9 | s102: localhost 10 | s103: localhost 11 | 12 | s201: p1 13 | s202: p1 14 | s203: p1 15 | 16 | s301: p2 17 | s302: p2 18 | s303: p2 19 | 20 | s401: p3 21 | s402: p3 22 | s403: p3 23 | 24 | s501: p4 25 | s502: p4 26 | s503: p4 27 | 28 | # process_name - host_addr map 29 | host: 30 | localhost: 10.1.0.7 31 | p1: 10.1.0.8 32 | p2: 10.1.0.9 33 | p3: 10.1.0.72 34 | p4: 10.1.0.73 35 | -------------------------------------------------------------------------------- /third-party/paxos/config/1silo_1paxos_4follower/run.sh: -------------------------------------------------------------------------------- 1 | git checkout . 2 | sed -i "s/localhost: 127.0.0.1/localhost: 10.1.0.7/g" `grep "localhost: 127.0.0.1" -rl ./*.yml` 3 | sed -i "s/p1: 127.0.0.1/p1: 10.1.0.8/g" `grep "p1: 127.0.0.1" -rl ./*.yml` 4 | sed -i "s/p2: 127.0.0.1/p2: 10.1.0.9/g" `grep "p2: 127.0.0.1" -rl ./*.yml` 5 | sed -i "s/p3: 127.0.0.1/p3: 10.1.0.72/g" `grep "p3: 127.0.0.1" -rl ./*.yml` 6 | sed -i "s/p4: 127.0.0.1/p4: 10.1.0.73/g" `grep "p4: 127.0.0.1" -rl ./*.yml` 7 | -------------------------------------------------------------------------------- /third-party/paxos/config/3c1s3r.yml: -------------------------------------------------------------------------------- 1 | 2 | site: 3 | server: # each line is a partition, the first is the master site_name:port 4 | - ["s101:8000", "s201:8001", "s301:8002"] 5 | client: # each line is a partition 6 | - ["c101", "c201", "c301"] 7 | -------------------------------------------------------------------------------- /third-party/paxos/config/3c1s3r1p.yml: -------------------------------------------------------------------------------- 1 | 2 | 3 | site: 4 | server: # each line is a partition, the first is the master site_name:port 5 | - ["s101:8000", "s201:8001", "s301:8002"] 6 | client: # each line is a partition 7 | - ["c101", "c201", "c301"] 8 | 9 | process: 10 | s101: localhost 11 | s201: localhost 12 | s301: localhost 13 | c101: localhost 14 | c201: localhost 15 | c301: localhost 16 | 17 | host: 18 | localhost: 127.0.0.1 19 | -------------------------------------------------------------------------------- /third-party/paxos/config/3c1s5r.yml: -------------------------------------------------------------------------------- 1 | 2 | site: 3 | server: # each line is a partition, the first is the master site_name:port server: # each line is a partition, the first is the master site_name:port 4 | - ["s101:8000", "s201:8001", "s301:8002"] - ["s101:8000", "s201:8001", "s301:8002", "s401:8003", "s501:8004"] 5 | client: # each line is a partition client: # each line is a partition 6 | - ["c101", "c201", "c301"] - ["c101", "c201", "c301"] 7 | 8 | 9 | process: process: 10 | s101: localhost s101: localhost 11 | s201: localhost s201: localhost 12 | s301: localhost s301: localhost 13 | s401: localhost 14 | s501: localhost 15 | c101: localhost c101: localhost 16 | c201: localhost c201: localhost 17 | c301: localhost c301: localhost -------------------------------------------------------------------------------- /third-party/paxos/config/3c3s1p.yml: -------------------------------------------------------------------------------- 1 | 2 | 3 | site: 4 | server: # each line is a partition, the first is the master site_name:port 5 | - ["s101:8000"] 6 | - ["s102:8100"] 7 | - ["s103:8200"] 8 | client: # each line is a partition 9 | - ["c01"] 10 | - ["c02"] 11 | - ["c03"] 12 | # site_name - process_name map 13 | process: 14 | s101: localhost 15 | s102: localhost 16 | s103: localhost 17 | c01: localhost 18 | c02: localhost 19 | c03: localhost 20 | 21 | host: 22 | localhost: 127.0.0.1 23 | -------------------------------------------------------------------------------- /third-party/paxos/config/3c3s3r1p.yml: -------------------------------------------------------------------------------- 1 | 2 | site: 3 | server: # each line is a partition, the first is the master site_name:port 4 | - ["s101:28000", "s201:28001", "s301:28002"] 5 | - ["s102:28100", "s202:28101", "s302:28102"] 6 | - ["s103:28200", "s203:28201", "s303:28202"] 7 | client: # each line is a partition 8 | # - ["c01", "c02", "c03"] 9 | - ["c01"] 10 | - ["c02"] 11 | - ["c03"] 12 | # site_name - process_name map 13 | process: 14 | s101: localhost 15 | s102: localhost 16 | s103: localhost 17 | s201: localhost 18 | s202: localhost 19 | s203: localhost 20 | s301: localhost 21 | s302: localhost 22 | s303: localhost 23 | c01: localhost 24 | c02: localhost 25 | c03: localhost 26 | 27 | host: 28 | localhost: 127.0.0.1 29 | -------------------------------------------------------------------------------- /third-party/paxos/config/3p.yml: -------------------------------------------------------------------------------- 1 | process: 2 | s101: b20 3 | s201: b21 4 | s301: b22 5 | c01: b23 6 | c02: b24 7 | c03: b25 8 | -------------------------------------------------------------------------------- /third-party/paxos/config/9c3s3r.yml: -------------------------------------------------------------------------------- 1 | 2 | site: 3 | server: # each line is a partition, the first is the master site_name:port 4 | - ["s101:8000", "s201:8001", "s301:8002"] 5 | - ["s102:8100", "s202:8101", "s302:8102"] 6 | - ["s103:8200", "s203:8201", "s303:8202"] 7 | client: # each line is a partition 8 | - ["c101", "c201", "c301"] 9 | - ["c102", "c202", "c302"] 10 | - ["c103", "c203", "c303"] 11 | - ["c104", "c204", "c304"] 12 | - ["c105", "c205", "c305"] 13 | - ["c106", "c206", "c306"] 14 | -------------------------------------------------------------------------------- /third-party/paxos/config/9c6s3r.yml: -------------------------------------------------------------------------------- 1 | 2 | site: 3 | server: # each line is a partition, the first is the master site_name:port 4 | - ["s101:8000", "s201:8001", "s301:8002"] 5 | - ["s102:8100", "s202:8101", "s302:8102"] 6 | - ["s103:8200", "s203:8201", "s303:8202"] 7 | - ["s104:8300", "s204:8301", "s304:8302"] 8 | - ["s105:8400", "s205:8401", "s305:8402"] 9 | - ["s106:8500", "s206:8501", "s306:8502"] 10 | client: # each line is a partition 11 | - ["c101", "c201", "c301"] 12 | - ["c102", "c202", "c302"] 13 | - ["c103", "c203", "c303"] 14 | - ["c104", "c204", "c304"] 15 | - ["c105", "c205", "c305"] 16 | - ["c106", "c206", "c306"] 17 | -------------------------------------------------------------------------------- /third-party/paxos/config/9p.yml: -------------------------------------------------------------------------------- 1 | process: 2 | s101: b20 3 | s102: b20 4 | s103: b20 5 | s201: b21 6 | s202: b21 7 | s203: b21 8 | s301: b22 9 | s302: b22 10 | s303: b22 11 | c01: b23 12 | c02: b23 13 | c03: b23 14 | c04: b24 15 | c05: b24 16 | c06: b24 17 | c07: b25 18 | c08: b25 19 | c09: b25 20 | -------------------------------------------------------------------------------- /third-party/paxos/config/brq.yml: -------------------------------------------------------------------------------- 1 | mode: 2 | cc: brq # concurrency control 3 | ab: brq # atomic broadcast 4 | batch: false 5 | retry: 20 6 | ongoing: 1 # per client 7 | -------------------------------------------------------------------------------- /third-party/paxos/config/client_closed.yml: -------------------------------------------------------------------------------- 1 | client: 2 | type: closed 3 | rate: -1 4 | forwarding: false 5 | -------------------------------------------------------------------------------- /third-party/paxos/config/client_open.yml: -------------------------------------------------------------------------------- 1 | client: 2 | type: open 3 | rate: 3000 4 | -------------------------------------------------------------------------------- /third-party/paxos/config/client_open_5k.yml: -------------------------------------------------------------------------------- 1 | client: 2 | type: open 3 | rate: 5000 4 | -------------------------------------------------------------------------------- /third-party/paxos/config/concurrent_1.yml: -------------------------------------------------------------------------------- 1 | 2 | n_concurrent: 1 3 | 4 | -------------------------------------------------------------------------------- /third-party/paxos/config/concurrent_10.yml: -------------------------------------------------------------------------------- 1 | 2 | n_concurrent: 10 3 | 4 | -------------------------------------------------------------------------------- /third-party/paxos/config/concurrent_100.yml: -------------------------------------------------------------------------------- 1 | 2 | n_concurrent: 100 3 | 4 | -------------------------------------------------------------------------------- /third-party/paxos/config/concurrent_1000.yml: -------------------------------------------------------------------------------- 1 | 2 | n_concurrent: 1000 3 | 4 | -------------------------------------------------------------------------------- /third-party/paxos/config/concurrent_10000.yml: -------------------------------------------------------------------------------- 1 | 2 | n_concurrent: 10000 3 | 4 | -------------------------------------------------------------------------------- /third-party/paxos/config/concurrent_25.yml: -------------------------------------------------------------------------------- 1 | 2 | n_concurrent: 25 3 | 4 | -------------------------------------------------------------------------------- /third-party/paxos/config/concurrent_50.yml: -------------------------------------------------------------------------------- 1 | 2 | n_concurrent: 50 3 | 4 | -------------------------------------------------------------------------------- /third-party/paxos/config/etc/exports: -------------------------------------------------------------------------------- 1 | /export *(rw,sync,no_root_squash,no_subtree_check) 2 | -------------------------------------------------------------------------------- /third-party/paxos/config/etc/fstab: -------------------------------------------------------------------------------- 1 | ${server_ip}:/export /mnt nfs rw,proto=tcp,port=2049,auto 0 0 2 | -------------------------------------------------------------------------------- /third-party/paxos/config/etc/hosts.allow: -------------------------------------------------------------------------------- 1 | rpcbind mountd nfsd statd lockd rquotad : 127.0.0.1 172.16.0.0/12 $ip_list 2 | -------------------------------------------------------------------------------- /third-party/paxos/config/etc/hosts.deny: -------------------------------------------------------------------------------- 1 | rpcbind mountd nfsd statd lockd rquotad : ALL 2 | -------------------------------------------------------------------------------- /third-party/paxos/config/etc/ntp.conf: -------------------------------------------------------------------------------- 1 | server 1.amazon.pool.ntp.org 2 | server 2.amazon.pool.ntp.org 3 | server 3.amazon.pool.ntp.org 4 | restrict 0.0.0.0 nomodify nopeer notrap 5 | restrict 127.0.0.1 nomodify 6 | -------------------------------------------------------------------------------- /third-party/paxos/config/etc/security/limits.conf: -------------------------------------------------------------------------------- 1 | # /etc/security/limits.conf 2 | # 3 | #Each line describes a limit for a user in the form: 4 | # 5 | # 6 | * hard nofile -1 7 | * soft nofile -1 8 | * hard sigpending -1 9 | * soft sigpending -1 10 | * hard nproc -1 11 | * soft nproc -1 12 | * hard locks -1 13 | * soft locks -1 14 | * hard stack -1 15 | * soft stack -1 16 | * hard memlock -1 17 | * soft memlock -1 18 | * hard as -1 19 | * soft as -1 20 | * hard fsize -1 21 | * soft fsize -1 22 | * hard data -1 23 | * soft data -1 24 | # End of file 25 | -------------------------------------------------------------------------------- /third-party/paxos/config/externc.yml: -------------------------------------------------------------------------------- 1 | 2 | mode: 3 | cc: externc # concurrency control 4 | ab: externc # atomic broadcast 5 | batch: false 6 | retry: 0 7 | ongoing: 2 # per client 8 | 9 | -------------------------------------------------------------------------------- /third-party/paxos/config/februus.yml: -------------------------------------------------------------------------------- 1 | mode: 2 | cc: februus # concurrency control 3 | ab: februus # atomic broadcast 4 | batch: false 5 | retry: 20 6 | ongoing: 1 # per client 7 | -------------------------------------------------------------------------------- /third-party/paxos/config/hosts-local.yml: -------------------------------------------------------------------------------- 1 | host: 2 | localhost: localhost 3 | -------------------------------------------------------------------------------- /third-party/paxos/config/hosts-teaker: -------------------------------------------------------------------------------- 1 | 192.168.1.51 node1 2 | 192.168.1.52 node2 3 | 192.168.1.53 node3 4 | 192.168.1.54 node4 5 | 192.168.1.55 node5 6 | 192.168.1.56 node6 7 | 192.168.1.57 node7 8 | 192.168.1.58 node8 9 | 192.168.1.59 node9 10 | 192.168.1.60 node10 11 | 192.168.1.61 node11 12 | teaker-9 node12 13 | teaker-9 node13 14 | teaker-9 node14 15 | teaker-9 node15 16 | teaker-9 node16 17 | teaker-9 node17 18 | teaker-9 node18 19 | teaker-9 node19 20 | teaker-9 node20 21 | teaker-9 node21 22 | teaker-9 node22 23 | teaker-9 node23 24 | teaker-9 node24 25 | teaker-9 node25 26 | teaker-9 node26 27 | teaker-9 node27 28 | teaker-9 node28 29 | teaker-9 node29 30 | teaker-9 node30 31 | -------------------------------------------------------------------------------- /third-party/paxos/config/janus.yml: -------------------------------------------------------------------------------- 1 | mode: 2 | cc: janus # concurrency control 3 | ab: janus # atomic broadcast 4 | batch: false 5 | retry: 20 6 | ongoing: 1 # per client 7 | -------------------------------------------------------------------------------- /third-party/paxos/config/local/debug.yml: -------------------------------------------------------------------------------- 1 | site: 2 | server: # each line is a partition, the first is the master site_name:port 3 | - ["s101:8001", "s201:8101"] 4 | - ["s102:8002", "s202:8102"] 5 | 6 | process: 7 | s101: localhost 8 | s102: localhost 9 | s201: p1 10 | s202: p1 11 | 12 | # process_name - host_addr map 13 | host: 14 | localhost: 127.0.0.1 15 | p1: 127.0.0.1 16 | -------------------------------------------------------------------------------- /third-party/paxos/config/none.yml: -------------------------------------------------------------------------------- 1 | 2 | mode: 3 | cc: none # concurrency control 4 | ab: none # atomic broadcast 5 | batch: false 6 | retry: 0 7 | ongoing: 2 # per client 8 | 9 | -------------------------------------------------------------------------------- /third-party/paxos/config/occ.yml: -------------------------------------------------------------------------------- 1 | 2 | mode: 3 | cc: occ # concurrency control 4 | ab: none # atomic broadcast 5 | read_only: occ 6 | batch: false 7 | retry: 20 8 | ongoing: 1 # per client 9 | 10 | -------------------------------------------------------------------------------- /third-party/paxos/config/occ_paxos.yml: -------------------------------------------------------------------------------- 1 | 2 | mode: 3 | cc: occ # concurrency control 4 | ab: multi_paxos # atomic broadcast 5 | read_only: occ 6 | batch: false 7 | retry: 20 8 | ongoing: 1 # per client 9 | 10 | -------------------------------------------------------------------------------- /third-party/paxos/config/plot/multi_dc_tpcc_client_90lat.yml: -------------------------------------------------------------------------------- 1 | bench: 2 | - tpcc 3 | graph: 4 | using_cmd: ($6):($13) 5 | x_label: 'Clients' 6 | y_label: 'Latency (ms)' 7 | log_scale: x 10 8 | y_range: '[0:1000]' 9 | y_tics: 0, 200 10 | x_range: '[1:10000]' 11 | output_file: 'multi_dc_${bench}_${txn}_client_lat90' 12 | key_location: 'above' 13 | -------------------------------------------------------------------------------- /third-party/paxos/config/plot/multi_dc_tpcc_client_99lat.yml: -------------------------------------------------------------------------------- 1 | bench: 2 | - tpcc 3 | graph: 4 | using_cmd: ($6):($14) 5 | x_label: 'Clients' 6 | y_label: 'Latency (ms)' 7 | log_scale: xy 10 8 | y_range: '[1:]' 9 | x_range: '[1:10000]' 10 | output_file: 'multi_dc_${bench}_${txn}_client_lat99' 11 | key_location: 'above' 12 | y_format: '"10^%T"' -------------------------------------------------------------------------------- /third-party/paxos/config/plot/multi_dc_tpcc_client_attempts_commit.yml: -------------------------------------------------------------------------------- 1 | bench: 2 | - tpcc 3 | graph: 4 | using_cmd: '($6):($9/$8)' 5 | x_label: 'Clients' 6 | y_label: 'Commit Rate' 7 | log_scale: x 10 8 | output_file: 'multi_dc_${bench}_${txn}_client_commits_attempts' 9 | key_location: 'above' 10 | y_range: '[0:]' 11 | x_range: '[1:10000]' 12 | -------------------------------------------------------------------------------- /third-party/paxos/config/plot/multi_dc_tpcc_client_lat.yml: -------------------------------------------------------------------------------- 1 | bench: 2 | - tpcc 3 | graph: 4 | using_cmd: ($6):($12) 5 | x_label: 'Clients' 6 | y_label: 'Latency (ms)' 7 | log_scale: xy 10 8 | y_range: '[1:]' 9 | x_range: '[1:10000]' 10 | output_file: 'multi_dc_${bench}_${txn}_client_lat' 11 | key_location: 'above' 12 | y_format: '"10^%T"' 13 | -------------------------------------------------------------------------------- /third-party/paxos/config/plot/multi_dc_tpcc_client_tp_log.yml: -------------------------------------------------------------------------------- 1 | bench: 2 | - tpcc 3 | graph: 4 | using_cmd: ($6):($7) 5 | log_scale: xy 10 6 | x_label: 'Clients' 7 | y_label: 'Throughput (txn/s)' 8 | y_range: '[1:]' 9 | x_range: '[1:10000]' 10 | output_file: 'multi_dc_${bench}_${txn}_client_tp_log' 11 | key_location: 'above' 12 | y_format: '"10^%T"' 13 | 14 | -------------------------------------------------------------------------------- /third-party/paxos/config/plot/multi_dc_zipf_90lat.yml: -------------------------------------------------------------------------------- 1 | bench: 2 | - tpca 3 | graph: 4 | using_cmd: '18:13' 5 | x_label: 'Zipf Coefficient' 6 | y_label: 'Latency (ms)' 7 | log_scale: y 10 8 | y_range: '[100:100000]' 9 | x_range: '[0.5:1]' 10 | x_tics: 0,0.1 11 | output_file: 'multi_dc_${bench}_${txn}_zipf_lat90' 12 | key_location: 'above' 13 | y_format: '"10^%T"' 14 | 15 | -------------------------------------------------------------------------------- /third-party/paxos/config/plot/multi_dc_zipf_99lat.yml: -------------------------------------------------------------------------------- 1 | bench: 2 | - tpca 3 | graph: 4 | using_cmd: '18:14' 5 | x_label: 'Zipf Coefficient' 6 | y_label: 'Latency (ms)' 7 | y_range: '[0:]' 8 | x_range: '[0.5:1]' 9 | x_tics: 0,0.1 10 | output_file: 'multi_dc_${bench}_${txn}_zipf_lat99' 11 | key_location: 'above' 12 | y_format: '"10^%T"' 13 | -------------------------------------------------------------------------------- /third-party/paxos/config/plot/multi_dc_zipf_attempts_commit.yml: -------------------------------------------------------------------------------- 1 | bench: 2 | - tpca 3 | graph: 4 | using_cmd: '18:($9/$8)' 5 | x_label: 'Zipf Coefficient' 6 | y_label: 'Commit Rate' 7 | y_range: '[0:]' 8 | x_range: '[0.5:1]' 9 | x_tics: 0,0.1 10 | output_file: 'multi_dc_${bench}_${txn}_zipf_commits_attempts' 11 | key_location: 'above' -------------------------------------------------------------------------------- /third-party/paxos/config/plot/multi_dc_zipf_lat.yml: -------------------------------------------------------------------------------- 1 | bench: 2 | - tpca 3 | graph: 4 | using_cmd: '18:12' 5 | x_label: 'Zipf Coefficient' 6 | y_label: 'Latency (ms)' 7 | log_scale: y 10 8 | y_range: '[100:8000]' 9 | x_range: '[0.5:1]' 10 | x_tics: 0,0.1 11 | output_file: 'multi_dc_${bench}_${txn}_zipf_lat' 12 | key_location: 'above' 13 | y_format: '"10^%T"' 14 | -------------------------------------------------------------------------------- /third-party/paxos/config/plot/multi_dc_zipf_tp.yml: -------------------------------------------------------------------------------- 1 | bench: 2 | - tpca 3 | graph: 4 | using_cmd: '18:($7/1000)' 5 | x_label: 'Zipf Coefficient' 6 | y_label: 'Throughput (10^3 txn/s)' 7 | y_range: '[0:]' 8 | x_range: '[0.5:1]' 9 | x_tics: 0,0.1 10 | y_tics: 0,20 11 | output_file: 'multi_dc_${bench}_${txn}_zipf_tp' 12 | key_location: 'above' 13 | -------------------------------------------------------------------------------- /third-party/paxos/config/plot/single_dc_tpcc_client_90lat.yml: -------------------------------------------------------------------------------- 1 | bench: 2 | - tpcc 3 | graph: 4 | using_cmd: ($6):($13) 5 | x_label: 'Clients' 6 | y_label: 'Latency (ms)' 7 | log_scale: x 10 8 | y_range: '[1:1000]' 9 | y_tics: 0, 200 10 | x_range: '[1:4000]' 11 | output_file: 'single_dc_${bench}_${txn}_client_lat90' 12 | key_location: 'above' 13 | -------------------------------------------------------------------------------- /third-party/paxos/config/plot/single_dc_tpcc_client_99lat.yml: -------------------------------------------------------------------------------- 1 | bench: 2 | - tpcc 3 | graph: 4 | using_cmd: ($6):($14) 5 | x_label: 'Clients' 6 | y_label: 'Latency (ms)' 7 | log_scale: xy 10 8 | y_range: '[1:]' 9 | x_range: '[1:4000]' 10 | output_file: 'single_dc_${bench}_${txn}_client_lat99' 11 | key_location: 'above' 12 | y_format: '"10^%T"' -------------------------------------------------------------------------------- /third-party/paxos/config/plot/single_dc_tpcc_client_attempts_commit.yml: -------------------------------------------------------------------------------- 1 | bench: 2 | - tpcc 3 | graph: 4 | using_cmd: '($6):($9/$8)' 5 | x_label: 'Clients' 6 | y_label: 'Commit Rate' 7 | log_scale: x 10 8 | output_file: 'single_dc_${bench}_${txn}_client_commits_attempts' 9 | key_location: 'above' 10 | y_range: '[0:]' 11 | x_range: '[1:4000]' 12 | -------------------------------------------------------------------------------- /third-party/paxos/config/plot/single_dc_tpcc_client_lat.yml: -------------------------------------------------------------------------------- 1 | bench: 2 | - tpcc 3 | graph: 4 | using_cmd: ($6):($12) 5 | x_label: 'Clients' 6 | y_label: 'Latency (ms)' 7 | log_scale: xy 10 8 | y_range: '[1:]' 9 | x_range: '[1:4000]' 10 | output_file: 'single_dc_${bench}_${txn}_client_lat' 11 | key_location: 'above' 12 | y_format: '"10^%T"' 13 | -------------------------------------------------------------------------------- /third-party/paxos/config/plot/single_dc_tpcc_client_tp_log.yml: -------------------------------------------------------------------------------- 1 | bench: 2 | - tpcc 3 | graph: 4 | using_cmd: ($6):($7) 5 | log_scale: xy 10 6 | x_label: 'Clients' 7 | y_label: 'Throughput (txn/s)' 8 | y_range: '[1:]' 9 | x_range: '[1:4000]' 10 | output_file: 'single_dc_${bench}_${txn}_client_tp_log' 11 | key_location: 'above' 12 | y_format: '"10^%T"' -------------------------------------------------------------------------------- /third-party/paxos/config/plot/single_dc_zipf_90lat.yml: -------------------------------------------------------------------------------- 1 | bench: 2 | - tpca 3 | graph: 4 | using_cmd: '18:13' 5 | x_label: 'Zipf Coefficient' 6 | y_label: 'Latency (ms)' 7 | y_range: '[1:]' 8 | log_scale: y 10 9 | x_range: '[0.5:1]' 10 | x_tics: 0,0.1 11 | output_file: 'single_dc_${bench}_${txn}_zipf_lat90' 12 | key_location: 'above' 13 | y_format: '"10^%T"' -------------------------------------------------------------------------------- /third-party/paxos/config/plot/single_dc_zipf_99lat.yml: -------------------------------------------------------------------------------- 1 | bench: 2 | - tpca 3 | graph: 4 | using_cmd: '18:14' 5 | x_label: 'Zipf Coefficient' 6 | y_label: 'Latency (ms)' 7 | log_scale: y 10 8 | y_range: '[10:18000]' 9 | x_range: '[0.5:1]' 10 | x_tics: 0,0.1 11 | output_file: 'single_dc_${bench}_${txn}_zipf_lat99' 12 | key_location: 'above' 13 | y_format: '"10^%T"' 14 | -------------------------------------------------------------------------------- /third-party/paxos/config/plot/single_dc_zipf_attempts_commit.yml: -------------------------------------------------------------------------------- 1 | bench: 2 | - tpca 3 | graph: 4 | using_cmd: '18:($9/$8)' 5 | x_label: 'Zipf Coefficient' 6 | y_label: 'Commit Rate' 7 | y_range: '[0:]' 8 | x_range: '[0.5:1]' 9 | x_tics: 0,0.1 10 | output_file: 'single_dc_${bench}_${txn}_zipf_commits_attempts' 11 | key_location: 'above' 12 | -------------------------------------------------------------------------------- /third-party/paxos/config/plot/single_dc_zipf_lat.yml: -------------------------------------------------------------------------------- 1 | bench: 2 | - tpca 3 | graph: 4 | using_cmd: '18:12' 5 | x_label: 'Zipf Coefficient' 6 | y_label: 'Latency (ms)' 7 | y_range: '[0:140]' 8 | x_range: '[0.5:1]' 9 | x_tics: 0,0.1 10 | output_file: 'single_dc_${bench}_${txn}_zipf_lat' 11 | key_location: 'above' 12 | -------------------------------------------------------------------------------- /third-party/paxos/config/plot/single_dc_zipf_tp.yml: -------------------------------------------------------------------------------- 1 | bench: 2 | - tpca 3 | graph: 4 | using_cmd: '18:($7/1000)' 5 | x_label: 'Zipf Coefficient' 6 | y_label: 'Throughput (10^3 txn/s)' 7 | y_range: '[0:]' 8 | x_range: '[0.5:1]' 9 | x_tics: 0,0.1 10 | y_tics: 0,40 11 | output_file: 'single_dc_${bench}_${txn}_zipf_tp' 12 | key_location: 'above' -------------------------------------------------------------------------------- /third-party/paxos/config/rcc.yml: -------------------------------------------------------------------------------- 1 | 2 | mode: 3 | cc: rcc # concurrency control 4 | ab: none # atomic broadcast 5 | read_only: occ 6 | batch: false 7 | retry: 0 8 | ongoing: 1 # per client 9 | 10 | -------------------------------------------------------------------------------- /third-party/paxos/config/ssh/config: -------------------------------------------------------------------------------- 1 | Host * 2 | StrictHostKeyChecking no 3 | 4 | Host 52.* 5 | StrictHostKeyChecking no 6 | UserKnownHostsFile=/dev/null 7 | 8 | -------------------------------------------------------------------------------- /third-party/paxos/config/ssh/id_rsa.pub: -------------------------------------------------------------------------------- 1 | ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDKQmObaO5oTnS7Mx+mp8eLu2MPJelvaAR5Zh8nZ0wAof6djARdwUoa8KTqMqnoqZ4YkgbDIhqms83q8AVellSWdTFFr8Cgyh3XY8IXl2bQlX0wX6uaLqw1MFMAlitFhgStGCG+2P1cQMH6TEPoQvJWmOcm+pYT0qHcLziWmjol1oeSdJMBqBnR2+a62GwjEX4HqAEp/kkk1/W56nr34wASXir4gZuZDtDDbP9DsdMymuRO/FX9agQI4WTSlCGDIEG8JdpFDbrL9nM/E8eDKPwJHNELh+GqYMMdBD30/qTmr053VYrFTZEPK7vO0OGIOmSJ/WF6PaT8Zq7zJiCasSw/ ubuntu@ip-172-31-43-147 2 | -------------------------------------------------------------------------------- /third-party/paxos/config/tapir.yml: -------------------------------------------------------------------------------- 1 | mode: 2 | cc: tapir # concurrency control 3 | ab: tapir # atomic broadcast 4 | batch: false 5 | retry: 20 6 | ongoing: 1 # per client 7 | -------------------------------------------------------------------------------- /third-party/paxos/config/tpl_wd.yml: -------------------------------------------------------------------------------- 1 | 2 | mode: 3 | cc: 2pl_wd # concurrency control 4 | ab: none # atomic broadcast 5 | read_only: occ 6 | batch: false 7 | retry: 20 8 | ongoing: 1 # per client 9 | 10 | -------------------------------------------------------------------------------- /third-party/paxos/config/tpl_ww.yml: -------------------------------------------------------------------------------- 1 | 2 | mode: 3 | cc: 2pl_ww # concurrency control 4 | ab: none # atomic broadcast 5 | read_only: occ 6 | batch: false 7 | retry: 20 8 | ongoing: 1 # per client 9 | 10 | -------------------------------------------------------------------------------- /third-party/paxos/config/tpl_ww_paxos.yml: -------------------------------------------------------------------------------- 1 | 2 | mode: 3 | cc: 2pl_ww # concurrency control 4 | ab: multi_paxos # atomic broadcast 5 | read_only: occ 6 | batch: false 7 | retry: 20 8 | ongoing: 1 # per client 9 | 10 | -------------------------------------------------------------------------------- /third-party/paxos/config/troad.yml: -------------------------------------------------------------------------------- 1 | mode: 2 | cc: troad # concurrency control 3 | ab: troad # atomic broadcast 4 | batch: false 5 | retry: 20 6 | ongoing: 1 # per client 7 | -------------------------------------------------------------------------------- /third-party/paxos/dependencies/yaml-cpp/.gitignore: -------------------------------------------------------------------------------- 1 | build/ 2 | -------------------------------------------------------------------------------- /third-party/paxos/dependencies/yaml-cpp/.travis.yml: -------------------------------------------------------------------------------- 1 | language: c++ 2 | os: 3 | - linux 4 | - osx 5 | compiler: 6 | - clang 7 | - gcc 8 | before_install: 9 | - | 10 | if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then 11 | sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y \ 12 | && sudo apt-get update -qq \ 13 | && if [ "$CXX" == "g++" ]; then 14 | sudo apt-get install -qq g++-4.7 && export CXX="g++-4.7" CC="gcc-4.7" 15 | fi 16 | fi 17 | before_script: 18 | - mkdir build 19 | - cd build 20 | - cmake .. 21 | script: 22 | - make 23 | - test/run-tests 24 | 25 | matrix: 26 | exclude: 27 | - os: linux 28 | compiler: clang 29 | -------------------------------------------------------------------------------- /third-party/paxos/dependencies/yaml-cpp/include/yaml-cpp/anchor.h: -------------------------------------------------------------------------------- 1 | #ifndef ANCHOR_H_62B23520_7C8E_11DE_8A39_0800200C9A66 2 | #define ANCHOR_H_62B23520_7C8E_11DE_8A39_0800200C9A66 3 | 4 | #if defined(_MSC_VER) || \ 5 | (defined(__GNUC__) && (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) || \ 6 | (__GNUC__ >= 4)) // GCC supports "pragma once" correctly since 3.4 7 | #pragma once 8 | #endif 9 | 10 | #include 11 | 12 | namespace YAML { 13 | typedef std::size_t anchor_t; 14 | const anchor_t NullAnchor = 0; 15 | } 16 | 17 | #endif // ANCHOR_H_62B23520_7C8E_11DE_8A39_0800200C9A66 18 | -------------------------------------------------------------------------------- /third-party/paxos/dependencies/yaml-cpp/include/yaml-cpp/emitterdef.h: -------------------------------------------------------------------------------- 1 | #ifndef EMITTERDEF_H_62B23520_7C8E_11DE_8A39_0800200C9A66 2 | #define EMITTERDEF_H_62B23520_7C8E_11DE_8A39_0800200C9A66 3 | 4 | #if defined(_MSC_VER) || \ 5 | (defined(__GNUC__) && (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) || \ 6 | (__GNUC__ >= 4)) // GCC supports "pragma once" correctly since 3.4 7 | #pragma once 8 | #endif 9 | 10 | namespace YAML { 11 | struct EmitterNodeType { 12 | enum value { NoType, Property, Scalar, FlowSeq, BlockSeq, FlowMap, BlockMap }; 13 | }; 14 | } 15 | 16 | #endif // EMITTERDEF_H_62B23520_7C8E_11DE_8A39_0800200C9A66 17 | -------------------------------------------------------------------------------- /third-party/paxos/dependencies/yaml-cpp/include/yaml-cpp/emitterstyle.h: -------------------------------------------------------------------------------- 1 | #ifndef EMITTERSTYLE_H_62B23520_7C8E_11DE_8A39_0800200C9A66 2 | #define EMITTERSTYLE_H_62B23520_7C8E_11DE_8A39_0800200C9A66 3 | 4 | #if defined(_MSC_VER) || \ 5 | (defined(__GNUC__) && (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) || \ 6 | (__GNUC__ >= 4)) // GCC supports "pragma once" correctly since 3.4 7 | #pragma once 8 | #endif 9 | 10 | namespace YAML { 11 | struct EmitterStyle { 12 | enum value { Default, Block, Flow }; 13 | }; 14 | } 15 | 16 | #endif // EMITTERSTYLE_H_62B23520_7C8E_11DE_8A39_0800200C9A66 17 | -------------------------------------------------------------------------------- /third-party/paxos/dependencies/yaml-cpp/include/yaml-cpp/node/type.h: -------------------------------------------------------------------------------- 1 | #ifndef VALUE_TYPE_H_62B23520_7C8E_11DE_8A39_0800200C9A66 2 | #define VALUE_TYPE_H_62B23520_7C8E_11DE_8A39_0800200C9A66 3 | 4 | #if defined(_MSC_VER) || \ 5 | (defined(__GNUC__) && (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) || \ 6 | (__GNUC__ >= 4)) // GCC supports "pragma once" correctly since 3.4 7 | #pragma once 8 | #endif 9 | 10 | namespace YAML { 11 | struct NodeType { 12 | enum value { Undefined, Null, Scalar, Sequence, Map }; 13 | }; 14 | } 15 | 16 | #endif // VALUE_TYPE_H_62B23520_7C8E_11DE_8A39_0800200C9A66 17 | -------------------------------------------------------------------------------- /third-party/paxos/dependencies/yaml-cpp/install.txt: -------------------------------------------------------------------------------- 1 | *** With CMake *** 2 | 3 | yaml-cpp uses CMake to support cross-platform building. In a UNIX-like system, the basic steps to build are: 4 | 5 | 1. Download and install CMake (if you don't have root privileges, just install to a local directory, like ~/bin) 6 | 7 | 2. From the source directory, run: 8 | 9 | mkdir build 10 | cd build 11 | cmake .. 12 | 13 | and then the usual 14 | 15 | make 16 | make install 17 | 18 | 3. To clean up, just remove the 'build' directory. 19 | 20 | *** Without CMake *** 21 | 22 | If you don't want to use CMake, just add all .cpp files to a makefile. yaml-cpp does not need any special build settings, so no 'configure' file is necessary. 23 | 24 | (Note: this is pretty tedious. It's sooo much easier to use CMake.) 25 | -------------------------------------------------------------------------------- /third-party/paxos/dependencies/yaml-cpp/src/contrib/graphbuilder.cpp: -------------------------------------------------------------------------------- 1 | #include "graphbuilderadapter.h" 2 | 3 | #include "yaml-cpp/parser.h" // IWYU pragma: keep 4 | 5 | namespace YAML { 6 | class GraphBuilderInterface; 7 | 8 | void* BuildGraphOfNextDocument(Parser& parser, 9 | GraphBuilderInterface& graphBuilder) { 10 | GraphBuilderAdapter eventHandler(graphBuilder); 11 | if (parser.HandleNextDocument(eventHandler)) { 12 | return eventHandler.RootNode(); 13 | } else { 14 | return NULL; 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /third-party/paxos/dependencies/yaml-cpp/src/directives.cpp: -------------------------------------------------------------------------------- 1 | #include "directives.h" 2 | 3 | namespace YAML { 4 | Directives::Directives() { 5 | // version 6 | version.isDefault = true; 7 | version.major = 1; 8 | version.minor = 2; 9 | } 10 | 11 | const std::string Directives::TranslateTagHandle( 12 | const std::string& handle) const { 13 | std::map::const_iterator it = tags.find(handle); 14 | if (it == tags.end()) { 15 | if (handle == "!!") 16 | return "tag:yaml.org,2002:"; 17 | return handle; 18 | } 19 | 20 | return it->second; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /third-party/paxos/dependencies/yaml-cpp/src/emit.cpp: -------------------------------------------------------------------------------- 1 | #include "yaml-cpp/node/emit.h" 2 | #include "yaml-cpp/emitfromevents.h" 3 | #include "yaml-cpp/emitter.h" 4 | #include "nodeevents.h" 5 | 6 | namespace YAML { 7 | Emitter& operator<<(Emitter& out, const Node& node) { 8 | EmitFromEvents emitFromEvents(out); 9 | NodeEvents events(node); 10 | events.Emit(emitFromEvents); 11 | return out; 12 | } 13 | 14 | std::ostream& operator<<(std::ostream& out, const Node& node) { 15 | Emitter emitter(out); 16 | emitter << node; 17 | return out; 18 | } 19 | 20 | std::string Dump(const Node& node) { 21 | Emitter emitter; 22 | emitter << node; 23 | return emitter.c_str(); 24 | } 25 | } // namespace YAML 26 | -------------------------------------------------------------------------------- /third-party/paxos/dependencies/yaml-cpp/src/memory.cpp: -------------------------------------------------------------------------------- 1 | #include "yaml-cpp/node/detail/memory.h" 2 | #include "yaml-cpp/node/detail/node.h" // IWYU pragma: keep 3 | #include "yaml-cpp/node/ptr.h" 4 | 5 | namespace YAML { 6 | namespace detail { 7 | 8 | void memory_holder::merge(memory_holder& rhs) { 9 | if (m_pMemory == rhs.m_pMemory) 10 | return; 11 | 12 | m_pMemory->merge(*rhs.m_pMemory); 13 | rhs.m_pMemory = m_pMemory; 14 | } 15 | 16 | node& memory::create_node() { 17 | shared_node pNode(new node); 18 | m_nodes.insert(pNode); 19 | return *pNode; 20 | } 21 | 22 | void memory::merge(const memory& rhs) { 23 | m_nodes.insert(rhs.m_nodes.begin(), rhs.m_nodes.end()); 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /third-party/paxos/dependencies/yaml-cpp/src/node.cpp: -------------------------------------------------------------------------------- 1 | #include "yaml-cpp/node/node.h" 2 | #include "nodebuilder.h" 3 | #include "nodeevents.h" 4 | 5 | namespace YAML { 6 | Node Clone(const Node& node) { 7 | NodeEvents events(node); 8 | NodeBuilder builder; 9 | events.Emit(builder); 10 | return builder.Root(); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /third-party/paxos/dependencies/yaml-cpp/src/null.cpp: -------------------------------------------------------------------------------- 1 | #include "yaml-cpp/null.h" 2 | 3 | namespace YAML { 4 | _Null Null; 5 | 6 | bool IsNullString(const std::string& str) { 7 | return str.empty() || str == "~" || str == "null" || str == "Null" || 8 | str == "NULL"; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /third-party/paxos/dependencies/yaml-cpp/src/scantag.h: -------------------------------------------------------------------------------- 1 | #ifndef SCANTAG_H_62B23520_7C8E_11DE_8A39_0800200C9A66 2 | #define SCANTAG_H_62B23520_7C8E_11DE_8A39_0800200C9A66 3 | 4 | #if defined(_MSC_VER) || \ 5 | (defined(__GNUC__) && (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) || \ 6 | (__GNUC__ >= 4)) // GCC supports "pragma once" correctly since 3.4 7 | #pragma once 8 | #endif 9 | 10 | #include 11 | #include "stream.h" 12 | 13 | namespace YAML { 14 | const std::string ScanVerbatimTag(Stream& INPUT); 15 | const std::string ScanTagHandle(Stream& INPUT, bool& canBeHandle); 16 | const std::string ScanTagSuffix(Stream& INPUT); 17 | } 18 | 19 | #endif // SCANTAG_H_62B23520_7C8E_11DE_8A39_0800200C9A66 20 | -------------------------------------------------------------------------------- /third-party/paxos/dependencies/yaml-cpp/test/gtest-1.8.0/.gitignore: -------------------------------------------------------------------------------- 1 | # Ignore CI build directory 2 | build/ 3 | -------------------------------------------------------------------------------- /third-party/paxos/dependencies/yaml-cpp/test/gtest-1.8.0/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 2.6.2) 2 | 3 | project( googletest-distribution ) 4 | 5 | enable_testing() 6 | 7 | option(BUILD_GTEST "Builds the googletest subproject" OFF) 8 | 9 | #Note that googlemock target already builds googletest 10 | option(BUILD_GMOCK "Builds the googlemock subproject" ON) 11 | 12 | if(BUILD_GMOCK) 13 | add_subdirectory( googlemock ) 14 | elseif(BUILD_GTEST) 15 | add_subdirectory( googletest ) 16 | endif() 17 | -------------------------------------------------------------------------------- /third-party/paxos/dependencies/yaml-cpp/test/gtest-1.8.0/googlemock/build-aux/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stonysystems/rolis/c141efef78b436022d9aba2aa7a6e3b7d4b9c98b/third-party/paxos/dependencies/yaml-cpp/test/gtest-1.8.0/googlemock/build-aux/.keep -------------------------------------------------------------------------------- /third-party/paxos/dependencies/yaml-cpp/test/gtest-1.8.0/googlemock/include/gmock/internal/custom/gmock-generated-actions.h: -------------------------------------------------------------------------------- 1 | // This file was GENERATED by command: 2 | // pump.py gmock-generated-actions.h.pump 3 | // DO NOT EDIT BY HAND!!! 4 | 5 | #ifndef GMOCK_INCLUDE_GMOCK_INTERNAL_CUSTOM_GMOCK_GENERATED_ACTIONS_H_ 6 | #define GMOCK_INCLUDE_GMOCK_INTERNAL_CUSTOM_GMOCK_GENERATED_ACTIONS_H_ 7 | 8 | #endif // GMOCK_INCLUDE_GMOCK_INTERNAL_CUSTOM_GMOCK_GENERATED_ACTIONS_H_ 9 | -------------------------------------------------------------------------------- /third-party/paxos/dependencies/yaml-cpp/test/gtest-1.8.0/googlemock/include/gmock/internal/custom/gmock-generated-actions.h.pump: -------------------------------------------------------------------------------- 1 | $$ -*- mode: c++; -*- 2 | $$ This is a Pump source file (http://go/pump). Please use Pump to convert 3 | $$ it to callback-actions.h. 4 | $$ 5 | $var max_callback_arity = 5 6 | $$}} This meta comment fixes auto-indentation in editors. 7 | #ifndef GMOCK_INCLUDE_GMOCK_INTERNAL_CUSTOM_GMOCK_GENERATED_ACTIONS_H_ 8 | #define GMOCK_INCLUDE_GMOCK_INTERNAL_CUSTOM_GMOCK_GENERATED_ACTIONS_H_ 9 | 10 | #endif // GMOCK_INCLUDE_GMOCK_INTERNAL_CUSTOM_GMOCK_GENERATED_ACTIONS_H_ 11 | -------------------------------------------------------------------------------- /third-party/paxos/dependencies/yaml-cpp/test/gtest-1.8.0/googlemock/msvc/2005/gmock_config.vsprops: -------------------------------------------------------------------------------- 1 | 2 | 7 | 11 | 15 | 16 | -------------------------------------------------------------------------------- /third-party/paxos/dependencies/yaml-cpp/test/gtest-1.8.0/googlemock/msvc/2015/gmock_config.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ../../../googletest 5 | 6 | 7 | <_ProjectFileVersion>10.0.30319.1 8 | 9 | 10 | 11 | $(GTestDir)/include;%(AdditionalIncludeDirectories) 12 | 13 | 14 | 15 | 16 | $(GTestDir) 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /third-party/paxos/dependencies/yaml-cpp/test/gtest-1.8.0/googlemock/scripts/generator/cpp/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stonysystems/rolis/c141efef78b436022d9aba2aa7a6e3b7d4b9c98b/third-party/paxos/dependencies/yaml-cpp/test/gtest-1.8.0/googlemock/scripts/generator/cpp/__init__.py -------------------------------------------------------------------------------- /third-party/paxos/dependencies/yaml-cpp/test/gtest-1.8.0/googletest/.gitignore: -------------------------------------------------------------------------------- 1 | # python 2 | *.pyc 3 | -------------------------------------------------------------------------------- /third-party/paxos/dependencies/yaml-cpp/test/gtest-1.8.0/googletest/build-aux/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stonysystems/rolis/c141efef78b436022d9aba2aa7a6e3b7d4b9c98b/third-party/paxos/dependencies/yaml-cpp/test/gtest-1.8.0/googletest/build-aux/.keep -------------------------------------------------------------------------------- /third-party/paxos/dependencies/yaml-cpp/test/gtest-1.8.0/googletest/xcode/Config/FrameworkTarget.xcconfig: -------------------------------------------------------------------------------- 1 | // 2 | // FrameworkTarget.xcconfig 3 | // 4 | // These are Framework target settings for the gtest framework and examples. It 5 | // is set in the "Based On:" dropdown in the "Target" info dialog. 6 | // This file is based on the Xcode Configuration files in: 7 | // http://code.google.com/p/google-toolbox-for-mac/ 8 | // 9 | 10 | // Dynamic libs need to be position independent 11 | GCC_DYNAMIC_NO_PIC = NO 12 | 13 | // Dynamic libs should not have their external symbols stripped. 14 | STRIP_STYLE = non-global 15 | 16 | // Let the user install by specifying the $DSTROOT with xcodebuild 17 | SKIP_INSTALL = NO 18 | -------------------------------------------------------------------------------- /third-party/paxos/dependencies/yaml-cpp/test/gtest-1.8.0/googletest/xcode/Config/StaticLibraryTarget.xcconfig: -------------------------------------------------------------------------------- 1 | // 2 | // StaticLibraryTarget.xcconfig 3 | // 4 | // These are static library target settings for libgtest.a. It 5 | // is set in the "Based On:" dropdown in the "Target" info dialog. 6 | // This file is based on the Xcode Configuration files in: 7 | // http://code.google.com/p/google-toolbox-for-mac/ 8 | // 9 | 10 | // Static libs can be included in bundles so make them position independent 11 | GCC_DYNAMIC_NO_PIC = NO 12 | 13 | // Static libs should not have their internal globals or external symbols 14 | // stripped. 15 | STRIP_STYLE = debugging 16 | 17 | // Let the user install by specifying the $DSTROOT with xcodebuild 18 | SKIP_INSTALL = NO 19 | -------------------------------------------------------------------------------- /third-party/paxos/dependencies/yaml-cpp/test/gtest-1.8.0/googletest/xcode/Config/TestTarget.xcconfig: -------------------------------------------------------------------------------- 1 | // 2 | // TestTarget.xcconfig 3 | // 4 | // These are Test target settings for the gtest framework and examples. It 5 | // is set in the "Based On:" dropdown in the "Target" info dialog. 6 | 7 | PRODUCT_NAME = $(TARGET_NAME) 8 | HEADER_SEARCH_PATHS = ../include 9 | -------------------------------------------------------------------------------- /third-party/paxos/dependencies/yaml-cpp/test/gtest-1.8.0/travis.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | set -evx 3 | env | sort 4 | 5 | mkdir build || true 6 | mkdir build/$GTEST_TARGET || true 7 | cd build/$GTEST_TARGET 8 | cmake -Dgtest_build_samples=ON \ 9 | -Dgmock_build_samples=ON \ 10 | -Dgtest_build_tests=ON \ 11 | -Dgmock_build_tests=ON \ 12 | -DCMAKE_CXX_FLAGS=$CXX_FLAGS \ 13 | ../../$GTEST_TARGET 14 | make 15 | CTEST_OUTPUT_ON_FAILURE=1 make test 16 | -------------------------------------------------------------------------------- /third-party/paxos/dependencies/yaml-cpp/test/main.cpp: -------------------------------------------------------------------------------- 1 | #include "gtest/gtest.h" 2 | 3 | int main(int argc, char** argv) { 4 | ::testing::InitGoogleTest(&argc, argv); 5 | return RUN_ALL_TESTS(); 6 | } 7 | -------------------------------------------------------------------------------- /third-party/paxos/dependencies/yaml-cpp/util/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_sources(parse.cpp) 2 | add_executable(parse parse.cpp) 3 | target_link_libraries(parse yaml-cpp) 4 | set_target_properties(parse PROPERTIES COMPILE_FLAGS "-std=c++11") 5 | 6 | add_sources(sandbox.cpp) 7 | add_executable(sandbox sandbox.cpp) 8 | target_link_libraries(sandbox yaml-cpp) 9 | set_target_properties(sandbox PROPERTIES COMPILE_FLAGS "-std=c++11") 10 | 11 | add_sources(read.cpp) 12 | add_executable(read read.cpp) 13 | target_link_libraries(read yaml-cpp) 14 | set_target_properties(read PROPERTIES COMPILE_FLAGS "-std=c++11") 15 | -------------------------------------------------------------------------------- /third-party/paxos/dependencies/yaml-cpp/yaml-cpp-config-version.cmake.in: -------------------------------------------------------------------------------- 1 | set(PACKAGE_VERSION "@YAML_CPP_VERSION@") 2 | 3 | # Check whether the requested PACKAGE_FIND_VERSION is compatible 4 | if("${PACKAGE_VERSION}" VERSION_LESS "${PACKAGE_FIND_VERSION}") 5 | set(PACKAGE_VERSION_COMPATIBLE FALSE) 6 | else() 7 | set(PACKAGE_VERSION_COMPATIBLE TRUE) 8 | if ("${PACKAGE_VERSION}" VERSION_EQUAL "${PACKAGE_FIND_VERSION}") 9 | set(PACKAGE_VERSION_EXACT TRUE) 10 | endif() 11 | endif() 12 | -------------------------------------------------------------------------------- /third-party/paxos/dependencies/yaml-cpp/yaml-cpp-config.cmake.in: -------------------------------------------------------------------------------- 1 | # - Config file for the yaml-cpp package 2 | # It defines the following variables 3 | # YAML_CPP_INCLUDE_DIR - include directory 4 | # YAML_CPP_LIBRARIES - libraries to link against 5 | 6 | # Compute paths 7 | get_filename_component(YAML_CPP_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH) 8 | set(YAML_CPP_INCLUDE_DIR "@CONFIG_INCLUDE_DIRS@") 9 | 10 | # Our library dependencies (contains definitions for IMPORTED targets) 11 | include("${YAML_CPP_CMAKE_DIR}/yaml-cpp-targets.cmake") 12 | 13 | # These are IMPORTED targets created by yaml-cpp-targets.cmake 14 | set(YAML_CPP_LIBRARIES "@EXPORT_TARGETS@") 15 | -------------------------------------------------------------------------------- /third-party/paxos/dependencies/yaml-cpp/yaml-cpp.pc.cmake: -------------------------------------------------------------------------------- 1 | prefix=@CMAKE_INSTALL_PREFIX@ 2 | exec_prefix=${prefix} 3 | includedir=${prefix}/@INCLUDE_INSTALL_ROOT_DIR@ 4 | libdir=${exec_prefix}/@LIB_INSTALL_DIR@ 5 | 6 | Name: Yaml-cpp 7 | Description: A YAML parser and emitter for C++ 8 | Version: @YAML_CPP_VERSION@ 9 | Requires: 10 | Libs: -L${libdir} -lyaml-cpp 11 | Cflags: -I${includedir} 12 | -------------------------------------------------------------------------------- /third-party/paxos/doc/Open-loop-vs-Closed-loop-clients.md: -------------------------------------------------------------------------------- 1 | Open-loop can: 2 | 1. ensure the same number of concurrent requests for different protocols 3 | 2. avoid system starving due to contention hot spot -------------------------------------------------------------------------------- /third-party/paxos/doc/README.md: -------------------------------------------------------------------------------- 1 | # Content 2 | 3 | * [Build on systems other than Ubuntu 16.04](build.md) 4 | * [Run distributed tests](run.md) 5 | * [Deploy on EC2](ec2.md) 6 | * [Profile CPU](profile.md) 7 | * Run a series of tests and generate graphs (TODO). 8 | 9 | -------------------------------------------------------------------------------- /third-party/paxos/doc/plot.md: -------------------------------------------------------------------------------- 1 | ` 2 | $janus/scripts/aggregate_run_output.py --prefix multi_dc_tpcc_6 *yml 3 | ` 4 | 5 | replace multi_dc_tpcc_6 with the correct prefix 6 | then run: 7 | 8 | ` 9 | $janus/scripts/make_graphs '*csv' . $janus 10 | ` -------------------------------------------------------------------------------- /third-party/paxos/doc/profile.md: -------------------------------------------------------------------------------- 1 | (Comment out the server kills in run.py if profiling distributed runs) 2 | 3 | Compile with google perf tools. 4 | ``` 5 | ./waf configure -p build 6 | ``` 7 | 8 | Run 9 | ``` 10 | ./build/deptran_server -f config/3c3s3r1p.yml -f config/brq.yml -f config/tpca.yml -P localhost -d 60 11 | ``` 12 | 13 | The profiling result will be stored in a file named process-{process_name}.prof 14 | 15 | Generate pdf 16 | ``` 17 | ./scripts/pprof --pdf ./build/deptran_server process-localhost.prof > tmp.pdf 18 | ``` 19 | 20 | Note: make sure you install the `graphviz` package. 21 | -------------------------------------------------------------------------------- /third-party/paxos/extern_interface/scheduler.c: -------------------------------------------------------------------------------- 1 | #include "scheduler.h" 2 | 3 | // test for c-cpp bridge 4 | int hello_c() { 5 | return 0; 6 | } 7 | 8 | 9 | //// a sample implementation for "none" mode. 10 | int32_t handle_conflicts(int64_t txn_id, 11 | int32_t n_confict, 12 | _c_conflict_id_t* conflicts) { 13 | // never pause. 14 | return 0; 15 | } 16 | 17 | int64_t poll_executable() { 18 | return 0; 19 | } 20 | -------------------------------------------------------------------------------- /third-party/paxos/extern_interface/scheduler.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "inttypes.h" 4 | 5 | /** 6 | * This is a C interface for external concurrency control protocols. 7 | * @param txn_id the transaction id greater than 0 8 | * @param rw_flag 0 for read for read, 1 for write. 9 | * @return 0 for continue and 1 for pause. 10 | */ 11 | 12 | typedef struct { 13 | int32_t rw_flag; 14 | char* key; 15 | int32_t sz_key; 16 | void** ptr_mem; 17 | } _c_conflict_id_t; 18 | 19 | int hello_c(); 20 | 21 | int32_t handle_conflicts( 22 | int64_t txn_id, 23 | int32_t n_confict, 24 | _c_conflict_id_t* conflicts 25 | ); 26 | 27 | /** 28 | * 29 | * @return the transaction id for next executable 0 for nothing. 30 | */ 31 | int64_t poll_executable(); 32 | 33 | -------------------------------------------------------------------------------- /third-party/paxos/old-test/test_marshal_value.cc: -------------------------------------------------------------------------------- 1 | 2 | #include "rrr.hpp" 3 | 4 | #include "memdb/value.h" 5 | #include "deptran/marshal-value.h" 6 | 7 | using namespace base; 8 | using namespace mdb; 9 | 10 | TEST(marshal, value) { 11 | std::string s("Hello"); 12 | Value v1((i32)1); 13 | Value v2((i64)2); 14 | Value v3((double)3.14); 15 | Value v4(s); 16 | Marshal m; 17 | 18 | Value v5, v6, v7, v8; 19 | m << v1 << v2 << v3 << v4; 20 | m >> v5 >> v6 >> v7 >> v8; 21 | 22 | EXPECT_EQ(v5.get_i32(), (int32_t)1); 23 | 24 | EXPECT_EQ(v6.get_i64(), (int64_t)2); 25 | 26 | EXPECT_EQ(v7.get_double(), (double)3.14); 27 | 28 | EXPECT_EQ(v8.get_str(), s); 29 | } 30 | -------------------------------------------------------------------------------- /third-party/paxos/pylib/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stonysystems/rolis/c141efef78b436022d9aba2aa7a6e3b7d4b9c98b/third-party/paxos/pylib/__init__.py -------------------------------------------------------------------------------- /third-party/paxos/requirements.txt: -------------------------------------------------------------------------------- 1 | awscli==1.10.12 2 | boto3==1.2.6 3 | botocore==1.4.3 4 | colorama==0.3.3 5 | docutils==0.12 6 | ecdsa==0.13 7 | Fabric==1.10.2 8 | futures==3.0.5 9 | jmespath==0.9.0 10 | paramiko==2.0.9 11 | pyasn1==0.1.9 12 | pycrypto==2.6.1 13 | python-dateutil==2.5.0 14 | pyyaml==4.2b1 15 | rsa==3.3 16 | s3transfer==0.0.1 17 | six==1.10.0 18 | tabulate==0.7.5 19 | -------------------------------------------------------------------------------- /third-party/paxos/run_teaker.rb: -------------------------------------------------------------------------------- 1 | 2 | 3 | array = 1.step(20).to_a + 30.step(100, 10).to_a 4 | 5 | mode = ["rcc", "ro6"] 6 | 7 | for m in mode 8 | for i in array 9 | cmd = "./run.py -H ./config/hosts-teaker -f ./config/teaker-sosp/#{m}_#{i}.xml &> #{m}_#{i}.txt" 10 | value = `cmd` 11 | end 12 | end 13 | -------------------------------------------------------------------------------- /third-party/paxos/scripts/add_latency.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | tc qdisc add dev lo root netem delay 100ms 3 | -------------------------------------------------------------------------------- /third-party/paxos/scripts/aggregate_and_graph.sh: -------------------------------------------------------------------------------- 1 | prefix=${1?"error -- give prefix for experiment files"} 2 | $janus/scripts/aggregate_run_output.py --prefix $1 *yml 3 | $janus/scripts/make_graphs '*csv' . $janus 4 | -------------------------------------------------------------------------------- /third-party/paxos/scripts/archive.sh: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env bash 2 | tar -czvf archive/$1.tgz log/* tmp/*yml config/*yml && rm log/* 3 | -------------------------------------------------------------------------------- /third-party/paxos/scripts/aws/build_aws.sh: -------------------------------------------------------------------------------- 1 | regions=${1-us-west2} # us-west-2, us-east-1 2 | region_servers=${2-19} 3 | instance_type=${3-m4.large} 4 | data_dir=${4-.ec2_data} 5 | 6 | fab --set data_dir="$data_dir" deploy_all:regions=${regions},servers_per_region=${region_servers},instance_type=${instance_type} 7 | sleep 30 8 | fab --set data_dir="$data_dir" ec2.set_instance_roles deploy_continue 9 | 10 | -------------------------------------------------------------------------------- /third-party/paxos/scripts/aws/clean_test.sh: -------------------------------------------------------------------------------- 1 | cd ~/janus 2 | rm tmp/* log/* archive/* 3 | -------------------------------------------------------------------------------- /third-party/paxos/scripts/aws/deploy_multi.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | data_dir=.ec2_multi 3 | 4 | regions=us-west-2:eu-west-1:ap-northeast-2 5 | servers=13:12:12 6 | 7 | $janus/scripts/aws/build_aws.sh "$regions" "$servers" m4.large "$data_dir" 8 | 9 | -------------------------------------------------------------------------------- /third-party/paxos/scripts/aws/deploy_single.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | data_dir=.ec2_single 3 | $janus/scripts/aws/build_aws.sh us-west-2 37 m4.large $data_dir 4 | -------------------------------------------------------------------------------- /third-party/paxos/scripts/aws/extract_csv.sh: -------------------------------------------------------------------------------- 1 | input_file=${1:-input.tgz} 2 | output_dir=${2:-$PWD} 3 | work_dir=${3:-~/.tmp} 4 | current_dir=$PWD 5 | mkdir -p $work_dir 6 | mkdir -p $output_dir 7 | cp $input_file $work_dir/target.tgz 8 | cd $work_dir 9 | tar --wildcards -xzvf target.tgz archive/*.csv 10 | cd $current_dir 11 | mv $work_dir/archive/*.csv $output_dir/ 12 | 13 | rm $work_dir/target.tgz 14 | rm -rf $work_dir/archive 15 | 16 | -------------------------------------------------------------------------------- /third-party/paxos/scripts/aws/fabmulti: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | fab --set data_dir=.ec2_multi ec2.set_instance_roles "$@" 3 | -------------------------------------------------------------------------------- /third-party/paxos/scripts/aws/fabsingle: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | fab --set data_dir=.ec2_single ec2.set_instance_roles "$@" 3 | -------------------------------------------------------------------------------- /third-party/paxos/scripts/aws/get_results.sh: -------------------------------------------------------------------------------- 1 | server=${1:-host} 2 | scp $server:~/*tgz . 3 | 4 | -------------------------------------------------------------------------------- /third-party/paxos/scripts/aws/graph_zipf.sh: -------------------------------------------------------------------------------- 1 | tar czvf csv.tgz *csv 2 | : ${janus:=~/git/janus} 3 | echo "janus dir is: $janus" 4 | $janus/scripts/aggregate_run_output.py --prefix $1 *yml 5 | $janus/scripts/make_graphs '*csv' . $janus 6 | -------------------------------------------------------------------------------- /third-party/paxos/scripts/aws/instance_ip.sh: -------------------------------------------------------------------------------- 1 | curl http://169.254.169.254/latest/meta-data/public-ipv4 2 | -------------------------------------------------------------------------------- /third-party/paxos/scripts/aws/run_single_shard.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | ./run_all.py single_shard -hh config/aws_hosts.yml -cc config/concurrent_1000.yml -cc config/janus.yml -cc config/rw_fixed.yml -cc config/client_open.yml -m janus:janus -m tapir:tapir -m 2pl_ww:multi_paxos -m occ:multi_paxos -b rw_benchmark -cl 277 554 833 1111 1667 2222 2777 3333 3888 -c 18 -s 1 -r 1 3 | -------------------------------------------------------------------------------- /third-party/paxos/scripts/csv_order_by_experiement_id.sh: -------------------------------------------------------------------------------- 1 | for f in ./*csv 2 | do 3 | cat $f | sort -n --field-separator=, --key=19 > tmp.csv 4 | rm $f 5 | mv tmp.csv $f 6 | done 7 | -------------------------------------------------------------------------------- /third-party/paxos/scripts/del_latency.sh: -------------------------------------------------------------------------------- 1 | tc qdisc del dev lo root netem 2 | -------------------------------------------------------------------------------- /third-party/paxos/scripts/deptran_gdb.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | PROC_NAME=${1-"deptran_server"} 3 | SESSION_NAME=${2-"janus_debug"} 4 | 5 | echo "create tmux session in $SESSION_NAME" 6 | 7 | pids=`ps aux | grep "$PROC_NAME" | grep -v grep | awk '{print $2}'` 8 | echo "Attach to pids $(echo $pids | tr -d '\r\n')" 9 | 10 | attach_gdb() { 11 | cmd="gdb -p $1" 12 | tmux split-window -t "$SESSION_NAME" "$cmd" 13 | } 14 | 15 | tmux new-session -s "$SESSION_NAME" -d 16 | 17 | while read -r pid; do 18 | attach_gdb $pid 19 | done <<< "$pids" 20 | 21 | tmux kill-pane -t "$SESSION_NAME:0.0" 22 | tmux select-layout -t "$SESSION_NAME:0" even-vertical 23 | tmux attach -t "$SESSION_NAME" || (echo "no processes found" && ps aux | grep "$PROC_NAME" && exit 1) 24 | -------------------------------------------------------------------------------- /third-party/paxos/scripts/fixup_yml.py: -------------------------------------------------------------------------------- 1 | import glob 2 | import yaml 3 | 4 | files = glob.glob('*.yml') 5 | for fn in files: 6 | y = None 7 | print "file: {}".format(fn) 8 | with open(fn, 'r') as f: 9 | y = yaml.load(f) 10 | for key in y: 11 | y[key]['zipf']=0.0 12 | with open(fn, 'w') as f: 13 | yaml.dump(y, f) 14 | -------------------------------------------------------------------------------- /third-party/paxos/scripts/make_graphs: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # should be run from the directory containing the csv files. 4 | data_files=( ${1:-*csv} ) 5 | 6 | # will copy the png files to here 7 | output_dir=${2:-.} 8 | 9 | # where the config and plot scripts live 10 | janus_home=${3:-/home/shuai/git/janus} 11 | 12 | mkdir -p $output_dir 13 | python $janus_home/scripts/plot/do_plot.py -g $janus_home/config/plot/*yml -d ${data_files[@]} -gcmds $janus_home/scripts/plot/cmds.gnuplot 14 | mv *png $output_dir 15 | mv *eps $output_dir 16 | exit 0 17 | -------------------------------------------------------------------------------- /third-party/paxos/scripts/strace.sh: -------------------------------------------------------------------------------- 1 | strace -f -c -w ./build/deptran_server -f config/8c1s1p.yml -f config/concurrent_100.yml -f config/none.yml -f config/rw.yml -d 60 -P localhost 2 | -------------------------------------------------------------------------------- /third-party/paxos/src/bench/micro/procedure.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "coordinator.h" 4 | #include "bench/micro/workload.h" 5 | 6 | namespace janus { 7 | 8 | class MicroProcedure : public TxData { 9 | 10 | public: 11 | 12 | MicroProcedure(); 13 | 14 | virtual void Init(TxRequest &req) override; 15 | 16 | virtual void InitR(TxRequest &req); 17 | 18 | virtual void InitW(TxRequest &req); 19 | 20 | virtual bool HandleOutput(int pi, int res, 21 | map &output) override; 22 | 23 | virtual bool IsReadOnly() override; 24 | 25 | virtual void Reset() override; 26 | 27 | virtual ~MicroProcedure(); 28 | 29 | }; 30 | 31 | } // namespace janus 32 | -------------------------------------------------------------------------------- /third-party/paxos/src/bench/rw/procedure.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "deptran/__dep__.h" 4 | #include "deptran/procedure.h" 5 | 6 | namespace janus { 7 | 8 | class Coordinator; 9 | 10 | class RWChopper : public TxData { 11 | private: 12 | void W_txn_init(TxRequest &req); 13 | void R_txn_init(TxRequest &req); 14 | 15 | public: 16 | RWChopper(); 17 | 18 | virtual void Init(TxRequest &req); 19 | 20 | virtual bool HandleOutput(int pi, 21 | int res, 22 | map &output); 23 | 24 | virtual bool IsReadOnly(); 25 | 26 | virtual void Reset(); 27 | 28 | virtual ~RWChopper(); 29 | 30 | }; 31 | 32 | } // namespace janus 33 | -------------------------------------------------------------------------------- /third-party/paxos/src/bench/rw/sharding.h: -------------------------------------------------------------------------------- 1 | // 2 | // Created by lamont on 1/4/16. 3 | // 4 | #pragma once 5 | #include 6 | 7 | namespace janus { 8 | class RWBenchmarkSharding : public TpccdSharding { 9 | }; 10 | } 11 | -------------------------------------------------------------------------------- /third-party/paxos/src/bench/tpca/payment.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "coordinator.h" 4 | #include "bench/tpca/workload.h" 5 | 6 | namespace janus { 7 | 8 | class TpcaPaymentChopper: public TxData { 9 | 10 | public: 11 | 12 | TpcaPaymentChopper() {} 13 | 14 | virtual void Init(TxRequest &req) override; 15 | 16 | virtual bool HandleOutput(int pi, 17 | int res, 18 | map &output) override { 19 | return false; 20 | } 21 | 22 | virtual bool IsReadOnly() override { return false; } 23 | 24 | virtual void Reset() override; 25 | 26 | virtual ~TpcaPaymentChopper() { } 27 | 28 | }; 29 | 30 | } // namespace janus 31 | -------------------------------------------------------------------------------- /third-party/paxos/src/bench/tpcc_real_dist/procedure.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "../tpcc/procedure.h" 4 | 5 | namespace janus { 6 | 7 | class TpccRdProcedure: public TpccProcedure { 8 | protected: 9 | virtual siteid_t GetPiecePar(innid_t inn_id); 10 | 11 | public: 12 | TpccRdProcedure(); 13 | bool IsOneRound() override; 14 | virtual void NewOrderInit(TxRequest &req) override; 15 | virtual void NewOrderRetry() override; 16 | virtual void PaymentInit(TxRequest &req) override; 17 | virtual void PaymentRetry() override; 18 | virtual void DeliveryInit(TxRequest &req) override; 19 | virtual void DeliveryRetry() override; 20 | virtual ~TpccRdProcedure(); 21 | }; 22 | 23 | } // namespace janus 24 | -------------------------------------------------------------------------------- /third-party/paxos/src/deptran/2pl/coordinator.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "deptran/classic/coordinator.h" 4 | 5 | namespace janus { 6 | 7 | class Coordinator2pl: public CoordinatorClassic { 8 | using CoordinatorClassic::CoordinatorClassic; 9 | }; 10 | 11 | } // namespace janus 12 | -------------------------------------------------------------------------------- /third-party/paxos/src/deptran/2pl/tx.cc: -------------------------------------------------------------------------------- 1 | 2 | #include "tx.h" 3 | #include "scheduler.h" 4 | 5 | namespace janus { 6 | 7 | Tx2pl::Tx2pl(epoch_t epoch, 8 | txnid_t tid, 9 | TxLogServer *sched) : TxClassic(epoch, tid, sched) { 10 | 11 | } 12 | 13 | } // namespace janus 14 | -------------------------------------------------------------------------------- /third-party/paxos/src/deptran/2pl/tx.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "../classic/tx.h" 4 | 5 | namespace janus { 6 | 7 | using rrr::ALockGroup; 8 | 9 | class Tx2pl: public TxClassic { 10 | public: 11 | vector> locked_locks_ = {}; 12 | bool prepared_{false}; 13 | bool wounded_{false}; 14 | 15 | Tx2pl(epoch_t epoch, txnid_t tid, TxLogServer *); 16 | }; 17 | 18 | } // namespace janus 19 | -------------------------------------------------------------------------------- /third-party/paxos/src/deptran/__init__.py: -------------------------------------------------------------------------------- 1 | __all__ = ["deptran_rpc"] 2 | -------------------------------------------------------------------------------- /third-party/paxos/src/deptran/classic/tx.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "../tx.h" 4 | 5 | namespace janus { 6 | 7 | class TxClassic: public Tx { 8 | public: 9 | using Tx::Tx; 10 | IntEvent& ev_prepare_{Reactor::CreateEvent()}; 11 | IntEvent& ev_commit_{Reactor::CreateEvent()}; 12 | bool is_leader_hint_{false}; 13 | bool result_prepare_{false}; 14 | }; 15 | 16 | } // namespace janus 17 | -------------------------------------------------------------------------------- /third-party/paxos/src/deptran/command_marshaler.h: -------------------------------------------------------------------------------- 1 | 2 | #include "__dep__.h" 3 | 4 | namespace janus { 5 | 6 | class SimpleCommand; 7 | class CmdData; 8 | rrr::Marshal &operator<<(rrr::Marshal &m, const SimpleCommand &cmd); 9 | rrr::Marshal &operator>>(rrr::Marshal &m, SimpleCommand &cmd); 10 | 11 | } // namespace janus 12 | -------------------------------------------------------------------------------- /third-party/paxos/src/deptran/empty.cc: -------------------------------------------------------------------------------- 1 | /** 2 | * This empty file is for building purpose. Building systems such as 3 | * waf and cmake needs a source file to generate a target. 4 | */ 5 | -------------------------------------------------------------------------------- /third-party/paxos/src/deptran/extern_c/frame.cc: -------------------------------------------------------------------------------- 1 | // 2 | // Created by Shuai on 6/25/17. 3 | // 4 | 5 | #include "frame.h" 6 | #include "sched.h" 7 | 8 | using namespace janus; 9 | 10 | //static volatile Frame* externc_frame_s = Frame::RegFrame(MODE_EXTERNC, 11 | // {"externc", "extern_c"}, 12 | // [] () -> Frame* { 13 | // return new ExternCFrame(); 14 | // }); 15 | 16 | TxLogServer* ExternCFrame::CreateScheduler() { 17 | TxLogServer* sched = new ExternCScheduler(); 18 | sched->frame_ = this; 19 | return sched; 20 | } 21 | 22 | -------------------------------------------------------------------------------- /third-party/paxos/src/deptran/extern_c/frame.h: -------------------------------------------------------------------------------- 1 | // 2 | // Created by Shuai on 6/25/17. 3 | // 4 | 5 | #pragma once 6 | 7 | #include "../frame.h" 8 | 9 | namespace janus { 10 | 11 | 12 | class ExternCFrame : public Frame { 13 | public: 14 | ExternCFrame() : Frame(MODE_EXTERNC) { } 15 | TxLogServer *CreateScheduler() override; 16 | }; 17 | 18 | } // namespace janus 19 | -------------------------------------------------------------------------------- /third-party/paxos/src/deptran/extern_c/sched.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "../scheduler.h" 4 | 5 | // 6 | // Created by Shuai on 6/25/17. 7 | // 8 | 9 | namespace janus { 10 | 11 | class ExternCScheduler : public TxLogServer { 12 | using TxLogServer::TxLogServer; 13 | public: 14 | virtual bool HandleConflicts(Tx& dtxn, 15 | innid_t inn_id, 16 | vector& conflicts) override { 17 | verify(0); 18 | return false; 19 | }; 20 | 21 | }; 22 | 23 | } // namespace janus 24 | -------------------------------------------------------------------------------- /third-party/paxos/src/deptran/februus/commo.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "../communicator.h" 4 | 5 | namespace janus { 6 | 7 | class QuorumEvent; 8 | class CommoFebruus : public Communicator { 9 | public: 10 | void BroadcastPreAccept(QuorumEvent& e, parid_t, txid_t); 11 | void BroadcastAccept(QuorumEvent& e, 12 | parid_t partition_id, 13 | txid_t tx_id, 14 | ballot_t ballot, 15 | uint64_t timestamp); 16 | void BroadcastCommit(const set&, 17 | txid_t tx_id, 18 | uint64_t timestamp); 19 | }; 20 | 21 | } // namespace janus 22 | -------------------------------------------------------------------------------- /third-party/paxos/src/deptran/februus/coordinator.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "../classic/coordinator.h" 4 | 5 | namespace janus { 6 | 7 | class CommoFebruus; 8 | class CoordinatorFebruus : public CoordinatorClassic { 9 | public: 10 | enum Phase { 11 | INIT_END = 0, DISPATCH = 1, PREPARE = 2, 12 | PRE_ACCEPT = 3, ACCEPT = 4, COMMIT = 5 13 | }; 14 | bool fast_path_{false}; 15 | using CoordinatorClassic::CoordinatorClassic; 16 | void DispatchAsync() override; 17 | void DispatchAck(phase_t phase, int ret, TxnOutput& outputs) override; 18 | virtual void GotoNextPhase() override; 19 | bool PreAccept(); 20 | void Prepare(); 21 | bool Accept(); 22 | void Commit() override; 23 | 24 | CommoFebruus* commo(); 25 | }; 26 | 27 | } // namespace janus 28 | -------------------------------------------------------------------------------- /third-party/paxos/src/deptran/februus/scheduler.h: -------------------------------------------------------------------------------- 1 | // 2 | // Created by Shuai on 8/25/17. 3 | // 4 | 5 | #pragma once 6 | 7 | #include "../classic/scheduler.h" 8 | 9 | namespace janus { 10 | 11 | class TxFebruus; 12 | class SchedulerFebruus : public SchedulerClassic { 13 | public: 14 | using SchedulerClassic::SchedulerClassic; 15 | std::list> queue_; 16 | 17 | virtual bool Guard(Tx &tx, Row *row, int col_id, bool write = true) 18 | override; 19 | int OnPreAccept(const txid_t tx_id, uint64_t& ret_timestamp); 20 | int OnAccept(const txid_t tx_id, uint64_t timestamp, ballot_t ballot); 21 | int OnCommit(const txid_t tx_id, uint64_t timestamp); 22 | 23 | void UpdateQueue(shared_ptr sp_tx); 24 | 25 | }; 26 | 27 | } // namespace janus 28 | 29 | -------------------------------------------------------------------------------- /third-party/paxos/src/deptran/februus/tx.h: -------------------------------------------------------------------------------- 1 | 2 | #pragma once 3 | 4 | #include "../tx.h" 5 | 6 | namespace janus { 7 | 8 | class TxFebruus : public Tx { 9 | public: 10 | using Tx::Tx; 11 | uint64_t timestamp_ = 0; 12 | ballot_t max_seen_ballot_{0}; 13 | ballot_t max_accepted_ballot_{0}; 14 | }; 15 | 16 | } // namespace janus 17 | -------------------------------------------------------------------------------- /third-party/paxos/src/deptran/janus/tx.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "../rcc/tx.h" 4 | #include "../command.h" 5 | 6 | namespace janus { 7 | 8 | class TxJanus : public RccTx { 9 | public: 10 | using RccTx::RccTx; 11 | 12 | void DispatchExecute(SimpleCommand &cmd, 13 | map *output) override; 14 | 15 | }; 16 | 17 | } // namespace janus 18 | -------------------------------------------------------------------------------- /third-party/paxos/src/deptran/marshal-value.h: -------------------------------------------------------------------------------- 1 | 2 | #pragma once 3 | 4 | #include "__dep__.h" 5 | 6 | namespace rrr { 7 | 8 | Marshal& operator << (Marshal& m, const mdb::Value &value); 9 | 10 | Marshal& operator >> (Marshal& m, mdb::Value &value); 11 | 12 | } // namespace rrr 13 | 14 | -------------------------------------------------------------------------------- /third-party/paxos/src/deptran/msg.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "__dep__.h" 4 | #include "constants.h" 5 | #include "command.h" 6 | 7 | namespace janus { 8 | 9 | } // namespace janus 10 | -------------------------------------------------------------------------------- /third-party/paxos/src/deptran/multi_value.cc: -------------------------------------------------------------------------------- 1 | 2 | #include "multi_value.h" 3 | 4 | namespace janus { 5 | 6 | int MultiValue::compare(const MultiValue& mv) const { 7 | int i = 0; 8 | for (i = 0; i < n_ && i < mv.n_; i++) { 9 | int r = v_[i].compare(mv.v_[i]); 10 | if (r != 0) { 11 | return r; 12 | } 13 | } 14 | if (i < n_) { 15 | return 1; 16 | } else if (i < mv.n_) { 17 | return -1; 18 | } 19 | return 0; 20 | } 21 | 22 | } // namespace janus 23 | -------------------------------------------------------------------------------- /third-party/paxos/src/deptran/network.rpc: -------------------------------------------------------------------------------- 1 | namespace network_client; 2 | 3 | abstract service NetworkClient { 4 | // fast or defer 5 | // a | b in the parameter 6 | // structured data 7 | 8 | defer txn_rmw(vector _req); 9 | defer txn_read(vector _req); 10 | 11 | // five transaction categories 12 | defer txn_new_order(vector _req); 13 | defer txn_payment(vector _req); 14 | defer txn_delivery(vector _req); 15 | defer txn_order_status(vector _req); 16 | defer txn_stock_level(vector _req); 17 | } -------------------------------------------------------------------------------- /third-party/paxos/src/deptran/none/coordinator.cc: -------------------------------------------------------------------------------- 1 | 2 | #include "coordinator.h" 3 | #include "frame.h" 4 | #include "benchmark_control_rpc.h" 5 | 6 | namespace janus { 7 | 8 | /** thread safe */ 9 | 10 | void CoordinatorNone::GotoNextPhase() { 11 | 12 | int n_phase = 2; 13 | switch (phase_++ % n_phase) { 14 | case Phase::INIT_END:DispatchAsync(); 15 | verify(phase_ % n_phase == Phase::DISPATCH); 16 | break; 17 | case Phase::DISPATCH: 18 | committed_ = true; 19 | verify(phase_ % n_phase == Phase::INIT_END); 20 | End(); 21 | break; 22 | default: 23 | verify(0); 24 | } 25 | } 26 | 27 | } // namespace janus 28 | -------------------------------------------------------------------------------- /third-party/paxos/src/deptran/none/coordinator.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "deptran/classic/coordinator.h" 4 | 5 | namespace janus { 6 | class CoordinatorNone : public CoordinatorClassic { 7 | public: 8 | using CoordinatorClassic::CoordinatorClassic; 9 | enum Phase {INIT_END=0, DISPATCH=1}; 10 | void GotoNextPhase() override; 11 | }; 12 | } // namespace janus 13 | -------------------------------------------------------------------------------- /third-party/paxos/src/deptran/none/scheduler.cc: -------------------------------------------------------------------------------- 1 | #include "../config.h" 2 | #include "../multi_value.h" 3 | #include "../procedure.h" 4 | #include "../txn_reg.h" 5 | #include "../rcc/dep_graph.h" 6 | #include "../rcc/graph_marshaler.h" 7 | #include "scheduler.h" 8 | 9 | namespace janus { 10 | 11 | } // namespace janus 12 | -------------------------------------------------------------------------------- /third-party/paxos/src/deptran/none/scheduler.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "../classic/scheduler.h" 4 | 5 | namespace janus { 6 | 7 | class SchedulerNone: public SchedulerClassic { 8 | using SchedulerClassic::SchedulerClassic; 9 | public: 10 | 11 | virtual bool DispatchPiece(Tx& tx, 12 | TxPieceData& cmd, 13 | TxnOutput& ret_output) override { 14 | SchedulerClassic::DispatchPiece(tx, cmd, ret_output); 15 | ExecutePiece(tx, cmd, ret_output); 16 | return true; 17 | } 18 | 19 | virtual bool Guard(Tx &tx_box, Row* row, int col_id, bool write=true) 20 | override { 21 | // do nothing. 22 | return true; 23 | } 24 | 25 | virtual bool DoPrepare(txnid_t tx_id) override { 26 | return false; 27 | } 28 | 29 | }; 30 | 31 | } // janus 32 | -------------------------------------------------------------------------------- /third-party/paxos/src/deptran/occ/coordinator.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "deptran/classic/coordinator.h" 4 | 5 | namespace janus { 6 | 7 | class CoordinatorOcc: public CoordinatorClassic { 8 | using CoordinatorClassic::CoordinatorClassic; 9 | }; 10 | 11 | } //namespace janus 12 | -------------------------------------------------------------------------------- /third-party/paxos/src/deptran/paxos/exec.cc: -------------------------------------------------------------------------------- 1 | #include "exec.h" 2 | 3 | namespace janus { 4 | 5 | 6 | ballot_t MultiPaxosExecutor::Prepare(const ballot_t ballot) { 7 | verify(0); 8 | return 0; 9 | } 10 | 11 | ballot_t MultiPaxosExecutor::Accept(const ballot_t ballot, 12 | shared_ptr cmd) { 13 | verify(0); 14 | return 0; 15 | } 16 | 17 | ballot_t MultiPaxosExecutor::Decide(ballot_t ballot, CmdData& cmd) { 18 | verify(0); 19 | return 0; 20 | } 21 | 22 | } // namespace janus 23 | -------------------------------------------------------------------------------- /third-party/paxos/src/deptran/paxos/exec.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "../__dep__.h" 4 | #include "../executor.h" 5 | #include "../command.h" 6 | 7 | namespace janus { 8 | 9 | class MultiPaxosExecutor: public Executor { 10 | public: 11 | using Executor::Executor; 12 | 13 | /** 14 | * return max_ballot 15 | */ 16 | ballot_t Prepare(const ballot_t ballot); 17 | 18 | ballot_t Accept(const ballot_t ballot, shared_ptr cmd); 19 | 20 | ballot_t Decide(ballot_t ballot, CmdData& cmd); 21 | }; 22 | 23 | } // namespace janus 24 | -------------------------------------------------------------------------------- /third-party/paxos/src/deptran/rcc/graph_marshaler.cc: -------------------------------------------------------------------------------- 1 | 2 | #include "graph.h" 3 | #include "graph_marshaler.h" 4 | 5 | 6 | namespace janus { 7 | 8 | } // namespace janus 9 | -------------------------------------------------------------------------------- /third-party/paxos/src/deptran/rcc/graph_marshaler.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "../__dep__.h" 3 | #include "graph.h" 4 | #include "dep_graph.h" 5 | 6 | namespace janus { 7 | template 8 | inline rrr::Marshal &operator<<(rrr::Marshal &m, const Vertex *&v) { 9 | verify(0); 10 | int64_t u = std::uintptr_t(v); 11 | m << u; 12 | return m; 13 | } 14 | 15 | } // namespace janus 16 | -------------------------------------------------------------------------------- /third-party/paxos/src/deptran/rcc/row.cc: -------------------------------------------------------------------------------- 1 | #include "row.h" 2 | #include "../tx.h" 3 | 4 | namespace janus { 5 | 6 | void RccRow::init_dep(int n_columns) { 7 | dep_entry_ = new entry_t[n_columns]; 8 | } 9 | 10 | RccRow::~RccRow() { 11 | delete [] dep_entry_; 12 | } 13 | 14 | void RccRow::copy_into(RccRow * row) const { 15 | mdb::CoarseLockedRow::copy_into((mdb::CoarseLockedRow *)row); 16 | int n_columns = schema_->columns_count(); 17 | row->init_dep(n_columns); 18 | memcpy(row->dep_entry_, dep_entry_, n_columns * sizeof(entry_t)); 19 | } 20 | 21 | entry_t *RccRow::get_dep_entry(int col_id) { 22 | verify(schema_->columns_count() > col_id); 23 | return dep_entry_ + col_id; 24 | } 25 | 26 | } // namespace janus 27 | -------------------------------------------------------------------------------- /third-party/paxos/src/deptran/snow/ro6_coord.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "../rcc/coord.h" 3 | 4 | namespace janus { 5 | class RO6Coord : public RccCoord { 6 | using RccCoord::RccCoord; 7 | public: 8 | 9 | struct deptran_batch_start_t { 10 | std::vector headers; 11 | std::vector >inputs; 12 | std::vector output_sizes; 13 | std::vector pis; 14 | rrr::FutureAttr fuattr; 15 | }; 16 | std::set ro_txn_; 17 | 18 | virtual void do_one(TxRequest&); 19 | 20 | void deptran_start(TxData *ch); 21 | 22 | void deptran_finish(TxData *ch); 23 | 24 | void ro6_start_ro(TxData *ch); 25 | }; 26 | } // namespace janus 27 | -------------------------------------------------------------------------------- /third-party/paxos/src/deptran/troad/troad.cc: -------------------------------------------------------------------------------- 1 | 2 | #include "../__dep__.h" 3 | #include "../command.h" 4 | #include "../command_marshaler.h" 5 | #include "../communicator.h" 6 | #include "../rcc/row.h" 7 | #include "troad.h" 8 | 9 | namespace janus { 10 | 11 | REG_FRAME(MODE_TROAD, vector({"troad"}), TroadFrame); 12 | 13 | } // namespace janus 14 | -------------------------------------------------------------------------------- /third-party/paxos/src/deptran/txn_reg.cc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stonysystems/rolis/c141efef78b436022d9aba2aa7a6e3b7d4b9c98b/third-party/paxos/src/deptran/txn_reg.cc -------------------------------------------------------------------------------- /third-party/paxos/src/rrr/.gitignore: -------------------------------------------------------------------------------- 1 | *.pyc 2 | *.swp 3 | event/build/* 4 | -------------------------------------------------------------------------------- /third-party/paxos/src/rrr/README.md: -------------------------------------------------------------------------------- 1 | # A Repeatable Research Runtime (RRR) 2 | 3 | This is a collection of utility code. 4 | -------------------------------------------------------------------------------- /third-party/paxos/src/rrr/base/all.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "basetypes.hpp" 4 | #include "debugging.hpp" 5 | #include "logging.hpp" 6 | #include "misc.hpp" 7 | #include "strop.hpp" 8 | #include "threading.hpp" 9 | //#include "unittest.hpp" 10 | -------------------------------------------------------------------------------- /third-party/paxos/src/rrr/base/strop.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | #include 6 | 7 | namespace rrr { 8 | 9 | #define streq(a, b) (strcmp((a), (b)) == 0) 10 | 11 | bool startswith(const char* str, const char* head); 12 | bool endswith(const char* str, const char* head); 13 | 14 | // format as -#,###.## 15 | std::string format_decimal(double val); 16 | std::string format_decimal(int val); 17 | 18 | std::vector strsplit(const std::string& str, const char sep = ' '); 19 | 20 | } // namespace base 21 | -------------------------------------------------------------------------------- /third-party/paxos/src/rrr/misc/stat.hpp~: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | namespace rrr { 4 | 5 | class AvgStat { 6 | public: 7 | 8 | 9 | 10 | 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /third-party/paxos/src/rrr/mq/client.h: -------------------------------------------------------------------------------- 1 | 2 | #include "polling.h" 3 | #include "rpc_comm.h" 4 | 5 | #ifndef CLIENT_H 6 | #define CLIENT_H 7 | 8 | typedef struct { 9 | rpc_comm_t *comm; 10 | poll_job_t *pjob; 11 | buf_t *buf_recv; 12 | buf_t *buf_send; 13 | } client_t; 14 | 15 | void client_create(client_t **cli, 16 | poll_mgr_t *mgr); 17 | 18 | void client_destroy(client_t *cli); 19 | 20 | void client_connect(client_t *cli); 21 | 22 | void client_disconnect(client_t *cli); 23 | 24 | void handle_client_read(void *arg); 25 | 26 | void handle_client_write(void *arg); 27 | 28 | void client_reg(client_t *cli, 29 | msgid_t, 30 | void*); 31 | 32 | void client_call(client_t *cli, 33 | msgid_t msgid, 34 | const uint8_t * data, 35 | size_t sz_data); 36 | 37 | 38 | #endif // CLIENT_H 39 | -------------------------------------------------------------------------------- /third-party/paxos/src/rrr/mq/rpc.h: -------------------------------------------------------------------------------- 1 | #ifndef RPC_H 2 | #define RPC_H 3 | 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include "utils/mpr_hash.h" 9 | 10 | #include "rpc_comm.h" 11 | #include "buf.h" 12 | #include "polling.h" 13 | #include "server.h" 14 | #include "client.h" 15 | 16 | void rpc_init(); 17 | 18 | void rpc_destroy(); 19 | 20 | #endif 21 | -------------------------------------------------------------------------------- /third-party/paxos/src/rrr/pylib/simplerpc/__init__.py: -------------------------------------------------------------------------------- 1 | from simplerpc.marshal import Marshal 2 | from simplerpc.server import Server 3 | from simplerpc.client import Client 4 | -------------------------------------------------------------------------------- /third-party/paxos/src/rrr/pylib/simplerpcgen/__init__.py: -------------------------------------------------------------------------------- 1 | from simplerpcgen.rpcgen import rpcgen 2 | -------------------------------------------------------------------------------- /third-party/paxos/src/rrr/pylib/yapps/__init__.py: -------------------------------------------------------------------------------- 1 | # empty 2 | -------------------------------------------------------------------------------- /third-party/paxos/src/rrr/reactor/epoll_wrapper.cc: -------------------------------------------------------------------------------- 1 | 2 | 3 | namespace rrr { 4 | 5 | 6 | 7 | } // namespace rrr 8 | -------------------------------------------------------------------------------- /third-party/paxos/src/rrr/reactor/quorum_event.cc: -------------------------------------------------------------------------------- 1 | 2 | #include "quorum_event.h" 3 | 4 | namespace janus { 5 | 6 | } // namespace janus 7 | -------------------------------------------------------------------------------- /third-party/paxos/src/rrr/rlog/log_service.rpc: -------------------------------------------------------------------------------- 1 | namespace rlog 2 | 3 | abstract service RLog { 4 | log(i32 level, string source, i64 msg_id, string message | ) 5 | aggregate_qps(string metric_name, i32 increment | ) 6 | } 7 | -------------------------------------------------------------------------------- /third-party/paxos/src/rrr/rpc/utils.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | #include 6 | #include 7 | 8 | #include 9 | #include 10 | #include 11 | #include 12 | #include 13 | #include 14 | #include 15 | 16 | namespace rrr { 17 | 18 | int set_nonblocking(int fd, bool nonblocking); 19 | 20 | int find_open_port(); 21 | 22 | std::string get_host_name(); 23 | 24 | } // namespace rrr 25 | -------------------------------------------------------------------------------- /third-party/paxos/src/rrr/rpc_test/counter.rpc: -------------------------------------------------------------------------------- 1 | abstract service Counter { 2 | fast add ( | ); 3 | fast add_long (i32 a, i32 b, i32 c, i64 d, i64 e, vector input | i32 out, vector output); 4 | fast add_short (i64 a | i32 out); 5 | } 6 | -------------------------------------------------------------------------------- /third-party/paxos/src/rrr/rrr.h: -------------------------------------------------------------------------------- 1 | 2 | 3 | #ifndef RRR_H_ 4 | #define RRR_H_ 5 | 6 | #include "utils/logger.h" 7 | #include "utils/safe_assert.h" 8 | #include "utils/mpr_hash.h" 9 | #include "utils/mpr_queue.h" 10 | #include "utils/mpr_thread_pool.h" 11 | #include "utils/mpr_dag.h" 12 | #include "utils/mlock.h" 13 | #include "utils/hostname.h" 14 | 15 | #include "mq/rpc.h" 16 | 17 | #endif // RRR_H_ 18 | -------------------------------------------------------------------------------- /third-party/paxos/src/rrr/rrr.hpp: -------------------------------------------------------------------------------- 1 | 2 | #pragma once 3 | 4 | #include "base/all.hpp" 5 | 6 | #include "misc/stat.hpp" 7 | #include "misc/dball.hpp" 8 | #include "misc/alarm.hpp" 9 | #include "misc/alock.hpp" 10 | #include "misc/rand.hpp" 11 | #include "misc/marshal.hpp" 12 | #include "misc/recorder.hpp" 13 | #include "misc/cpuinfo.hpp" 14 | 15 | 16 | #include "reactor/reactor.h" 17 | #include "reactor/coroutine.h" 18 | #include "reactor/event.h" 19 | #include "reactor/epoll_wrapper.h" 20 | 21 | #include "rpc/utils.hpp" 22 | #include "rpc/client.hpp" 23 | #include "rpc/server.hpp" 24 | 25 | namespace base = rrr; 26 | 27 | -------------------------------------------------------------------------------- /third-party/paxos/src/rrr/utils/hostname.h: -------------------------------------------------------------------------------- 1 | 2 | #pragma once 3 | 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | 10 | static char* gethostip(const char* hostname) { 11 | struct hostent *h = NULL; 12 | char *buf = (char*)malloc(100); 13 | h = gethostbyname(hostname); 14 | if (h == NULL) { 15 | return NULL; 16 | } else { 17 | inet_ntop(h->h_addrtype, *h->h_addr_list, buf, 100); 18 | return buf; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /third-party/paxos/src/rrr/utils/mht.h: -------------------------------------------------------------------------------- 1 | 2 | #pragma once 3 | 4 | #include 5 | 6 | typedef struct { 7 | apr_hash_t *ht_v; 8 | apr_pool_t *pl; 9 | pthread_mutex_t mx; 10 | } index_t; 11 | 12 | void mht_put(char* ht_name, void* key, size_t sz_key, void* value, size_t sz_value); 13 | 14 | void* mht_get(char* ht_name, void* k, size_t sz_k); 15 | 16 | index_t* mht_ht_init(char* ht_name); 17 | 18 | void mht_ht_destroy(char* ht_name); 19 | -------------------------------------------------------------------------------- /third-party/paxos/src/rrr/utils/mlock.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | void mlock_init(); 4 | 5 | void m_lock(char *name); 6 | 7 | void m_unlock(char *name); 8 | 9 | pthread_mutex_t* m_getlock(char* name); 10 | -------------------------------------------------------------------------------- /third-party/paxos/src/rrr/utils/mtime.h: -------------------------------------------------------------------------------- 1 | /* 2 | * mtime.h 3 | * 4 | * Created on: Dec 17, 2012 5 | * Author: ms 6 | */ 7 | // 8 | //#ifndef MTIME_H_ 9 | //#define MTIME_H_ 10 | // 11 | //#include 12 | // 13 | //#ifdef __MACH__ 14 | //#include 15 | //#include 16 | //#endif 17 | // 18 | //static int get_realtime(struct timespec *ts) { 19 | // #ifdef __MACH__ 20 | // clock_serv_t cclock; 21 | // mach_timespec_t mts; 22 | // host_get_clock_service(mach_host_self(), CALENDAR_CLOCK,&cclock); 23 | // clock_get_time(cclock,&mts); 24 | // mach_port_deallocate(mach_task_self(), cclock); 25 | // ts->tv_sec = mts.tv_sec; 26 | // ts->tv_nsec = mts.tv_nsec; 27 | // #else 28 | // clock_gettime(CLOCK_REALTIME, ts); 29 | // #endif 30 | // return 0; 31 | //} 32 | // 33 | //#endif /* MTIME_H_ */ 34 | -------------------------------------------------------------------------------- /third-party/paxos/src/rrr/utils/safe_assert.h: -------------------------------------------------------------------------------- 1 | /* 2 | * safe_assert.h 3 | * 4 | * Created on: Nov 9, 2012 5 | * Author: frog 6 | */ 7 | 8 | #ifndef SAFE_ASSERT_H_ 9 | #define SAFE_ASSERT_H_ 10 | 11 | #include 12 | #include 13 | 14 | #ifdef NDEBUG 15 | #define SAFE_ASSERT(expr) \ 16 | do { \ 17 | if (!(expr)) { \ 18 | abort(); \ 19 | } \ 20 | } while (0) 21 | #else /* NDEBUG */ 22 | #define SAFE_ASSERT(expr) assert(expr) 23 | #endif /* NDEBUG */ 24 | 25 | #endif /* SAFE_ASSERT_H_ */ 26 | -------------------------------------------------------------------------------- /third-party/paxos/template/kv_bench.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 |
9 | -------------------------------------------------------------------------------- /third-party/paxos/tmp.sh: -------------------------------------------------------------------------------- 1 | python3 run_all.py -hh config/hosts-local.yml -s '1:4:1' -c '1:2:1' -r '3' \ 2 | -cc config/concurrent_1.yml \ 3 | -cc config/rw.yml -cc config/client_closed.yml \ 4 | -cc config/occ_paxos.yml -b rw -m occ:multi_paxos \ 5 | --allow-client-overlap testing 6 | 7 | -------------------------------------------------------------------------------- /third-party/paxos/waf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stonysystems/rolis/c141efef78b436022d9aba2aa7a6e3b7d4b9c98b/third-party/paxos/waf -------------------------------------------------------------------------------- /ticker.cc: -------------------------------------------------------------------------------- 1 | #include "ticker.h" 2 | 3 | ticker ticker::s_instance; 4 | -------------------------------------------------------------------------------- /todo.txt: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | [11/03/2020] 6 | 7 | P1 1. create byte logs with k threads and replay with k threads <<- jay [log generation part completed]; weihei has to generate and use logs for replay 8 | P0 2. fix number of tables with scale factors <<- jay [completed] 9 | P2 3. CPU profiling for replay <<- weihei 10 | P4 4. Write automate python code for collecting logs with given configuration 11 | 4.1 Write json type config runner for replay 12 | 4.2 generate a comparision line chart with 3 tuples (Original Silo, Silo + Paxos , Silo + Paxos + Replay) : #NEXT WEEK 13 | -------------------------------------------------------------------------------- /varint.cc: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #include "varint.h" 4 | #include "macros.h" 5 | #include "util.h" 6 | 7 | using namespace std; 8 | using namespace util; 9 | 10 | static void 11 | do_test(uint32_t v) 12 | { 13 | uint8_t buf[5]; 14 | uint8_t *p = &buf[0]; 15 | p = write_uvint32(p, v); 16 | ALWAYS_ASSERT(size_t(p - &buf[0]) == size_uvint32(v)); 17 | 18 | const uint8_t *p0 = &buf[0]; 19 | uint32_t v0 = 0; 20 | p0 = read_uvint32(p0, &v0); 21 | ALWAYS_ASSERT(v == v0); 22 | ALWAYS_ASSERT(p == p0); 23 | } 24 | 25 | void 26 | varint::Test() 27 | { 28 | fast_random r(2043859); 29 | for (int i = 0; i < 1000; i++) 30 | do_test(r.next_u32()); 31 | cerr << "varint tests passed" << endl; 32 | } 33 | --------------------------------------------------------------------------------