blob: 5efd9d830f7b7ca07517bcd1f2c61912def25986 [file]
#!/bin/sh
# - nr_processes
# - ip_addr
# - n_recordcount
# - n_operationcount
# - is_readallfields
# - n_readproportion
# - n_updateproportion
# - n_scanproportion
# - n_insertproportion
# - c_requestdistribution
# - ycsb_cpu_node_bind
# - ycsb_mem_node_bind
# - nr_threads
# - preload
##The Yahoo! Cloud Serving Benchmark (YCSB) is an open-source
##specification and program suite for evaluating retrieval and
##maintenance capabilities of computer programs. It is often
##used to compare relative performance of NoSQL database
##management systems.
. "$LKP_SRC"/lib/reproduce-log.sh
. "$LKP_SRC"/lib/numactl.sh
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
export PATH=$BENCHMARK_ROOT/ycsb/ycsb/bin:$PATH
: "${nr_processes:=1}"
proc_n_recordcount=$((n_recordcount/nr_processes))
proc_n_operationcount=$((n_operationcount/nr_processes))
for i in $(seq 1 "$nr_processes")
do
port=$((27016 + i))
cat > "$TMP_RESULT_ROOT/configfile_mongodb.$i" <<EOF
mongodb.url=mongodb://${ip_addr}:$port
mongodb.database=ycsbdb
mongodb.writeConcern=none
EOF
done
if [ -n "$preload" ]; then
cat > "$TMP_RESULT_ROOT"/workload_mongodb_preload <<EOF
recordcount=${proc_n_recordcount}
operationcount=${proc_n_operationcount}
workload=com.yahoo.ycsb.workloads.CoreWorkload
readallfields=${is_readallfields}
readproportion=0
updateproportion=1
scanproportion=${n_scanproportion}
insertproportion=${n_insertproportion}
requestdistribution=uniform
EOF
fi
cat > "$TMP_RESULT_ROOT"/workload_mongodb <<EOF
recordcount=${proc_n_recordcount}
operationcount=${proc_n_operationcount}
workload=com.yahoo.ycsb.workloads.CoreWorkload
readallfields=${is_readallfields}
readproportion=${n_readproportion}
updateproportion=${n_updateproportion}
scanproportion=${n_scanproportion}
insertproportion=${n_insertproportion}
requestdistribution=${c_requestdistribution}
EOF
ycsb_dir="$TMP"/ycsb/
rm -rf "$ycsb_dir"
mkdir -p "$ycsb_dir"
parse_numa_node_binding "$ycsb_cpu_node_bind" "$ycsb_mem_node_bind"
if [ -n "$preload" ]; then
begin=$(date +%s.%N)
for i in $(seq 1 "$nr_processes")
do
args="\
load mongodb \
-P $TMP_RESULT_ROOT/workload_mongodb_preload \
-P $TMP_RESULT_ROOT/configfile_mongodb.$i \
-s \
-threads $nr_threads \
"
numa_bind=$(numa_node_binding "$i")
log_test $numa_bind ycsb $args > /dev/null &
done
wait
end=$(date +%s.%N)
duration=$(echo "$end-$begin" |bc)
echo "preload duration: \$duration"
fi
for i in $(seq 1 "$nr_processes")
do
args="\
run mongodb \
-P $TMP_RESULT_ROOT/workload_mongodb \
-P $TMP_RESULT_ROOT/configfile_mongodb.$i \
-s \
-threads $nr_threads \
"
numa_bind=$(numa_node_binding "$i")
log_test $numa_bind ycsb $args > "$ycsb_dir"/ycsb.$i &
done
wait
cat "$ycsb_dir"/ycsb.*