Skip to content

Instantly share code, notes, and snippets.

@sivikt
Created February 26, 2014 20:38
Show Gist options
  • Save sivikt/9238030 to your computer and use it in GitHub Desktop.
Save sivikt/9238030 to your computer and use it in GitHub Desktop.
#!/bin/sh
if [ -z "$1" ]; then
echo "Specify workload file name"
exit 1
fi
if [ -z "$2" ]; then
echo "Specify workload phase"
exit 1
fi
workload=$1
phase=$2
max_heap=$3
key=key
seed_client_ip="10.0.2.52"
seed_client_host="ip-10-0-2-52"
datetime=`date +%Y-%m-%d-%H-%M`
server_workload_log_name=${workload}_${datetime}
client_workload_log_name=${workload}_${datetime}_${HOSTNAME}
ycsb_bench_home=~/cassandra
workloads_status_dir=$ycsb_bench_home/finished
rexec_home=$ycsb_bench_home/remote-exec
logs_dir=~/cassandra-logs
total_cli="9"
rm $workloads_status_dir/*
mkdir -p $workloads_status_dir
mkdir -p $logs_dir
StartServersSar()
{
local local_host=$HOSTNAME
if [[ $local_host == $seed_client_host ]]; then
echo ">> starting sar on all servers"
(cd $rexec_home && sh run_for_hosts.sh serv-hosts start_sar_cmd --yes --params $server_workload_log_name $logs_dir)
fi
}
StartClientSar()
{
echo ">> start local sar"
sar 1 10000 >> $logs_dir/$client_workload_log_name.sar.log 2>&1 &
}
StartWorkload()
{
echo ">> start workload"
(cd $ycsb_bench_home && java -Xmx$max_heap -jar ycsb_workload.jar -P workloads/$workload.workload $phase -s) > "$logs_dir/$client_workload_log_name.log" 2>&1 &
wait $!
}
StopClientSar()
{
echo ">> stop local sar"
killall sar
}
ReportFinished()
{
echo ">> workload finished"
0</dev/null ssh -oStrictHostKeyChecking=no -i $key ec2-user@$seed_client_ip "touch $workloads_status_dir/$HOSTNAME"
sleep 5 # sleep to avoid race conditions
}
StopServersSar()
{
echo ">> trying to stop sar on servers"
local finished_count=`0</dev/null ssh -oStrictHostKeyChecking=no -i $key ec2-user@$seed_client_ip "ls -1 $workloads_status_dir/ | wc -l"`
echo "finished count $finished_count"
if [[ $finished_count == $total_cli ]]; then
echo "send stop signal"
(cd $rexec_home && sh run_for_hosts.sh serv-hosts stop_sar_cmd --yes)
fi
}
StartServersSar
StartClientSar
StartWorkload
StopClientSar
ReportFinished
StopServersSar
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment