Add p99.9 and p99.99 response time to benchmark report, add new summary report

Summary:
This adds p99.9 and p99.99 response times to the benchmark report and
adds a second report, report2.txt that has tests listed in test order rather
than the time in which they were run, so overwrite tests are listed for
all thread counts, then update etc.

Also changes fillseq to compress all levels to avoid write-amp from rewriting
uncompressed files when they reach the first level to compress.

Increase max_write_buffer_number to avoid stalls during fillseq and make
max_background_flushes agree with max_write_buffer_number.

See https://gist.github.com/mdcallag/297ff4316a25cb2988f7 for an example
of the new report (report2.txt)

Task ID: #

Blame Rev:

Test Plan:
Revert Plan:

Database Impact:

Memcache Impact:

Other Notes:

EImportant:

- begin *PUBLIC* platform impact section -
Bugzilla: #
- end platform impact -

Reviewers: igor

Reviewed By: igor

Subscribers: dhruba

Differential Revision: https://reviews.facebook.net/D36537
main
Mark Callaghan 10 years ago
parent 953a885ebf
commit 3be82bc894
  1. 15
      tools/benchmark.sh
  2. 56
      tools/run_flash_bench.sh

@ -66,7 +66,7 @@ const_params="
--hard_rate_limit=3 \ --hard_rate_limit=3 \
--rate_limit_delay_max_milliseconds=1000000 \ --rate_limit_delay_max_milliseconds=1000000 \
--write_buffer_size=$((128 * M)) \ --write_buffer_size=$((128 * M)) \
--max_write_buffer_number=3 \ --max_write_buffer_number=8 \
--target_file_size_base=$((128 * M)) \ --target_file_size_base=$((128 * M)) \
--max_bytes_for_level_base=$((1 * G)) \ --max_bytes_for_level_base=$((1 * G)) \
\ \
@ -93,8 +93,8 @@ if [ $duration -gt 0 ]; then
const_params="$const_params --duration=$duration" const_params="$const_params --duration=$duration"
fi fi
params_w="$const_params $l0_config --max_background_compactions=16 --max_background_flushes=16" params_w="$const_params $l0_config --max_background_compactions=16 --max_background_flushes=7"
params_bulkload="$const_params --max_background_compactions=16 --max_background_flushes=16 \ params_bulkload="$const_params --max_background_compactions=16 --max_background_flushes=7 \
--level0_file_num_compaction_trigger=$((10 * M)) \ --level0_file_num_compaction_trigger=$((10 * M)) \
--level0_slowdown_writes_trigger=$((10 * M)) \ --level0_slowdown_writes_trigger=$((10 * M)) \
--level0_stop_writes_trigger=$((10 * M))" --level0_stop_writes_trigger=$((10 * M))"
@ -116,8 +116,10 @@ function summarize_result {
usecs_op=$( grep ^${bench_name} $test_out | awk '{ printf "%.1f", $3 }' ) usecs_op=$( grep ^${bench_name} $test_out | awk '{ printf "%.1f", $3 }' )
p50=$( grep "^Percentiles:" $test_out | awk '{ printf "%.1f", $3 }' ) p50=$( grep "^Percentiles:" $test_out | awk '{ printf "%.1f", $3 }' )
p75=$( grep "^Percentiles:" $test_out | awk '{ printf "%.1f", $5 }' ) p75=$( grep "^Percentiles:" $test_out | awk '{ printf "%.1f", $5 }' )
p99=$( grep "^Percentiles:" $test_out | awk '{ printf "%.1f", $7 }' ) p99=$( grep "^Percentiles:" $test_out | awk '{ printf "%.0f", $7 }' )
echo -e "$ops_sec\t$mb_sec\t$lo_wgb\t$sum_wgb\t$wamp\t$wmb_ps\t$usecs_op\t$p50\t$p75\t$p99\t$uptime\t$stall_time\t$stall_pct\t$test_name" \ p999=$( grep "^Percentiles:" $test_out | awk '{ printf "%.0f", $9 }' )
p9999=$( grep "^Percentiles:" $test_out | awk '{ printf "%.0f", $11 }' )
echo -e "$ops_sec\t$mb_sec\t$lo_wgb\t$sum_wgb\t$wamp\t$wmb_ps\t$usecs_op\t$p50\t$p75\t$p99\t$p999\t$p9999\t$uptime\t$stall_time\t$stall_pct\t$test_name" \
>> $output_dir/report.txt >> $output_dir/report.txt
} }
@ -151,6 +153,7 @@ function run_fillseq {
--use_existing_db=0 \ --use_existing_db=0 \
--sync=0 \ --sync=0 \
$params_w \ $params_w \
--min_level_to_compress=0 \
--threads=1 \ --threads=1 \
2>&1 | tee -a $output_dir/benchmark_fillseq.log" 2>&1 | tee -a $output_dir/benchmark_fillseq.log"
echo $cmd | tee $output_dir/benchmark_fillseq.log echo $cmd | tee $output_dir/benchmark_fillseq.log
@ -316,7 +319,7 @@ for job in ${jobs[@]}; do
echo "Complete $job in $((end-start)) seconds" | tee -a $schedule echo "Complete $job in $((end-start)) seconds" | tee -a $schedule
fi fi
echo -e "ops/sec\tmb/sec\tL0_MB\tSum_GB\tW-Amp\tW-MB/s\tusec/op\tp50\tp75\tp99\tUptime\tStall-time\tStall%\tTest" echo -e "ops/sec\tmb/sec\tL0_MB\tSum_GB\tW-Amp\tW-MB/s\tusec/op\tp50\tp75\tp99\tp99.9\tp99.99\tUptime\tStall-time\tStall%\tTest"
tail -1 $output_dir/report.txt tail -1 $output_dir/report.txt
done done

@ -91,7 +91,7 @@ VALUE_SIZE=$vs \
CACHE_SIZE=$cs" CACHE_SIZE=$cs"
mkdir -p $output_dir mkdir -p $output_dir
echo -e "ops/sec\tmb/sec\tL0_GB\tSum_GB\tW-Amp\tW-MB/s\tusec/op\tp50\tp75\tp99\tUptime\tStall-time\tStall%\tTest" \ echo -e "ops/sec\tmb/sec\tL0_GB\tSum_GB\tW-Amp\tW-MB/s\tusec/op\tp50\tp75\tp99\tp99.9\tp99.99\tUptime\tStall-time\tStall%\tTest" \
> $output_dir/report.txt > $output_dir/report.txt
# Notes on test sequence: # Notes on test sequence:
@ -219,4 +219,56 @@ for num_thr in "${nthreads[@]}" ; do
NUM_NEXTS_PER_SEEK=$nps ./tools/benchmark.sh revrangewhilemerging NUM_NEXTS_PER_SEEK=$nps ./tools/benchmark.sh revrangewhilemerging
done done
cat $output_dir/report.txt echo bulkload > $output_dir/report2.txt
head -1 $output_dir/report.txt >> $output_dir/report2.txt
grep bulkload $output_dir/report.txt >> $output_dir/report2.txt
echo fillseq >> $output_dir/report2.txt
head -1 $output_dir/report.txt >> $output_dir/report2.txt
grep fillseq $output_dir/report.txt >> $output_dir/report2.txt
echo overwrite sync=0 >> $output_dir/report2.txt
head -1 $output_dir/report.txt >> $output_dir/report2.txt
grep overwrite $output_dir/report.txt | grep \.s0 >> $output_dir/report2.txt
echo overwrite sync=1 >> $output_dir/report2.txt
head -1 $output_dir/report.txt >> $output_dir/report2.txt
grep overwrite $output_dir/report.txt | grep \.s1 >> $output_dir/report2.txt
echo updaterandom sync=0 >> $output_dir/report2.txt
head -1 $output_dir/report.txt >> $output_dir/report2.txt
grep updaterandom $output_dir/report.txt | grep \.s0 >> $output_dir/report2.txt
echo updaterandom sync=1 >> $output_dir/report2.txt
head -1 $output_dir/report.txt >> $output_dir/report2.txt
grep updaterandom $output_dir/report.txt | grep \.s1 >> $output_dir/report2.txt
echo mergerandom sync=0 >> $output_dir/report2.txt
head -1 $output_dir/report.txt >> $output_dir/report2.txt
grep mergerandom $output_dir/report.txt | grep \.s0 >> $output_dir/report2.txt
echo mergerandom sync=1 >> $output_dir/report2.txt
head -1 $output_dir/report.txt >> $output_dir/report2.txt
grep mergerandom $output_dir/report.txt | grep \.s1 >> $output_dir/report2.txt
echo readrandom >> $output_dir/report2.txt
head -1 $output_dir/report.txt >> $output_dir/report2.txt
grep readrandom $output_dir/report.txt >> $output_dir/report2.txt
echo fwdrange >> $output_dir/report2.txt
head -1 $output_dir/report.txt >> $output_dir/report2.txt
grep fwdrange\.t $output_dir/report.txt >> $output_dir/report2.txt
echo revrange >> $output_dir/report2.txt
head -1 $output_dir/report.txt >> $output_dir/report2.txt
grep revrange\.t $output_dir/report.txt >> $output_dir/report2.txt
echo readwhile >> $output_dir/report2.txt >> $output_dir/report2.txt
head -1 $output_dir/report.txt >> $output_dir/report2.txt
grep readwhilewriting $output_dir/report.txt >> $output_dir/report2.txt
echo readwhile >> $output_dir/report2.txt
head -1 $output_dir/report.txt >> $output_dir/report2.txt
grep readwhilemerging $output_dir/report.txt >> $output_dir/report2.txt
echo fwdreadwhilewriting >> $output_dir/report2.txt
head -1 $output_dir/report.txt >> $output_dir/report2.txt
grep fwdrangewhilewriting $output_dir/report.txt >> $output_dir/report2.txt
echo fwdreadwhilemerging >> $output_dir/report2.txt
head -1 $output_dir/report.txt >> $output_dir/report2.txt
grep fwdrangewhilemerg $output_dir/report.txt >> $output_dir/report2.txt
echo revreadwhilewriting >> $output_dir/report2.txt
head -1 $output_dir/report.txt >> $output_dir/report2.txt
grep revrangewhilewriting $output_dir/report.txt >> $output_dir/report2.txt
echo revreadwhilemerging >> $output_dir/report2.txt
head -1 $output_dir/report.txt >> $output_dir/report2.txt
grep revrangewhilemerg $output_dir/report.txt >> $output_dir/report2.txt
cat $output_dir/report2.txt

Loading…
Cancel
Save