Skip to content
Open
72 changes: 57 additions & 15 deletions bin/benchmark-drivers-start.sh
Original file line number Diff line number Diff line change
Expand Up @@ -85,19 +85,26 @@ function cleanup() {
pkill -9 -f "Dyardstick.driver"

IFS=',' read -ra hosts0 <<< "${DRIVER_HOSTS}"

for host_name in "${hosts0[@]}";
do
`ssh -o PasswordAuthentication=no ${REMOTE_USER}"@"${host_name} pkill -9 -f "Dyardstick.driver"`
if [[ ${host_name} = "127.0.0.1" || ${host_name} = "localhost" ]]
then
pkill -9 -f "Dyardstick.driver"
else
`ssh -o StrictHostKeyChecking=no -o PasswordAuthentication=no ${REMOTE_USER}"@"${host_name} \
pkill -9 -f "Dyardstick.driver"`
fi
done
}

trap "cleanup; exit" SIGHUP SIGINT SIGTERM SIGQUIT SIGKILL

# Define logs directory.
LOGS_DIR=${SCRIPT_DIR}/../${LOGS_BASE}/logs_drivers
LOGS_DIR=${LOGS_BASE}/logs_drivers

if [[ "${OUTPUT_FOLDER}" == "" ]] && [[ ${CONFIG} != *'-of '* ]] && [[ ${CONFIG} != *'--outputFolder '* ]]; then
folder=results-$(date +"%Y%m%d-%H%M%S")
folder=${SCRIPT_DIR}/../output/results-$(date +"%Y%m%d-%H%M%S")

OUTPUT_FOLDER="--outputFolder ${folder}"
fi
Expand All @@ -111,6 +118,7 @@ id=0
drvNum=$((`echo ${DRIVER_HOSTS} | tr ',' '\n' | wc -l`))

IFS=',' read -ra hosts0 <<< "${DRIVER_HOSTS}"

for host_name in "${hosts0[@]}";
do
if ((${drvNum} > 1)); then
Expand Down Expand Up @@ -147,16 +155,38 @@ do

file_log=${LOGS_DIR}"/"${now}"_id"${id}"_"${host_name}"_"${DS}".log"

ssh -o PasswordAuthentication=no ${REMOTE_USER}"@"${host_name} mkdir -p ${LOGS_DIR}
if echo "${JVM_OPTS}" | grep -i "PrintGC" >/dev/null
then
JVM_OPTS=${JVM_OPTS}" -Xloggc:${LOGS_DIR}/gc-${now0}-driver-id-${id}-${host_name}-${DS}.log"
fi

export JAVA_HOME=${JAVA_HOME}
export MAIN_CLASS='org.yardstickframework.BenchmarkDriverStartUp'
export JVM_OPTS="${JVM_OPTS}${DRIVER_JVM_OPTS} -Dyardstick.driver${id}"
export CP=${CP}
export CUR_DIR=${CUR_DIR}
export PROPS_ENV0=${PROPS_ENV}
export HOST_NAME=${host_name}

ssh -o PasswordAuthentication=no ${REMOTE_USER}"@"${host_name} \
"JAVA_HOME='${JAVA_HOME}'" \
"MAIN_CLASS='org.yardstickframework.BenchmarkDriverStartUp'" "JVM_OPTS='${JVM_OPTS}${DRIVER_JVM_OPTS} -Dyardstick.driver${id}'" \
"CP='${CP}'" "CUR_DIR='${CUR_DIR}'" "PROPS_ENV0='${PROPS_ENV}'" \
"nohup ${SCRIPT_DIR}/benchmark-bootstrap.sh ${cfg} "--config" ${CONFIG_INCLUDE} "--logsFolder" ${LOGS_DIR} > ${file_log} 2>& 1 &"
if [[ ${host_name} = "127.0.0.1" || ${host_name} = "localhost" ]]
then
mkdir -p ${LOGS_DIR}

nohup ${SCRIPT_DIR}/benchmark-bootstrap.sh ${cfg} "--config" ${CONFIG_INCLUDE} "--logsFolder" ${LOGS_DIR} > ${file_log} 2>& 1 &

ssh -o PasswordAuthentication=no ${REMOTE_USER}"@"${host_name} "HOST_NAME='${host_name}'" \
${SCRIPT_DIR}/benchmark-wait-driver-up.sh
else
ssh -o StrictHostKeyChecking=no -o PasswordAuthentication=no ${REMOTE_USER}"@"${host_name} mkdir -p ${LOGS_DIR}

ssh -o StrictHostKeyChecking=no -o PasswordAuthentication=no ${REMOTE_USER}"@"${host_name} \
"JAVA_HOME='${JAVA_HOME}'" \
"MAIN_CLASS='${MAIN_CLASS}'" "JVM_OPTS='${JVM_OPTS}'" \
"CP='${CP}'" "CUR_DIR='${CUR_DIR}'" "PROPS_ENV0='${PROPS_ENV}'" \
"nohup ${SCRIPT_DIR}/benchmark-bootstrap.sh ${cfg} "--config" ${CONFIG_INCLUDE} "--logsFolder" ${LOGS_DIR} > ${file_log} 2>& 1 &"

ssh -o StrictHostKeyChecking=no -o PasswordAuthentication=no ${REMOTE_USER}"@"${host_name} "HOST_NAME='${host_name}'" \
${SCRIPT_DIR}/benchmark-wait-driver-up.sh
fi

echo "<"$(date +"%H:%M:%S")"><yardstick> Driver is started on "${host_name}" with id=${id}"

Expand All @@ -165,12 +195,24 @@ done

for host_name in "${hosts0[@]}";
do
ssh -o PasswordAuthentication=no ${REMOTE_USER}"@"${host_name} ${SCRIPT_DIR}/benchmark-wait-driver-finish.sh
if [[ ${host_name} = "127.0.0.1" || ${host_name} = "localhost" ]]
then
${SCRIPT_DIR}/benchmark-wait-driver-finish.sh

echo "<"$(date +"%H:%M:%S")"><yardstick> Driver is stopped on "${host_name}
# Create marker file denoting that subfolders contain results from multiple drivers.
if ((${drvNum} > 1)); then
touch ${CUR_DIR}/${OUTPUT_FOLDER#--outputFolder }"/.multiple-drivers"
fi
else
ssh -o StrictHostKeyChecking=no -o PasswordAuthentication=no ${REMOTE_USER}"@"${host_name} \
${SCRIPT_DIR}/benchmark-wait-driver-finish.sh

# Create marker file denoting that subfolders contain results from multiple drivers.
if ((${drvNum} > 1)); then
ssh -o PasswordAuthentication=no ${REMOTE_USER}"@"${host_name} touch ${CUR_DIR}/${OUTPUT_FOLDER#--outputFolder }"/.multiple-drivers"
# Create marker file denoting that subfolders contain results from multiple drivers.
if ((${drvNum} > 1)); then
ssh -o StrictHostKeyChecking=no -o PasswordAuthentication=no ${REMOTE_USER}"@"${host_name} \
touch ${CUR_DIR}/${OUTPUT_FOLDER#--outputFolder }"/.multiple-drivers"
fi
fi

echo "<"$(date +"%H:%M:%S")"><yardstick> Driver is stopped on "${host_name}
done
12 changes: 9 additions & 3 deletions bin/benchmark-manual-drivers-start.sh
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,12 @@ chmod +x $CONFIG_TMP
. $CONFIG_TMP
rm $CONFIG_TMP

if ! [[ -d ${SCRIPT_DIR}/../output ]]
then
echo "<"$(date +"%H:%M:%S")"><yardstick> Creating output directory"
mkdir ${SCRIPT_DIR}/../output
fi

# Define user to establish remote ssh session.
if [ "${REMOTE_USER}" == "" ]; then
REMOTE_USER=$(whoami)
Expand Down Expand Up @@ -88,16 +94,16 @@ function cleanup() {
trap "cleanup; exit" SIGHUP SIGINT SIGTERM SIGQUIT SIGKILL

# Define logs directory.
LOGS_BASE=logs-$(date +"%Y%m%d-%H%M%S")
LOGS_BASE=${SCRIPT_DIR}/../output/logs-$(date +"%Y%m%d-%H%M%S")

LOGS_DIR=${SCRIPT_DIR}/../${LOGS_BASE}/logs_drivers
LOGS_DIR=${LOGS_BASE}/logs_drivers

if [ ! -d "${LOGS_DIR}" ]; then
mkdir -p ${LOGS_DIR}
fi

if [[ "${OUTPUT_FOLDER}" == "" ]] && [[ ${CONFIG} != *'-of '* ]] && [[ ${CONFIG} != *'--outputFolder '* ]]; then
folder=results-$(date +"%Y%m%d-%H%M%S")
folder=${SCRIPT_DIR}/../output/results-$(date +"%Y%m%d-%H%M%S")

OUTPUT_FOLDER="--outputFolder ${folder}"
fi
Expand Down
12 changes: 9 additions & 3 deletions bin/benchmark-manual-servers-start.sh
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,12 @@ chmod +x $CONFIG_TMP
. $CONFIG_TMP
rm $CONFIG_TMP

if ! [[ -d ${SCRIPT_DIR}/../output ]]
then
echo "<"$(date +"%H:%M:%S")"><yardstick> Creating output directory"
mkdir ${SCRIPT_DIR}/../output
fi

if [ "${CONFIG}" == "" ]; then
IFS=',' read -ra cfg <<< "${CONFIGS}"

Expand Down Expand Up @@ -107,9 +113,9 @@ function cleanup() {
trap "cleanup; exit" SIGHUP SIGINT SIGTERM SIGQUIT SIGKILL

# Define logs directory.
LOGS_BASE=logs-$(date +"%Y%m%d-%H%M%S")
LOGS_BASE=${SCRIPT_DIR}/../output/logs-$(date +"%Y%m%d-%H%M%S")

LOGS_DIR=${SCRIPT_DIR}/../${LOGS_BASE}/logs_servers
LOGS_DIR=${LOGS_BASE}/logs_servers

if [ ! -d "${LOGS_DIR}" ]; then
mkdir -p ${LOGS_DIR}
Expand All @@ -119,7 +125,7 @@ CUR_DIR=$(pwd)

for id in $(eval echo {1..$SERVER_NODES});
do
CONFIG_PRM="-id ${cntr} ${CONFIG}"
CONFIG_PRM="-id ${id} ${CONFIG}"

suffix=`echo "${CONFIG}" | tail -c 60 | sed 's/ *$//g'`

Expand Down
15 changes: 13 additions & 2 deletions bin/benchmark-run-all.sh
Original file line number Diff line number Diff line change
Expand Up @@ -55,9 +55,16 @@ if [ "${CONFIGS}" == "" ]; then
exit 1
fi

folder=results-$(date +"%Y%m%d-%H%M%S")
if ! [[ -d ${SCRIPT_DIR}/../output ]]
then
echo "<"$(date +"%H:%M:%S")"><yardstick> Creating output directory"
mkdir ${SCRIPT_DIR}/../output
fi

folder=${SCRIPT_DIR}/../output/results-$(date +"%Y%m%d-%H%M%S")

export LOGS_BASE=logs-$(date +"%Y%m%d-%H%M%S")
LOGS_BASE=${SCRIPT_DIR}/../output/logs-$(date +"%Y%m%d-%H%M%S")
export LOGS_BASE

if [ -z "$RESTART_SERVERS" ]; then
/bin/bash ${SCRIPT_DIR}/benchmark-servers-start.sh ${CONFIG_INCLUDE}
Expand Down Expand Up @@ -97,3 +104,7 @@ if [ -z "$RESTART_SERVERS" ]; then

sleep 1s
fi

CHART_DIR=`cd $folder; pwd`
echo "<"$(date +"%H:%M:%S")"><yardstick> Creating charts in the ${CHART_DIR} directory"
. ${SCRIPT_DIR}/jfreechart-graph-gen.sh -gm STANDARD -i $folder >> /dev/null 2>&1
37 changes: 31 additions & 6 deletions bin/benchmark-server-restarter-start.sh
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@ if [ "${PERIOD}" == "" ]; then
fi

if [ "${SERVERS_LOGS_DIR}" = "" ]; then
SERVERS_LOGS_DIR=${SCRIPT_DIR}/../${LOGS_BASE}/logs_servers
SERVERS_LOGS_DIR=${LOGS_BASE}/logs_servers
fi

CUR_DIR=$(pwd)
Expand All @@ -112,7 +112,13 @@ echo "<"$(date +"%H:%M:%S")"><yardstick> Server restarer started for ${HOST_NAME
#
# Main.
#
ssh -o PasswordAuthentication=no ${REMOTE_USER}"@"${HOST_NAME} mkdir -p ${SERVERS_LOGS_DIR}

if [[ ${HOST_NAME} = "127.0.0.1" || ${HOST_NAME} = "localhost" ]]
then
mkdir -p ${SERVERS_LOGS_DIR}
else
ssh -o StrictHostKeyChecking=no -o PasswordAuthentication=no ${REMOTE_USER}"@"${HOST_NAME} mkdir -p ${SERVERS_LOGS_DIR}
fi

DS=""

Expand Down Expand Up @@ -141,7 +147,13 @@ do
echo "<"$(date +"%H:%M:%S")"><yardstick> Killing server on "${HOST_NAME}" with id=${ID}"

# Kill only first found yardstick.server on the host
ssh -o PasswordAuthentication=no ${REMOTE_USER}"@"${HOST_NAME} "pkill -9 -f 'Dyardstick.server${ID}'"

if [[ ${HOST_NAME} = "127.0.0.1" || ${HOST_NAME} = "localhost" ]]
then
pkill -9 -f "Dyardstick.server${ID}"
else
ssh -o StrictHostKeyChecking=no -o PasswordAuthentication=no ${REMOTE_USER}"@"${HOST_NAME} "pkill -9 -f 'Dyardstick.server${ID}'"
fi

sleep ${PAUSE} # Wait for process stopping.

Expand All @@ -153,11 +165,24 @@ do

server_file_log=${SERVERS_LOGS_DIR}"/"${now}"_id"${ID}"-"${cntr}"_"${HOST_NAME}${DS}".log"

ssh -o PasswordAuthentication=no ${REMOTE_USER}"@"${HOST_NAME} \
export JAVA_HOME=${JAVA_HOME}
export MAIN_CLASS='org.yardstickframework.BenchmarkServerStartUp'
export JVM_OPTS="${JVM_OPTS}${SERVER_JVM_OPTS} -Dyardstick.server${id}"
export CP=${CP}
export CUR_DIR=${CUR_DIR}
export PROPS_ENV0=${PROPS_ENV}

if [[ ${HOST_NAME} = "127.0.0.1" || ${HOST_NAME} = "localhost" ]]
then
nohup ${SCRIPT_DIR}/benchmark-bootstrap.sh ${CONFIG_PRM} "--config" ${CONFIG_INCLUDE} "--logsFolder" ${LOGS_DIR} \
"--remoteuser" ${REMOTE_USER} "--remoteHostName" ${host_name} > ${file_log} 2>& 1 &
else
ssh -o StrictHostKeyChecking=no -o PasswordAuthentication=no ${REMOTE_USER}"@"${HOST_NAME} \
"JAVA_HOME='${JAVA_HOME}'" \
"MAIN_CLASS='org.yardstickframework.BenchmarkServerStartUp'" \
"JVM_OPTS='${JVM_OPTS}${SERVER_JVM_OPTS} -Dyardstick.server${ID}-${cntr}'" "CP='${CP}'" "CUR_DIR='${CUR_DIR}'" "PROPS_ENV0='${PROPS_ENV}'" \
"MAIN_CLASS='${MAIN_CLASS}'" "JVM_OPTS='${JVM_OPTS}'" "CP='${CP}'" \
"CUR_DIR='${CUR_DIR}'" "PROPS_ENV0='${PROPS_ENV}'" \
"nohup ${SCRIPT_DIR}/benchmark-bootstrap.sh ${CONFIG} "--config" ${CONFIG_INCLUDE} > ${server_file_log} 2>& 1 &"
fi

echo "<"$(date +"%H:%M:%S")"><yardstick> Server on ${HOST_NAME} with id=${ID} was started."

Expand Down
51 changes: 39 additions & 12 deletions bin/benchmark-servers-start.sh
Original file line number Diff line number Diff line change
Expand Up @@ -89,17 +89,17 @@ function cleanup() {
IFS=',' read -ra hosts0 <<< "${SERVER_HOSTS}"
for host_name in "${hosts0[@]}";
do
`ssh -o PasswordAuthentication=no ${REMOTE_USER}"@"${host_name} pkill -9 -f "Dyardstick.server"`
`ssh -o StrictHostKeyChecking=no -o PasswordAuthentication=no ${REMOTE_USER}"@"${host_name} pkill -9 -f "Dyardstick.server"`
done
}

trap "cleanup; exit" SIGHUP SIGINT SIGTERM SIGQUIT SIGKILL

# Define logs directory.
LOGS_DIR=${SCRIPT_DIR}/../${LOGS_BASE}/logs_servers
LOGS_DIR=${LOGS_BASE}/logs_servers

if [ "${RESTARTERS_LOGS_DIR}" = "" ]; then
RESTARTERS_LOGS_DIR=${SCRIPT_DIR}/../${LOGS_BASE}/logs_restarters
RESTARTERS_LOGS_DIR=${LOGS_BASE}/logs_restarters
fi

if [[ "${RESTART_SERVERS}" != "" ]] && [[ "${RESTART_SERVERS}" != "true" ]]; then
Expand All @@ -126,6 +126,7 @@ do
# Extract description.
if [[ "${RESTART_SERVERS}" != "" ]]; then
IFS=' ' read -ra cfg0 <<< "${CONFIG}"

for cfg00 in "${cfg0[@]}";
do
if [[ ${found} == 'true' ]]; then
Expand All @@ -141,13 +142,36 @@ do

file_log=${LOGS_DIR}"/"${now}"_id"${id}"_"${host_name}${DS}".log"

ssh -o PasswordAuthentication=no ${REMOTE_USER}"@"${host_name} mkdir -p ${LOGS_DIR}
if echo "${JVM_OPTS}" | grep -i "PrintGC" >/dev/null
then
JVM_OPTS=${JVM_OPTS}" -Xloggc:${LOGS_DIR}/gc_${now0}_server_id_${id}_${host_name}_${DS}.log"
fi

export JAVA_HOME=${JAVA_HOME}
export MAIN_CLASS='org.yardstickframework.BenchmarkServerStartUp'
export JVM_OPTS="${JVM_OPTS}${SERVER_JVM_OPTS} -Dyardstick.server${id}"
export CP=${CP}
export CUR_DIR=${CUR_DIR}
export PROPS_ENV0=${PROPS_ENV}

if [[ ${host_name} = "127.0.0.1" || ${host_name} = "localhost" ]]
then
mkdir -p ${LOGS_DIR}

nohup ${SCRIPT_DIR}/benchmark-bootstrap.sh ${CONFIG_PRM} "--config" ${CONFIG_INCLUDE} "--logsFolder" ${LOGS_DIR} \
"--remoteuser" ${REMOTE_USER} "--remoteHostName" ${host_name} > ${file_log} 2>& 1 &
else
ssh -o StrictHostKeyChecking=no -o PasswordAuthentication=no ${REMOTE_USER}"@"${host_name} mkdir -p ${LOGS_DIR}

ssh -o StrictHostKeyChecking=no -o PasswordAuthentication=no ${REMOTE_USER}"@"${host_name} \
"JAVA_HOME='${JAVA_HOME}'" \
"MAIN_CLASS='${MAIN_CLASS}'" "JVM_OPTS='${JVM_OPTS}'" "CP='${CP}'" \
"CUR_DIR='${CUR_DIR}'" "PROPS_ENV0='${PROPS_ENV}'" \
"nohup ${SCRIPT_DIR}/benchmark-bootstrap.sh ${CONFIG_PRM} "--config" ${CONFIG_INCLUDE} "--logsFolder" ${LOGS_DIR} \
"--remoteuser" ${REMOTE_USER} "--remoteHostName" ${host_name} > ${file_log} 2>& 1 &"
fi


ssh -o PasswordAuthentication=no ${REMOTE_USER}"@"${host_name} \
"JAVA_HOME='${JAVA_HOME}'" \
"MAIN_CLASS='org.yardstickframework.BenchmarkServerStartUp'" "JVM_OPTS='${JVM_OPTS}${SERVER_JVM_OPTS} -Dyardstick.server${id}'" "CP='${CP}'" \
"CUR_DIR='${CUR_DIR}'" "PROPS_ENV0='${PROPS_ENV}'" \
"nohup ${SCRIPT_DIR}/benchmark-bootstrap.sh ${CONFIG_PRM} "--config" ${CONFIG_INCLUDE} "--logsFolder" ${LOGS_DIR} "--remoteuser" ${REMOTE_USER} "--remoteHostName" ${host_name} > ${file_log} 2>& 1 &"

# Start a restarter if needed.
if [[ "${RESTART_SERVERS}" != "" ]] && [[ "${RESTART_SERVERS}" != "true" ]]; then
Expand All @@ -166,11 +190,14 @@ do
if [[ "${delay}" != "" ]] && [[ "${pause}" != "" ]] && [[ "${period}" != "" ]] ; then
file_log=${RESTARTERS_LOGS_DIR}"/"${now}"_id"${id}"_"${host_name}".log"

nohup ${SCRIPT_DIR}/benchmark-server-restarter-start.sh "${host_name}" "${id}" "${CONFIG_PRM}" "${delay}" "${pause}" "${period}" "${CONFIG_INCLUDE}" > ${file_log} 2>& 1 &
nohup ${SCRIPT_DIR}/benchmark-server-restarter-start.sh "${host_name}" "${id}" "${CONFIG_PRM}" \
"${delay}" "${pause}" "${period}" "${CONFIG_INCLUDE}" > ${file_log} 2>& 1 &

echo "<"$(date +"%H:%M:%S")"><yardstick> Server restarter is started for ${host_to_restart} with id=${id} and config '...${suffix}', warmup delay ${delay} sec., pause ${pause} sec. and period ${period} sec."
echo "<"$(date +"%H:%M:%S")"><yardstick> Server restarter is started for ${host_to_restart} \
with id=${id} and config '...${suffix}', warmup delay ${delay} sec., pause ${pause} sec. and period ${period} sec."
else
echo "<"$(date +"%H:%M:%S")"><yardstick> Failed to start a server restarter for host ${host_to_restart} with id=${id}. Next params should not be empty: [warmup delay='${delay}', pause='${pause}', period='${period}']"
echo "<"$(date +"%H:%M:%S")"><yardstick> Failed to start a server restarter for host \
${host_to_restart} with id=${id}. Next params should not be empty: [warmup delay='${delay}', pause='${pause}', period='${period}']"
fi
fi
done
Expand Down
8 changes: 7 additions & 1 deletion bin/benchmark-servers-stop.sh
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,13 @@ fi
IFS=',' read -ra hosts0 <<< "${SERVER_HOSTS}"
for host_name in "${hosts0[@]}";
do
`ssh -o PasswordAuthentication=no ${REMOTE_USER}"@"${host_name} pkill -9 -f "Dyardstick.server"`
if [[ ${host_name} = "127.0.0.1" || ${host_name} = "localhost" ]]
then
pkill -9 -f "Dyardstick.server"

else
`ssh -o PasswordAuthentication=no ${REMOTE_USER}"@"${host_name} pkill -9 -f "Dyardstick.server"`
fi

echo "<"$(date +"%H:%M:%S")"><yardstick> Server is stopped on "${host_name}
done
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
<groupId>org.yardstickframework</groupId>
<artifactId>yardstick</artifactId>
<name>Yardstick</name>
<version>0.8.0</version>
<version>0.8.2</version>

<url>https://github.com/gridgain/yardstick</url>
<description>Framework for benchmarks writing.</description>
Expand Down