]>
Commit | Line | Data |
---|---|---|
7c673cae FG |
1 | #!/usr/bin/env bash |
2 | ||
f67539c2 TL |
3 | testdir=$(readlink -f $(dirname $0)) |
4 | rootdir=$(readlink -f $testdir/../../..) | |
5 | source $rootdir/test/common/autotest_common.sh | |
6 | ||
7 | dump_db_bench_on_err() { | |
8 | # Fetch std dump of the last run_step that might have failed | |
9 | [[ -e $db_bench ]] || return 0 | |
10 | ||
11 | # Dump entire *.txt to stderr to clearly see what might have failed | |
12 | xtrace_disable | |
13 | mapfile -t step_map < "$db_bench" | |
14 | printf '%s\n' "${step_map[@]/#/* $step (FAILED)}" >&2 | |
15 | xtrace_restore | |
16 | } | |
11fdf7f2 TL |
17 | |
18 | run_step() { | |
19 | if [ -z "$1" ]; then | |
20 | echo run_step called with no parameter | |
21 | exit 1 | |
22 | fi | |
23 | ||
f67539c2 TL |
24 | cat <<- EOL >> "$1"_flags.txt |
25 | --spdk=$ROCKSDB_CONF | |
26 | --spdk_bdev=Nvme0n1 | |
27 | --spdk_cache_size=$CACHE_SIZE | |
28 | EOL | |
11fdf7f2 | 29 | |
f67539c2 | 30 | db_bench=$1_db_bench.txt |
11fdf7f2 | 31 | echo -n Start $1 test phase... |
f67539c2 TL |
32 | time taskset 0xFF $DB_BENCH --flagfile="$1"_flags.txt &> "$db_bench" |
33 | DB_BENCH_FILE=$(grep -o '/dev/shm/\(\w\|\.\|\d\|/\)*' "$db_bench") | |
9f95a23c TL |
34 | gzip $DB_BENCH_FILE |
35 | mv $DB_BENCH_FILE.gz "$1"_trace.gz | |
36 | chmod 644 "$1"_trace.gz | |
11fdf7f2 TL |
37 | echo done. |
38 | } | |
39 | ||
40 | run_bsdump() { | |
f67539c2 | 41 | $SPDK_EXAMPLE_DIR/blobcli -c $ROCKSDB_CONF -b Nvme0n1 -D &> bsdump.txt |
11fdf7f2 TL |
42 | } |
43 | ||
9f95a23c TL |
44 | # In the autotest job, we copy the rocksdb source to just outside the spdk directory. |
45 | DB_BENCH_DIR="$rootdir/../rocksdb" | |
7c673cae FG |
46 | DB_BENCH=$DB_BENCH_DIR/db_bench |
47 | ROCKSDB_CONF=$testdir/rocksdb.conf | |
48 | ||
49 | if [ ! -e $DB_BENCH_DIR ]; then | |
f67539c2 TL |
50 | echo $DB_BENCH_DIR does not exist |
51 | false | |
7c673cae FG |
52 | fi |
53 | ||
7c673cae FG |
54 | timing_enter db_bench_build |
55 | ||
56 | pushd $DB_BENCH_DIR | |
9f95a23c TL |
57 | if [ -z "$SKIP_GIT_CLEAN" ]; then |
58 | git clean -x -f -d | |
59 | fi | |
f67539c2 TL |
60 | |
61 | EXTRA_CXXFLAGS="" | |
62 | GCC_VERSION=$(cc -dumpversion | cut -d. -f1) | |
63 | if ((GCC_VERSION >= 9)); then | |
64 | EXTRA_CXXFLAGS+="-Wno-deprecated-copy -Wno-pessimizing-move -Wno-error=stringop-truncation" | |
65 | fi | |
66 | ||
67 | $MAKE db_bench $MAKEFLAGS $MAKECONFIG DEBUG_LEVEL=0 SPDK_DIR=$rootdir EXTRA_CXXFLAGS="$EXTRA_CXXFLAGS" | |
7c673cae FG |
68 | popd |
69 | ||
70 | timing_exit db_bench_build | |
71 | ||
11fdf7f2 | 72 | $rootdir/scripts/gen_nvme.sh > $ROCKSDB_CONF |
9f95a23c TL |
73 | # 0x80 is the bit mask for BlobFS tracepoints |
74 | echo "[Global]" >> $ROCKSDB_CONF | |
75 | echo "TpointGroupMask 0x80" >> $ROCKSDB_CONF | |
11fdf7f2 | 76 | |
f67539c2 | 77 | trap 'dump_db_bench_on_err; run_bsdump || :; rm -f $ROCKSDB_CONF; exit 1' SIGINT SIGTERM EXIT |
11fdf7f2 | 78 | |
9f95a23c | 79 | if [ -z "$SKIP_MKFS" ]; then |
f67539c2 | 80 | run_test "blobfs_mkfs" $rootdir/test/blobfs/mkfs/mkfs $ROCKSDB_CONF Nvme0n1 |
9f95a23c | 81 | fi |
7c673cae | 82 | |
9f95a23c | 83 | mkdir -p $output_dir/rocksdb |
11fdf7f2 | 84 | RESULTS_DIR=$output_dir/rocksdb |
9f95a23c TL |
85 | if [ $RUN_NIGHTLY -eq 1 ]; then |
86 | CACHE_SIZE=4096 | |
11fdf7f2 TL |
87 | DURATION=60 |
88 | NUM_KEYS=100000000 | |
89 | else | |
9f95a23c | 90 | CACHE_SIZE=2048 |
11fdf7f2 TL |
91 | DURATION=20 |
92 | NUM_KEYS=20000000 | |
93 | fi | |
94 | ||
95 | cd $RESULTS_DIR | |
96 | cp $testdir/common_flags.txt insert_flags.txt | |
f67539c2 TL |
97 | cat << EOL >> insert_flags.txt |
98 | --benchmarks=fillseq | |
99 | --threads=1 | |
100 | --disable_wal=1 | |
101 | --use_existing_db=0 | |
102 | --num=$NUM_KEYS | |
103 | EOL | |
11fdf7f2 TL |
104 | |
105 | cp $testdir/common_flags.txt randread_flags.txt | |
f67539c2 TL |
106 | cat << EOL >> randread_flags.txt |
107 | --benchmarks=readrandom | |
108 | --threads=16 | |
109 | --duration=$DURATION | |
110 | --disable_wal=1 | |
111 | --use_existing_db=1 | |
112 | --num=$NUM_KEYS | |
113 | EOL | |
11fdf7f2 TL |
114 | |
115 | cp $testdir/common_flags.txt overwrite_flags.txt | |
f67539c2 TL |
116 | cat << EOL >> overwrite_flags.txt |
117 | --benchmarks=overwrite | |
118 | --threads=1 | |
119 | --duration=$DURATION | |
120 | --disable_wal=1 | |
121 | --use_existing_db=1 | |
122 | --num=$NUM_KEYS | |
123 | EOL | |
11fdf7f2 TL |
124 | |
125 | cp $testdir/common_flags.txt readwrite_flags.txt | |
f67539c2 TL |
126 | cat << EOL >> readwrite_flags.txt |
127 | --benchmarks=readwhilewriting | |
128 | --threads=4 | |
129 | --duration=$DURATION | |
130 | --disable_wal=1 | |
131 | --use_existing_db=1 | |
132 | --num=$NUM_KEYS | |
133 | EOL | |
11fdf7f2 TL |
134 | |
135 | cp $testdir/common_flags.txt writesync_flags.txt | |
f67539c2 TL |
136 | cat << EOL >> writesync_flags.txt |
137 | --benchmarks=overwrite | |
138 | --threads=1 | |
139 | --duration=$DURATION | |
140 | --disable_wal=0 | |
141 | --use_existing_db=1 | |
142 | --sync=1 | |
143 | --num=$NUM_KEYS | |
144 | EOL | |
145 | ||
146 | run_test "rocksdb_insert" run_step insert | |
147 | run_test "rocksdb_overwrite" run_step overwrite | |
148 | run_test "rocksdb_readwrite" run_step readwrite | |
149 | run_test "rocksdb_writesync" run_step writesync | |
150 | run_test "rocksdb_randread" run_step randread | |
7c673cae FG |
151 | |
152 | trap - SIGINT SIGTERM EXIT | |
153 | ||
11fdf7f2 | 154 | run_bsdump |
7c673cae | 155 | rm -f $ROCKSDB_CONF |