diff --git a/bin/benchmark-drivers-start.sh b/bin/benchmark-drivers-start.sh index eca4349..0543d4a 100644 --- a/bin/benchmark-drivers-start.sh +++ b/bin/benchmark-drivers-start.sh @@ -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 @@ -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 @@ -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")"> Driver is started on "${host_name}" with id=${id}" @@ -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")"> 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")"> Driver is stopped on "${host_name} done diff --git a/bin/benchmark-manual-drivers-start.sh b/bin/benchmark-manual-drivers-start.sh index e8e3ecb..1271074 100755 --- a/bin/benchmark-manual-drivers-start.sh +++ b/bin/benchmark-manual-drivers-start.sh @@ -50,6 +50,12 @@ chmod +x $CONFIG_TMP . $CONFIG_TMP rm $CONFIG_TMP +if ! [[ -d ${SCRIPT_DIR}/../output ]] +then + echo "<"$(date +"%H:%M:%S")"> Creating output directory" + mkdir ${SCRIPT_DIR}/../output +fi + # Define user to establish remote ssh session. if [ "${REMOTE_USER}" == "" ]; then REMOTE_USER=$(whoami) @@ -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 diff --git a/bin/benchmark-manual-servers-start.sh b/bin/benchmark-manual-servers-start.sh index 2ed7f48..65baa82 100755 --- a/bin/benchmark-manual-servers-start.sh +++ b/bin/benchmark-manual-servers-start.sh @@ -50,6 +50,12 @@ chmod +x $CONFIG_TMP . $CONFIG_TMP rm $CONFIG_TMP +if ! [[ -d ${SCRIPT_DIR}/../output ]] +then + echo "<"$(date +"%H:%M:%S")"> Creating output directory" + mkdir ${SCRIPT_DIR}/../output +fi + if [ "${CONFIG}" == "" ]; then IFS=',' read -ra cfg <<< "${CONFIGS}" @@ -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} @@ -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'` diff --git a/bin/benchmark-run-all.sh b/bin/benchmark-run-all.sh index 2d1bb83..575873b 100755 --- a/bin/benchmark-run-all.sh +++ b/bin/benchmark-run-all.sh @@ -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")"> 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} @@ -97,3 +104,7 @@ if [ -z "$RESTART_SERVERS" ]; then sleep 1s fi + +CHART_DIR=`cd $folder; pwd` +echo "<"$(date +"%H:%M:%S")"> Creating charts in the ${CHART_DIR} directory" +. ${SCRIPT_DIR}/jfreechart-graph-gen.sh -gm STANDARD -i $folder >> /dev/null 2>&1 \ No newline at end of file diff --git a/bin/benchmark-server-restarter-start.sh b/bin/benchmark-server-restarter-start.sh index f52bb5a..899eca3 100755 --- a/bin/benchmark-server-restarter-start.sh +++ b/bin/benchmark-server-restarter-start.sh @@ -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) @@ -112,7 +112,13 @@ echo "<"$(date +"%H:%M:%S")"> 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="" @@ -141,7 +147,13 @@ do echo "<"$(date +"%H:%M:%S")"> 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. @@ -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")"> Server on ${HOST_NAME} with id=${ID} was started." diff --git a/bin/benchmark-servers-start.sh b/bin/benchmark-servers-start.sh index de6cfd0..f0861e1 100755 --- a/bin/benchmark-servers-start.sh +++ b/bin/benchmark-servers-start.sh @@ -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 @@ -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 @@ -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 @@ -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")"> 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")"> 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")"> 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")"> 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 diff --git a/bin/benchmark-servers-stop.sh b/bin/benchmark-servers-stop.sh index 7d7397e..d94b756 100755 --- a/bin/benchmark-servers-stop.sh +++ b/bin/benchmark-servers-stop.sh @@ -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")"> Server is stopped on "${host_name} done diff --git a/pom.xml b/pom.xml index c998bbe..9319e2b 100644 --- a/pom.xml +++ b/pom.xml @@ -21,7 +21,7 @@ org.yardstickframework yardstick Yardstick - 0.8.0 + 0.8.2 https://github.com/gridgain/yardstick Framework for benchmarks writing.