#!/bin/bash # Copyright (C) 2014, Linaro Limited. # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # Author: Andrew McDermott THIS_BENCHMARK_DIR="$(cd $(dirname "${BASH_SOURCE[0]}") && pwd -P)" source $THIS_BENCHMARK_DIR/common.sh if [ ! -d $TERAGEN_BASELINE_DIR/${NGIGABYTES}GB ]; then echo "error: ${NGIGABYTES}GB baseline file is missing!" exit 1 fi if [ ! -d $THIS_BENCHMARK_DIR/openjdk8-hadoop-LCA14 ]; then echo "error: openjdk8-hadoop-LCA14 directory is missing; run: git submodule update --init" fi record=0 while getopts ":r" arg; do case $arg in r) record=1 ;; \?) echo "error: '-$OPTARG' invalid option" >&2 exit 1 ;; *) echo "error: unknown option" >&2 exit 1 ;; esac done shift $((OPTIND - 1)) sed -i '/^export JAVA_HOME=/d' $THIS_BENCHMARK_DIR/openjdk8-hadoop-LCA14/conf/hadoop-env.sh echo "export JAVA_HOME=$1" >> $THIS_BENCHMARK_DIR/openjdk8-hadoop-LCA14/conf/hadoop-env.sh cd $THIS_BENCHMARK_DIR/openjdk8-hadoop-LCA14 . env.sh PATH=$1/bin:$PATH which hadoop which java java -version which hdfs set -eu stop-dfs.sh stop-yarn.sh rm -rf $HOME/hadoop-tmp hdfs namenode -format -force start-dfs.sh start-yarn.sh # Need time for the datanodes to materialise. sleep 30 jps hadoop fs -mkdir -p /user/$USER hadoop fs -copyFromLocal $TERAGEN_BASELINE_DIR/${NGIGABYTES}GB /user/$USER mkdir -p $BENCHMARK_RESULTS_DIR trap "stop-dfs.sh; stop-yarn.sh" EXIT function benchmark_terasort() { local jvm_type=$1 local elapsed_time_file=$(mktemp /tmp/benchmark-terasort-XXXXXX.$$) HADOOP_OPTS=-${jvm_type} /usr/bin/time -o $elapsed_time_file -f "%e" terasort ${NGIGABYTES}GB ${NGIGABYTES}GB-sorted hadoop fs -rm -R ${NGIGABYTES}GB-sorted sed -i 's/\..*//' $elapsed_time_file elapsed_time=$(cat $elapsed_time_file) local date_as_epoch=$(date --date="$(date +'%Y-%m-%d')" +%s) if [ $record -eq 1 ]; then echo "$date_as_epoch,$jvm_type,$NGIGABYTES,$elapsed_time" >> $BENCHMARK_RESULTS_DIR/results.csv else echo "RESULT: $date_as_epoch,$jvm_type,$NGIGABYTES,$elapsed_time" fi rm -f $elapsed_time_file } benchmark_terasort $2 $THIS_BENCHMARK_DIR/update-results-db $THIS_BENCHMARK_DIR/print-trend