Updates to RocksDB subcompaction benchmarking script

Summary: Set of updates to the subcompaction benchmark script which are based on our internal discussions. The intent behind the changes is to make sure that the scripts will correctly reflect how we're doing the actual benchmarking.

Test Plan: Tested by exercising the full set of compaction benchmarks and validating the execution and consistency of results.

Reviewers: MarkCallaghan, sdong, yhchiang

Reviewed By: yhchiang

Subscribers: andrewkr, dhruba

Differential Revision: https://reviews.facebook.net/D55461
main
Gunnar Kudrjavets 9 years ago
parent 1a2cc27e01
commit 697fab820a
  1. 42
      tools/benchmark.sh

@ -4,7 +4,7 @@
if [ $# -ne 1 ]; then if [ $# -ne 1 ]; then
echo -n "./benchmark.sh [bulkload/fillseq/overwrite/filluniquerandom/" echo -n "./benchmark.sh [bulkload/fillseq/overwrite/filluniquerandom/"
echo "readrandom/readwhilewriting/readwhilemerging/updaterandom/" echo "readrandom/readwhilewriting/readwhilemerging/updaterandom/"
echo "mergerandom/randomtransaction]" echo "mergerandom/randomtransaction/compact]"
exit 0 exit 0
fi fi
@ -117,14 +117,14 @@ params_bulkload="$const_params --max_background_compactions=16 --max_background_
# For universal compaction, these level0_* options mean total sorted of runs in # For universal compaction, these level0_* options mean total sorted of runs in
# LSM. In level-based compaction, it means number of L0 files. # LSM. In level-based compaction, it means number of L0 files.
# #
params_level_compact="$const_params --max_background_compactions=16 \ params_level_compact="$const_params \
--max_background_flushes=7 \ --max_background_flushes=4 \
--level0_file_num_compaction_trigger=4 \ --level0_file_num_compaction_trigger=4 \
--level0_slowdown_writes_trigger=16 \ --level0_slowdown_writes_trigger=16 \
--level0_stop_writes_trigger=20" --level0_stop_writes_trigger=20"
params_univ_compact="$const_params --max_background_compactions=16 \ params_univ_compact="$const_params \
--max_background_flushes=7 \ --max_background_flushes=4 \
--level0_file_num_compaction_trigger=8 \ --level0_file_num_compaction_trigger=8 \
--level0_slowdown_writes_trigger=16 \ --level0_slowdown_writes_trigger=16 \
--level0_stop_writes_trigger=20" --level0_stop_writes_trigger=20"
@ -187,6 +187,14 @@ function run_bulkload {
eval $cmd eval $cmd
} }
#
# Parameter description:
#
# $1 - 1 if I/O statistics should be collected.
# $2 - compaction type to use (level=0, universal=1).
# $3 - number of subcompactions.
# $4 - number of maximum background compactions.
#
function run_manual_compaction_worker { function run_manual_compaction_worker {
# This runs with a vector memtable and the WAL disabled to load faster. # This runs with a vector memtable and the WAL disabled to load faster.
# It is still crash safe and the client can discover where to restart a # It is still crash safe and the client can discover where to restart a
@ -214,6 +222,7 @@ function run_manual_compaction_worker {
--subcompactions=$3 \ --subcompactions=$3 \
--memtablerep=vector \ --memtablerep=vector \
--disable_wal=1 \ --disable_wal=1 \
--max_background_compactions=$4 \
--seed=$( date +%s ) \ --seed=$( date +%s ) \
2>&1 | tee -a $fillrandom_output_file" 2>&1 | tee -a $fillrandom_output_file"
@ -237,6 +246,7 @@ function run_manual_compaction_worker {
--compaction_measure_io_stats=$1 \ --compaction_measure_io_stats=$1 \
--compaction_style=$2 \ --compaction_style=$2 \
--subcompactions=$3 \ --subcompactions=$3 \
--max_background_compactions=$4 \
;} ;}
2>&1 | tee -a $man_compact_output_log" 2>&1 | tee -a $man_compact_output_log"
@ -254,21 +264,19 @@ function run_univ_compaction {
# Values: kCompactionStyleLevel = 0x0, kCompactionStyleUniversal = 0x1. # Values: kCompactionStyleLevel = 0x0, kCompactionStyleUniversal = 0x1.
compaction_style=1 compaction_style=1
# Get the basic understanding about impact of scaling out the subcompactions # Define a set of benchmarks.
# by allowing the usage of { 1, 2, 4, 8, 16 } threads for different runs. subcompactions=(1 2 4 8 16)
subcompactions=("1" "2" "4" "8" "16") max_background_compactions=(16 16 8 4 2)
# Do the real work of running various experiments.
# Run the compaction benchmark which is based on bulkload. It pretty much i=0
# consists of running manual compaction with different number of subcompaction total=${#subcompactions[@]}
# threads.
log_suffix=1
for ((i=0; i < ${#subcompactions[@]}; i++)) # Execute a set of benchmarks to cover variety of scenarios.
while [ "$i" -lt "$total" ]
do do
run_manual_compaction_worker $io_stats $compaction_style ${subcompactions[$i]} $log_suffix run_manual_compaction_worker $io_stats $compaction_style ${subcompactions[$i]} \
((log_suffix++)) ${max_background_compactions[$i]}
((i++))
done done
} }

Loading…
Cancel
Save