blob: 8510faeba49c712f13c278e317c71f39dddfedf1 [file]
#!/bin/sh
# - test
# - data_size
# - n_client
# - requests
# - requests_multiple
# - n_pipeline
# - key_len
# - nr_processes
# - cpu_node_bind
# - mem_node_bind
## Redis is an open source (BSD licensed), in-memory data structure store,
## used as a database, cache and message broker. It supports data structures
## such as strings, hashes, lists, sets, sorted sets with range queries,
## bitmaps, hyperloglogs, geospatial indexes with radius queries and streams.
## Redis includes the redis-benchmark utility that simulates running commands
## done by N clients at the same time sending M total queries (it is similar
## to the Apache's ab utility)
. "$LKP_SRC"/lib/reproduce-log.sh
. "$LKP_SRC"/lib/numactl.sh
export PATH="$BENCHMARK_ROOT/redis/bin:$PATH"
: "${nr_processes:=1}"
: "${requests_multiple:=1}"
[ -n "$key_len" ] || {
echo "$(basename $0) key_len must be specified!\n";
exit 1
}
[ -z "$requests" ] && requests=$((key_len * requests_multiple))
proc_key_len=$((key_len/nr_processes))
proc_requests=$((requests/nr_processes))
opt="-r $proc_key_len -n $proc_requests"
[ -n "$test" ] && opt="$opt -t $test"
[ -n "$data_size" ] && opt="$opt -d $data_size"
[ -n "$n_client" ] && opt="$opt -c $n_client"
[ -n "$n_pipeline" ] && opt="$opt -P $n_pipeline"
redis_dir="$TMP"/redis/
rm -rf "$redis_dir"
mkdir -p "$redis_dir"
parse_numa_node_binding "$cpu_node_bind" "$mem_node_bind"
for i in $(seq 1 "$nr_processes")
do
port=$((6379+i))
numa_bind=$(numa_node_binding "$i")
log_test $numa_bind redis-benchmark $opt -p "$port" > "$redis_dir/redis.$i" &
done
wait
cat "$redis_dir"/redis.*