diff --git a/scripts/mace.sh b/scripts/mace.sh index 796bc18..1d6c0cc 100755 --- a/scripts/mace.sh +++ b/scripts/mace.sh @@ -52,7 +52,7 @@ for workload in "${workloads[@]}"; do --prefill-keys "${prefill_keys}" \ --warmup-secs "${warmup_secs}" \ --measure-secs "${measure_secs}" \ - --shared-keyspace true \ + --shared-keyspace \ --read-path "${read_path}" \ --result-file "${result_file}" done diff --git a/scripts/phase1.sh b/scripts/phase1.sh index b95f649..2b98fbf 100755 --- a/scripts/phase1.sh +++ b/scripts/phase1.sh @@ -84,7 +84,7 @@ run_case() { --prefill-keys "${prefill_keys}" \ --warmup-secs "${warmup_secs}" \ --measure-secs "${measure_secs}" \ - --shared-keyspace true \ + --shared-keyspace \ --read-path "${read_path}" \ --result-file "${result_file}" else diff --git a/scripts/phase2.sh b/scripts/phase2.sh index a404f77..7a0de81 100755 --- a/scripts/phase2.sh +++ b/scripts/phase2.sh @@ -102,7 +102,7 @@ run_case() { --prefill-keys "${prefill_keys}" \ --warmup-secs "${warmup_secs}" \ --measure-secs "${measure_secs}" \ - --shared-keyspace true \ + --shared-keyspace \ --read-path "${read_path}" \ --result-file "${result_file}" else diff --git a/scripts/phase3.sh b/scripts/phase3.sh index 35a8f1b..31b297f 100755 --- a/scripts/phase3.sh +++ b/scripts/phase3.sh @@ -60,7 +60,7 @@ run_case() { --prefill-keys "${prefill_keys}" \ --warmup-secs "${warmup_secs}" \ --measure-secs "${measure_secs}" \ - --shared-keyspace true \ + --shared-keyspace \ --read-path "${read_path}" \ --durability "${durability}" \ --result-file "${result_file}" diff --git a/scripts/phase4_soak.sh b/scripts/phase4_soak.sh index 285cb2b..bdd1dd8 100755 --- a/scripts/phase4_soak.sh +++ b/scripts/phase4_soak.sh @@ -55,43 +55,149 @@ run_cmd() { local skip_prefill="$3" if [ "${engine}" = "mace" ]; then - local cleanup_flag - cleanup_flag="false" - "${root_dir}/target/release/kv_bench" \ - --path "${db_path}" \ - --workload "${workload}" \ - --threads "${threads}" \ - --key-size "${key_size}" \ - --value-size "${value_size}" \ - --prefill-keys "${prefill_keys}" \ - --warmup-secs "${warmup_secs}" \ - --measure-secs "${measure_secs}" \ - --shared-keyspace true \ - --read-path "${read_path}" \ - --durability "${durability}" \ - --cleanup "${cleanup_flag}" \ - --reuse-path \ - $( [ "${skip_prefill}" = "1" ] && printf '%s' "--skip-prefill" ) \ - --result-file "${result_file}" + if [ "${skip_prefill}" = "1" ]; then + "${root_dir}/target/release/kv_bench" \ + --path "${db_path}" \ + --workload "${workload}" \ + --threads "${threads}" \ + --key-size "${key_size}" \ + --value-size "${value_size}" \ + --prefill-keys "${prefill_keys}" \ + --warmup-secs "${warmup_secs}" \ + --measure-secs "${measure_secs}" \ + --shared-keyspace \ + --read-path "${read_path}" \ + --durability "${durability}" \ + --reuse-path \ + --skip-prefill \ + --result-file "${result_file}" + else + "${root_dir}/target/release/kv_bench" \ + --path "${db_path}" \ + --workload "${workload}" \ + --threads "${threads}" \ + --key-size "${key_size}" \ + --value-size "${value_size}" \ + --prefill-keys "${prefill_keys}" \ + --warmup-secs "${warmup_secs}" \ + --measure-secs "${measure_secs}" \ + --shared-keyspace \ + --read-path "${read_path}" \ + --durability "${durability}" \ + --reuse-path \ + --result-file "${result_file}" + fi else - "${root_dir}/rocksdb/build/release/rocksdb_bench" \ - --path "${db_path}" \ - --workload "${workload}" \ - --threads "${threads}" \ - --key-size "${key_size}" \ - --value-size "${value_size}" \ - --prefill-keys "${prefill_keys}" \ - --warmup-secs "${warmup_secs}" \ - --measure-secs "${measure_secs}" \ - --read-path "${read_path}" \ - --durability "${durability}" \ - --no-cleanup \ - --reuse-path \ - $( [ "${skip_prefill}" = "1" ] && printf '%s' "--skip-prefill" ) \ - --result-file "${result_file}" + if [ "${skip_prefill}" = "1" ]; then + "${root_dir}/rocksdb/build/release/rocksdb_bench" \ + --path "${db_path}" \ + --workload "${workload}" \ + --threads "${threads}" \ + --key-size "${key_size}" \ + --value-size "${value_size}" \ + --prefill-keys "${prefill_keys}" \ + --warmup-secs "${warmup_secs}" \ + --measure-secs "${measure_secs}" \ + --read-path "${read_path}" \ + --durability "${durability}" \ + --no-cleanup \ + --reuse-path \ + --skip-prefill \ + --result-file "${result_file}" + else + "${root_dir}/rocksdb/build/release/rocksdb_bench" \ + --path "${db_path}" \ + --workload "${workload}" \ + --threads "${threads}" \ + --key-size "${key_size}" \ + --value-size "${value_size}" \ + --prefill-keys "${prefill_keys}" \ + --warmup-secs "${warmup_secs}" \ + --measure-secs "${measure_secs}" \ + --read-path "${read_path}" \ + --durability "${durability}" \ + --no-cleanup \ + --reuse-path \ + --result-file "${result_file}" + fi fi } +start_run_bg() { + local workload="$1" + local measure_secs="$2" + local skip_prefill="$3" + + if [ "${engine}" = "mace" ]; then + if [ "${skip_prefill}" = "1" ]; then + "${root_dir}/target/release/kv_bench" \ + --path "${db_path}" \ + --workload "${workload}" \ + --threads "${threads}" \ + --key-size "${key_size}" \ + --value-size "${value_size}" \ + --prefill-keys "${prefill_keys}" \ + --warmup-secs "${warmup_secs}" \ + --measure-secs "${measure_secs}" \ + --shared-keyspace \ + --read-path "${read_path}" \ + --durability "${durability}" \ + --reuse-path \ + --skip-prefill \ + --result-file "${result_file}" & + else + "${root_dir}/target/release/kv_bench" \ + --path "${db_path}" \ + --workload "${workload}" \ + --threads "${threads}" \ + --key-size "${key_size}" \ + --value-size "${value_size}" \ + --prefill-keys "${prefill_keys}" \ + --warmup-secs "${warmup_secs}" \ + --measure-secs "${measure_secs}" \ + --shared-keyspace \ + --read-path "${read_path}" \ + --durability "${durability}" \ + --reuse-path \ + --result-file "${result_file}" & + fi + else + if [ "${skip_prefill}" = "1" ]; then + "${root_dir}/rocksdb/build/release/rocksdb_bench" \ + --path "${db_path}" \ + --workload "${workload}" \ + --threads "${threads}" \ + --key-size "${key_size}" \ + --value-size "${value_size}" \ + --prefill-keys "${prefill_keys}" \ + --warmup-secs "${warmup_secs}" \ + --measure-secs "${measure_secs}" \ + --read-path "${read_path}" \ + --durability "${durability}" \ + --no-cleanup \ + --reuse-path \ + --skip-prefill \ + --result-file "${result_file}" & + else + "${root_dir}/rocksdb/build/release/rocksdb_bench" \ + --path "${db_path}" \ + --workload "${workload}" \ + --threads "${threads}" \ + --key-size "${key_size}" \ + --value-size "${value_size}" \ + --prefill-keys "${prefill_keys}" \ + --warmup-secs "${warmup_secs}" \ + --measure-secs "${measure_secs}" \ + --read-path "${read_path}" \ + --durability "${durability}" \ + --no-cleanup \ + --reuse-path \ + --result-file "${result_file}" & + fi + fi + runner_pid=$! +} + if [ ! -f "${restart_file}" ]; then printf "cycle,start_epoch,kill_sent,worker_exit,restart_status,restart_ready_ms\n" > "${restart_file}" fi @@ -107,8 +213,7 @@ while [ "$(date +%s)" -lt "${end_epoch}" ]; do printf "[phase4][%s] cycle=%s start=%s\n" "${engine}" "${cycle}" "${cycle_start}" # long run in background; kill after interval - (run_cmd "${workload_main}" "${run_measure_secs}" 1) & - runner_pid=$! + start_run_bg "${workload_main}" "${run_measure_secs}" 1 sleep "${crash_interval_secs}"