Building: recent version of Linux with gcc, g++, gnuplot, and Python installed.
Running: 6 machines connected to the same Gigabit switch, running a compatible version of Linux
Get the source: wget http://people.csail.mit.edu/evanj/hstore-cc-sigmod2010.tar.bz2
Extract: tar xjf hstore-cc-sigmod2010.tar.bz2
Build: cd hstore-cc-sigmod2010; ./build.sh
This script should build everything that is needed.
Figure 4 from the paper: This involves running a "sweep" with three configurations: blocking, speculation, and locking. There is a script which attempts to run everything in one go (mptxn.py), but in case it doesn’t this section documents a more detailed procedure:
Note
|
This takes approximately 5 hours to run. |
Run ./mptxn.py [6 machines with ssh access]. If this fails, you may need to attempt running a single test. See below.
Plot the results with ./mptxn_plot.py mptxn.eps.
These directions run a single test in one mode (block, spec, or lock). You will need to repeat this three times to get the complete results. You should only try this if the "all in one" script fails.
Start the slave machines: taskmgr/slave_admin.py start [name/ip of 6 machines to use for the tests]
Start a single test configuration: taskmgr/taskcmd.py taskmgrconfigs/task_mptxn.py --slaves=[machines] start --task_args [block|spec|lock]
Wait for the test to finish. Either you can monitor the test task running on the last host, or you can use the wait command: taskmgr/taskcmd.py taskmgrconfigs/task_mptxn.py --slaves=[machines] wait [last host name] --task_args [block|spec|lock]
Get the results via ssh: scp [host]:/tmp/tmp*/*.csv data/mptxn-[test type].csv
Shut down the test: taskmgr/taskcmd.py taskmgrconfigs/task_mptxn.py --slaves=[machines] stop --task_args [block|spec|lock]
Figures 5 and 6 from the paper. As above, there is a script which attempts to run everything in one go (conflict.py), but if that fails this section also documents a more detailed procedure.
Note
|
This takes approximately 16 hours to run. |
Run ./conflict.py [6 machines with ssh access]. If this fails, you may need to attempt running a single test. See below.
Plot the results with ./conflict_plot.py conflict.eps.
Plot the results with ./abort_plot.py abort.eps.
Start the slave machines: taskmgr/slave_admin.py start [name/ip of 6 machines to use for the tests]
Start a single test configuration: taskmgr/taskcmd.py taskmgrconfigs/task_conflict.py --slaves=[machines] start --task_args [conflict|abort] [block|spec|lock]
Wait for the test to finish. Either you can monitor the test task running on the last host, or you can use the wait command: taskmgr/taskcmd.py taskmgrconfigs/task_conflict.py --slaves=[machines] wait [last host name] --task_args [conflict|abort] [block|spec|lock]
Get the results via ssh: scp [host]:/tmp/tmp*/*.csv data/[conflict|abort]-[block|spec|lock].csv
Shut down the test: taskmgr/taskcmd.py taskmgrconfigs/task_conflict.py --slaves=[machines] stop --task_args [conflict|abort] [block|spec|lock]
Figure 7 in the paper.
Run ./mptxn.py [6 machines with ssh access] general.
Plot the results with ./mptxn_plot.py general.eps general.
Figure 8 in the paper.
Run ./tpcc_warehouses.py [6 machines with ssh access].
Plot the results : ./tpcc_warehouses_plot.py tpcc_warehouses.eps.
Note
|
This takes approximately 4 hours to run. |
Figure 9 in the paper.
Run ./tpcc_mptxn.py [6 machines with ssh access].
Plot the results: ./tpcc_mptxn_plot.py tpcc_warehouses.eps.
Note
|
This takes approximately 7 hours to run. |
This code is released under a BSD license. See hstore/LICENSE.
The code in this directory is from a collection of separate source repositories, checked out at the following changesets. The revision in each repository has been tagged with sigmod2010-repeatability.
hstore: 4febaa9f50e7
hstore-lock: hstore repository at tag replicate-after-execution (ebcac946ac02)
taskmgr: c8335f0c05f8
taskmgrconfigs: 734e4e1b91b2
stupidbuild: 3437e85e0516