364 lines
9.4 KiB
Bash
Executable File
364 lines
9.4 KiB
Bash
Executable File
#!/bin/sh
|
|
TEST_MACHINE1='SERVER_IP1'
|
|
TEST_MACHINE2='SERVER_IP2'
|
|
TEST_MACHINE3='SERVER_IP3'
|
|
USER_NAME='USERNAME'
|
|
# use your own data dir path
|
|
TARGET_PATH='/yourworkdir'
|
|
|
|
function kill_server_process
|
|
{
|
|
ssh $USERNAME@$TEST_MACHINE1 bash -s << EOF
|
|
killall -9 test_palf_bench_server;
|
|
EOF
|
|
ssh $USERNAME@$TEST_MACHINE2 bash -s << EOF
|
|
killall -9 test_palf_bench_server;
|
|
EOF
|
|
ssh $USERNAME@$TEST_MACHINE3 bash -s << EOF
|
|
killall -9 test_palf_bench_server;
|
|
EOF
|
|
echo "kill_server_process success"
|
|
}
|
|
|
|
function cleanenv
|
|
{
|
|
ssh $USERNAME@$TEST_MACHINE1 bash -s << EOF
|
|
killall -9 test_palf_bench_server;
|
|
cd $TARGET_PATH;
|
|
rm -rf palf_cluster_bench_server/;
|
|
rm -rf test_palf_bench_server;
|
|
rm -rf *so;
|
|
EOF
|
|
ssh $USERNAME@$TEST_MACHINE2 bash -s << EOF
|
|
killall -9 test_palf_bench_server;
|
|
cd $TARGET_PATH;
|
|
rm -rf palf_cluster_bench_server/;
|
|
rm -rf test_palf_bench_server;
|
|
rm -rf *so;
|
|
EOF
|
|
ssh $USERNAME@$TEST_MACHINE3 bash -s << EOF
|
|
killall -9 test_palf_bench_server;
|
|
cd $TARGET_PATH;
|
|
rm -rf palf_cluster_bench_server/;
|
|
rm -rf test_palf_bench_server;
|
|
rm -rf *so;
|
|
EOF
|
|
echo "cleanenv success"
|
|
}
|
|
|
|
function send_server_binary
|
|
{
|
|
cleanenv
|
|
find ../../ -name *.so | xargs -I {} scp {} $USERNAME@$TEST_MACHINE1:$TARGET_PATH
|
|
scp test_palf_bench_server $USERNAME@$TEST_MACHINE1:$TARGET_PATH
|
|
ssh $USERNAME@$TEST_MACHINE1 bash -s << EOF
|
|
cd $TARGET_PATH;
|
|
scp *.so $USERNAME@$TEST_MACHINE2:$TARGET_PATH
|
|
scp test_palf_bench_server $USERNAME@$TEST_MACHINE2:$TARGET_PATH
|
|
scp *.so $USERNAME@$TEST_MACHINE3:$TARGET_PATH
|
|
scp test_palf_bench_server $USERNAME@$TEST_MACHINE3:$TARGET_PATH
|
|
EOF
|
|
echo "send_server_binary success"
|
|
}
|
|
|
|
# thread_num
|
|
# log_size
|
|
function startserver
|
|
{
|
|
ssh $USERNAME@$TEST_MACHINE1 bash -s << EOF
|
|
export LD_LIBRARY_PATH=$TARGET_PATH;
|
|
cd $TARGET_PATH;
|
|
./test_palf_bench_server $1 $2 > /dev/null 2>&1 &
|
|
EOF
|
|
ssh $USERNAME@$TEST_MACHINE2 bash -s << EOF
|
|
export LD_LIBRARY_PATH=$TARGET_PATH;
|
|
cd $TARGET_PATH;
|
|
./test_palf_bench_server $1 $2 > /dev/null 2>&1 &
|
|
EOF
|
|
ssh $USERNAME@$TEST_MACHINE3 bash -s << EOF
|
|
export LD_LIBRARY_PATH=$TARGET_PATH;
|
|
cd $TARGET_PATH;
|
|
./test_palf_bench_server $1 $2 > /dev/null 2>&1 &
|
|
EOF
|
|
sleep 5
|
|
echo "startserver success"
|
|
}
|
|
|
|
# thread_num
|
|
# log_size
|
|
# server no
|
|
function start_one_server
|
|
{
|
|
SERVER=""
|
|
if [[ $3 == '1' ]];
|
|
then
|
|
SERVER=TEST_MACHINE1
|
|
elif [[ $3 == '2' ]];
|
|
then
|
|
SERVER=TEST_MACHINE2
|
|
elif [[ $3 == '3' ]];
|
|
then
|
|
SERVER=TEST_MACHINE3
|
|
else
|
|
echo "invalid arguments"
|
|
fi;
|
|
ssh $USERNAME@$SERVER bash -s << EOF
|
|
export LD_LIBRARY_PATH=$TARGET_PATH;
|
|
cd $TARGET_PATH;
|
|
./test_palf_bench_server $1 $2 > /dev/null 2>&1
|
|
EOF
|
|
}
|
|
|
|
function start_local_client()
|
|
{
|
|
# $1 thread_number
|
|
# $2 nbytes
|
|
# $3 palf_group_number
|
|
# $4 replica_num
|
|
echo "start local client" $@
|
|
./test_palf_bench_client $1 $2 $3 $4
|
|
}
|
|
|
|
|
|
# $1 thread_number
|
|
# $2 nbytes
|
|
# $3 replica_num
|
|
# $4 freeze_us
|
|
# $5 experiment name
|
|
function generate_result
|
|
{
|
|
result_dir_name="palf_raw_result_"$5
|
|
append_result_name=$result_dir_name"/palf_append_"$1"_"$2"_"$3"_"$4".result"
|
|
io_result_name=$result_dir_name"/palf_io_"$1"_"$2"_"$3"_"$4".result"
|
|
group_result_name=$result_dir_name"/palf_group_"$1"_"$2"_"$3"_"$4".result"
|
|
|
|
ssh $USERNAME@$TEST_MACHINE1 bash -s << EOF
|
|
cd $TARGET_PATH;
|
|
mkdir -p $result_dir_name;
|
|
grep l_append palf_cluster_bench_server/palf_cluster_bench_server.log | grep -v 'append_cnt=[0-9],' > $append_result_name;
|
|
grep inner_write_impl_ palf_cluster_bench_server/palf_cluster_bench_server.log | grep -v 'l_io_cnt=[0-9],' > $io_result_name;
|
|
grep 'GROUP LOG INFO' palf_cluster_bench_server/palf_cluster_bench_server.log | grep -v 'total_group_log_cnt=[0-9],' > $group_result_name;
|
|
EOF
|
|
ssh $USERNAME@$TEST_MACHINE2 bash -s << EOF
|
|
cd $TARGET_PATH;
|
|
mkdir -p $result_dir_name;
|
|
grep l_append palf_cluster_bench_server/palf_cluster_bench_server.log | grep -v 'append_cnt=[0-9],' > $append_result_name;
|
|
grep inner_write_impl_ palf_cluster_bench_server/palf_cluster_bench_server.log | grep -v 'l_io_cnt=[0-9],' > $io_result_name;
|
|
grep 'GROUP LOG INFO' palf_cluster_bench_server/palf_cluster_bench_server.log | grep -v 'total_group_log_cnt=[0-9],' > $group_result_name;
|
|
EOF
|
|
ssh $USERNAME@$TEST_MACHINE3 bash -s << EOF
|
|
cd $TARGET_PATH;
|
|
mkdir -p $result_dir_name;
|
|
grep l_append palf_cluster_bench_server/palf_cluster_bench_server.log | grep -v 'append_cnt=[0-9],' > $append_result_name;
|
|
grep inner_write_impl_ palf_cluster_bench_server/palf_cluster_bench_server.log | grep -v 'l_io_cnt=[0-9],' > $io_result_name;
|
|
grep 'GROUP LOG INFO' palf_cluster_bench_server/palf_cluster_bench_server.log | grep -v 'total_group_log_cnt=[0-9],' > $group_result_name;
|
|
EOF
|
|
}
|
|
|
|
|
|
|
|
# $1 thread_number
|
|
# $2 nbytes
|
|
# $3 palf_group_number
|
|
# $4 replica_num
|
|
# $5 freeze_us
|
|
# $6 exp1,exp2
|
|
function run_experiment_once
|
|
{
|
|
send_server_binary
|
|
echo "start experiment: "$6", thread_num: " $1 "log_size: " $2 " freeze_us: " $5
|
|
kill_server_process
|
|
startserver $1 $2
|
|
./test_palf_bench_client $1 $2 $3 $4
|
|
sleep 20
|
|
kill_server_process
|
|
generate_result $1 $2 $4 $5 $6
|
|
}
|
|
|
|
# $1 thread_number
|
|
# $2 nbytes
|
|
# $3 palf_group_number
|
|
# $4 replica_num
|
|
# $5 freeze_us
|
|
# $6 exp1,exp2
|
|
# $7 leader/follower
|
|
function run_experiment_once_with_failure
|
|
{
|
|
# send_server_binary
|
|
echo "start experiment: "$6", thread_num: " $1 "log_size: " $2 " freeze_us: " $5
|
|
kill_server_process
|
|
startserver $1 $2
|
|
./test_palf_bench_client $1 $2 $3 $4
|
|
sleep 20
|
|
FAIL_MACHINE=""
|
|
if [[ $7 == 'leader' ]];
|
|
then
|
|
FAIL_MACHINE=$TEST_MACHINE1
|
|
else
|
|
FAIL_MACHINE=$TEST_MACHINE2
|
|
fi;
|
|
ssh $USERNAME@$FAIL_MACHINE bash -s << EOF
|
|
killall -9 test_palf_bench_server;
|
|
EOF
|
|
sleep 30
|
|
kill_server_process
|
|
generate_result $1 $2 $4 $5 $6
|
|
}
|
|
|
|
|
|
# $1 thread_number
|
|
# $2 nbytes
|
|
# $3 palf_group_number
|
|
# $4 replica_num
|
|
# $5 freeze_us
|
|
# $6 exp1,exp2
|
|
# $7 leader/follower
|
|
function run_experiment_once_measure_reconfirm
|
|
{
|
|
send_server_binary
|
|
echo "start experiment: "$6", thread_num: " $1 "log_size: " $2 " freeze_us: " $5
|
|
kill_server_process
|
|
startserver $1 $2
|
|
./test_palf_bench_client $1 $2 $3 $4
|
|
loop_count=100
|
|
round_idx=0
|
|
fail_server_idx=1
|
|
while [ $round_idx -lt loop_count ];
|
|
do
|
|
sleep 10
|
|
let round_idx++
|
|
done;
|
|
|
|
FAIL_MACHINE=""
|
|
if [[ $7 == 'leader' ]];
|
|
then
|
|
FAIL_MACHINE=$TEST_MACHINE1
|
|
else
|
|
FAIL_MACHINE=$TEST_MACHINE2
|
|
fi;
|
|
ssh $USERNAME@$FAIL_MACHINE bash -s << EOF
|
|
killall -9 test_palf_bench_server;
|
|
EOF
|
|
sleep 30
|
|
kill_server_process
|
|
generate_result $1 $2 $4 $5 $6
|
|
}
|
|
|
|
function experiment1
|
|
{
|
|
log_size_array=(32 64 128 256 512 1024 2048 4096 8192)
|
|
|
|
thread_num_n_max=17
|
|
|
|
run_round=1
|
|
thread_num_n=1
|
|
while [ $thread_num_n -lt $thread_num_n_max ]
|
|
do
|
|
thread_num=1
|
|
let thread_num="500*thread_num_n"
|
|
let thread_num_n++
|
|
for log_size in ${log_size_array[@]}
|
|
do
|
|
echo "start run experiment1, round: " $run_round ", thread_num: " $thread_num "log_size: " $log_size
|
|
run_experiment_once $thread_num $log_size 1 3 1000 exp1_wo_reduce
|
|
let run_round++
|
|
done;
|
|
done;
|
|
}
|
|
|
|
# test for figure, less clients
|
|
function experiment1_less_clients
|
|
{
|
|
send_server_binary
|
|
log_size_array=(512)
|
|
thread_numbers=(1 2 5 10 20 50 100 200 500)
|
|
|
|
run_round=1
|
|
for thread_num in ${thread_numbers[@]}
|
|
do
|
|
for log_size in ${log_size_array[@]}
|
|
do
|
|
echo "start run experiment1_less_clients, round: " $run_round ", thread_num: " $thread_num "log_size: " $log_size
|
|
run_experiment_once $thread_num $log_size 1 3 1000 exp1_less_clients
|
|
let run_round++
|
|
done;
|
|
done;
|
|
|
|
}
|
|
|
|
# test freeze logs right now
|
|
function experiment3
|
|
{
|
|
log_size_array=(512)
|
|
|
|
thread_num_n_max=17
|
|
|
|
run_round=1
|
|
thread_num_n=3
|
|
while [ $thread_num_n -lt $thread_num_n_max ]
|
|
do
|
|
thread_num=1
|
|
let thread_num="500*thread_num_n"
|
|
let thread_num_n++
|
|
for log_size in ${log_size_array[@]}
|
|
do
|
|
echo "start run experiment3, round: " $run_round ", thread_num: " $thread_num "log_size: " $log_size
|
|
run_experiment_once $thread_num $log_size 1 3 1000 exp3
|
|
let run_round++
|
|
done;
|
|
break
|
|
done;
|
|
}
|
|
|
|
# freeze immediately or freeze adaptively
|
|
function experiment4
|
|
{
|
|
send_server_binary
|
|
run_round=1
|
|
|
|
log_size_array=(0)
|
|
# log_size_array=(512)
|
|
# thread_numbers=(1 2 5 10 20 50 100 200 500 1000 2000)
|
|
thread_numbers=(500)
|
|
|
|
for thread_num in ${thread_numbers[@]}
|
|
do
|
|
for log_size in ${log_size_array[@]}
|
|
do
|
|
echo "start run experiment4, round: " $run_round ", thread_num: " $thread_num "log_size: " $log_size
|
|
# run_experiment_once $thread_num $log_size 1 3 1000 exp4-noaggre
|
|
# run_experiment_once $thread_num $log_size 1 3 1000 exp4-period
|
|
run_experiment_once $thread_num $log_size 1 3 1000 exp4-adaptively
|
|
# run_experiment_once $thread_num $log_size 1 3 1000 exp4-feedback
|
|
let run_round++
|
|
done;
|
|
done;
|
|
}
|
|
|
|
function experiment5
|
|
{
|
|
send_server_binary
|
|
run_round=1
|
|
|
|
thread_num=5000
|
|
log_size=512
|
|
|
|
echo "start run experiment5, round: " $run_round ", thread_num: " $thread_num "log_size: " $log_size
|
|
run_experiment_once_with_failure $thread_num $log_size 1 3 1000 exp5_leader_failure leader
|
|
|
|
# echo "start run experiment5, round: " $run_round ", thread_num: " $thread_num "log_size: " $log_size
|
|
# run_experiment_once_with_failure $thread_num $log_size 1 3 1000 exp5_follower_failure follower
|
|
}
|
|
|
|
function main
|
|
{
|
|
# run_experiment_once 100 16 1 3 1000 exp_test_bw
|
|
# experiment1
|
|
# send_server_binary
|
|
# experiment4
|
|
# experiment1_less_clients
|
|
# experiment5
|
|
run_experiment_once 1500 512 1 3 1000 exp_test
|
|
}
|
|
|
|
main "$@" |