diff --git a/bin/install-dependencies.sh b/bin/install-dependencies.sh new file mode 100755 index 0000000..4b5f6f6 --- /dev/null +++ b/bin/install-dependencies.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +apt -y install make automake libtool pkg-config libaio-dev libssl-dev +apt -y install libmysqlclient-dev +# alternatively use this if libmysqlclient-dev is not available on the linux distribution that is used : +# apt -y install libmariadb-dev libmariadb-dev-compat # libmariadb-dev-compat:amd64? +apt -y install libpq-dev +apt -y install lm-sensors +git clone https://github.com/akopytov/sysbench +cd sysbench/ +./autogen.sh +./configure +make -j +make install +cd .. diff --git a/bin/run-benchmark.sh b/bin/run-benchmark.sh new file mode 100755 index 0000000..0999c7b --- /dev/null +++ b/bin/run-benchmark.sh @@ -0,0 +1,95 @@ +#!/bin/bash + +if [[ $# -lt 1 ]] ; then + echo "\\o/" + echo "Not enough arguments supplied" >&2 + echo "You need to pass a name to store the test results" >&2 + echo " |" >&2 + echo "syntax: " >&2 + echo " $(basename $0) " >&2 + echo "example: " >&2 + echo " $(basename $0) odroid-h2+-emmc " >&2 + echo "/!\\" >&2 + exit 1 +fi + +LOGFILE="test_$1_$(date '+%Y-%m-%d_%H-%M-%S').log" + +echo ' ' +echo "#### Starting benchmark ####" | tee $LOGFILE +echo TS=$(date --rfc-3339=ns) | tee -a $LOGFILE +echo ' ' | tee -a $LOGFILE +sensors 2>&1 | tee -a $LOGFILE + +echo ' ' | tee -a $LOGFILE +echo "### Sleeping for a 3 minutes cooldown period ###" | tee -a $LOGFILE +echo "!!! Stop all other activities on the machine until the end of the test to avoid biasing the benchmark results !!!" +sleep 3m + +echo ' ' | tee -a $LOGFILE +echo "#### Cold test - CPU ####" | tee -a $LOGFILE +sensors 2>&1 | tee -a $LOGFILE +/usr/local/bin/sysbench cpu run --threads=8 2>&1 | tee -a $LOGFILE +sensors 2>&1 | tee -a $LOGFILE + +echo ' ' | tee -a $LOGFILE +echo "### Sleeping for a 3 minutes cooldown period ###" | tee -a $LOGFILE +sleep 3m + +echo ' ' | tee -a $LOGFILE +echo "#### Cold test - RAM ####" | tee -a $LOGFILE +sensors 2>&1 | tee -a $LOGFILE +/usr/local/bin/sysbench memory run --threads=8 2>&1 | tee -a $LOGFILE +sensors 2>&1 | tee -a $LOGFILE + +echo ' ' | tee -a $LOGFILE +echo "### Sleeping for a 3 minutes cooldown period ###" | tee -a $LOGFILE +sleep 3m + +echo ' ' | tee -a $LOGFILE +echo "#### cold test - disk ####" | tee -a $LOGFILE +/usr/local/bin/sysbench fileio prepare 2>&1 | tee -a $LOGFILE +sensors 2>&1 | tee -a $LOGFILE +/usr/local/bin/sysbench fileio run --threads=4 --file-test-mode=rndrw --file-io-mode=async 2>&1 | tee -a $LOGFILE +sensors 2>&1 | tee -a $LOGFILE +/usr/local/bin/sysbench fileio cleanup 2>&1 | tee -a $LOGFILE + +echo ' ' | tee -a $LOGFILE +echo "### Stressing the CPU for a 10 minutes warmup period ###" | tee -a $LOGFILE +sensors 2>&1 | tee -a $LOGFILE +for i in {1..10} +do + /usr/local/bin/sysbench cpu run --threads=8 --time=60 2>&1 | tee -a $LOGFILE + sensors 2>&1 | tee -a $LOGFILE +done + +echo ' ' | tee -a $LOGFILE +echo "#### Hot test - CPU ####" | tee -a $LOGFILE +/usr/local/bin/sysbench cpu run --threads=8 2>&1 | tee -a $LOGFILE +sensors 2>&1 | tee -a $LOGFILE + +echo ' ' | tee -a $LOGFILE +echo "#### Hot test - RAM ####" | tee -a $LOGFILE +/usr/local/bin/sysbench memory run --threads=8 2>&1 | tee -a $LOGFILE +sensors 2>&1 | tee -a $LOGFILE + +echo ' ' | tee -a $LOGFILE +echo "#### Hot test - disk ####" | tee -a $LOGFILE +/usr/local/bin/sysbench fileio prepare 2>&1 | tee -a $LOGFILE +sensors 2>&1 | tee -a $LOGFILE +/usr/local/bin/sysbench fileio run --threads=4 --file-test-mode=rndrw --file-io-mode=async 2>&1 | tee -a $LOGFILE +sensors 2>&1 | tee -a $LOGFILE +/usr/local/bin/sysbench fileio cleanup 2>&1 | tee -a $LOGFILE + +echo ' ' | tee -a $LOGFILE +echo "#### Continue stressing CPU to consume power for a while ####" | tee -a $LOGFILE +sensors 2>&1 | tee -a $LOGFILE +for i in {1..6} +do + /usr/local/bin/sysbench cpu run --threads=8 --time=300 2>&1 | tee -a $LOGFILE + sensors 2>&1 | tee -a $LOGFILE +done + +echo ' ' | tee -a $LOGFILE +echo TS=$(date --rfc-3339=ns) | tee -a $LOGFILE +echo "#### Tests complete ####" | tee -a $LOGFILE