From 3be82bc8946e8f03a6a997efe769e8e75f90584f Mon Sep 17 00:00:00 2001 From: Mark Callaghan Date: Mon, 6 Apr 2015 10:42:12 -0700 Subject: [PATCH] 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 --- tools/benchmark.sh | 15 ++++++----- tools/run_flash_bench.sh | 56 ++++++++++++++++++++++++++++++++++++++-- 2 files changed, 63 insertions(+), 8 deletions(-) diff --git a/tools/benchmark.sh b/tools/benchmark.sh index bf9adc697..a37373b50 100755 --- a/tools/benchmark.sh +++ b/tools/benchmark.sh @@ -66,7 +66,7 @@ const_params=" --hard_rate_limit=3 \ --rate_limit_delay_max_milliseconds=1000000 \ --write_buffer_size=$((128 * M)) \ - --max_write_buffer_number=3 \ + --max_write_buffer_number=8 \ --target_file_size_base=$((128 * M)) \ --max_bytes_for_level_base=$((1 * G)) \ \ @@ -93,8 +93,8 @@ if [ $duration -gt 0 ]; then const_params="$const_params --duration=$duration" fi -params_w="$const_params $l0_config --max_background_compactions=16 --max_background_flushes=16" -params_bulkload="$const_params --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=7 \ --level0_file_num_compaction_trigger=$((10 * M)) \ --level0_slowdown_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 }' ) p50=$( grep "^Percentiles:" $test_out | awk '{ printf "%.1f", $3 }' ) p75=$( grep "^Percentiles:" $test_out | awk '{ printf "%.1f", $5 }' ) - p99=$( grep "^Percentiles:" $test_out | awk '{ printf "%.1f", $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" \ + p99=$( grep "^Percentiles:" $test_out | awk '{ printf "%.0f", $7 }' ) + 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 } @@ -151,6 +153,7 @@ function run_fillseq { --use_existing_db=0 \ --sync=0 \ $params_w \ + --min_level_to_compress=0 \ --threads=1 \ 2>&1 | tee -a $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 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 done diff --git a/tools/run_flash_bench.sh b/tools/run_flash_bench.sh index 224e1f6f0..6e288c653 100755 --- a/tools/run_flash_bench.sh +++ b/tools/run_flash_bench.sh @@ -91,7 +91,7 @@ VALUE_SIZE=$vs \ CACHE_SIZE=$cs" 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 # Notes on test sequence: @@ -219,4 +219,56 @@ for num_thr in "${nthreads[@]}" ; do NUM_NEXTS_PER_SEEK=$nps ./tools/benchmark.sh revrangewhilemerging 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