|
1 | 1 | # RocksDB Equipped With SuRF
|
2 | 2 |
|
3 | 3 | ## Install Dependencies
|
4 |
| - sudo apt-get install build-essential cmake libsnappy |
| 4 | + sudo apt-get install build-essential cmake libgtest.dev libsnappy-dev |
5 | 5 | cd /usr/src/gtest
|
6 | 6 | sudo cmake CMakeLists.txt
|
7 | 7 | sudo make
|
|
15 | 15 | cmake -DWITH_SNAPPY=ON ..
|
16 | 16 | make -j 8
|
17 | 17 |
|
18 |
| -## Generate Workload and RocksDB Instances |
19 |
| -The experiments presented in our |
| 18 | +## Generate Workloads and RocksDB Instances |
| 19 | +The experiment results presented in our |
20 | 20 | [SIGMOD paper](http://www.cs.cmu.edu/~huanche1/publications/surf_paper.pdf)
|
21 |
| -uses 100GB datasets. Because it takes a long time to run, we scale the experiments |
22 |
| -down to 2GB datasets (the 100GB experiment configs are still included in |
23 |
| -filter_experiment/filter_experiment.cc, commented out). |
| 21 | +uses 100GB datasets. Because it takes a long time to run, we scale |
| 22 | +down to 2GB datasets here (the 100GB configs are still included in |
| 23 | +**filter_experiment/filter_experiment.cc**, but commented out). |
24 | 24 |
|
25 | 25 | cd filter_experiment
|
26 | 26 | python poisson.py
|
27 | 27 | mkdir data_no_filter data_bloom data_surf
|
28 | 28 |
|
29 |
| -Run the executable "../build/filter_experiment/filter_experiment" will show the usage information: |
| 29 | +Run the executable **../build/filter_experiment/filter_experiment** will show the usage information: |
30 | 30 | Usage:
|
31 | 31 | arg 1: path to datafiles
|
32 |
| - arg 2: filter type |
33 |
| - 0: no filter |
34 |
| - 1: Bloom filter |
35 |
| - 2: SuRF |
36 |
| - 3: SuRF Hash |
37 |
| - 4: SuRF Real |
38 |
| - arg 3: compression? |
39 |
| - 0: no compression |
40 |
| - 1: Snappy |
41 |
| - arg 4: use direct I/O? |
42 |
| - 0: no |
43 |
| - 1: yes |
44 |
| - arg 5: query type |
45 |
| - 0: init |
46 |
| - 1: point query |
47 |
| - 2: open range query |
48 |
| - 3: closed range query |
| 32 | + arg 2: filter type 0: no filter 1: Bloom filter 2: SuRF 3: SuRF Hash 4: SuRF Real |
| 33 | + arg 3: compression? 0: no compression 1: Snappy |
| 34 | + arg 4: use direct I/O? 0: no 1: yes |
| 35 | + arg 5: query type 0: init 1: point query 2: open range query 3: closed range query |
49 | 36 | arg 6: range size
|
50 | 37 | arg 7: warmup # of queries
|
51 | 38 |
|
52 |
| -To initialize the RocksDB instances with no filter, bloom filters and SuRF (with real suffixes): |
| 39 | +To initialize the RocksDB instances with no filter, bloom filters and SuRFs (with real suffixes): |
53 | 40 |
|
54 | 41 | ../build/filter_experiment/filter_experiment data_no_filter 0 1 0 0 0 0
|
55 | 42 | ../build/filter_experiment/filter_experiment data_bloom 1 1 0 0 0 0
|
56 | 43 | ../build/filter_experiment/filter_experiment data_surf 4 1 0 0 0 0
|
57 | 44 |
|
58 |
| -## Run Benchmark |
| 45 | +## Run Benchmarks |
59 | 46 | You may want to clear system cache (echo 3 | sudo tee /proc/sys/vm/drop_caches)
|
60 | 47 | before running each experiment. The source file for the experiments is
|
61 |
| -"filter_experiment/filter_experiment.cc". To get correct I/O counts, you need |
62 |
| -to specify the device in function "getIOCount()" and "printIO()". |
63 |
| -filter_experiment.cc includes more configurations (e.g., specify filter sizes) |
| 48 | +**filter_experiment/filter_experiment.cc**. To get correct I/O counts, you need |
| 49 | +to specify the device in function **getIOCount()** and **printIO()**. |
| 50 | +**filter_experiment.cc** includes more configurations (e.g., specify filter sizes) |
64 | 51 | to run different experiments besides the following examples:
|
65 | 52 |
|
66 | 53 | // point queries
|
|
0 commit comments