diff --git a/bin/disk-test.sh b/bin/disk-test.sh new file mode 100755 index 0000000..bd45fcc --- /dev/null +++ b/bin/disk-test.sh @@ -0,0 +1,48 @@ +#!/bin/bash + +if [[ $# -lt 3 ]] ; then + echo "\\o/" + echo "Not enough arguments supplied" >&2 + echo "You need to pass a log file name to store the test results, the disk space to use and the number of files to use " >&2 + echo " |" >&2 + echo "syntax: " >&2 + echo " $(basename $0) " >&2 + echo "example: " >&2 + echo " $(basename $0) test.log 64G 512 " >&2 + echo "/!\\" >&2 + exit 1 +fi + +LOGFILE=$1 +TEST_DISK_SPACE=$2 +TEST_FILE_NUM=$3 + +#FILE_IO_MODE=async +FILE_IO_MODE=sync +THREADS=8 +#BLOCK_SIZE=16384 +BLOCK_SIZE=1048576 +#BLOCK_SIZE=4194304 + +echo ' ' +echo "#### Disk test ####" | tee -a $LOGFILE + +BLOCK_DEVICES=$(lsblk | grep -v loop | grep disk | cut -f1 -d ' ') +for d in $BLOCK_DEVICES +do + echo "# block device /dev/$d => hdparm -tT #" | tee -a $LOGFILE + sudo hdparm -tT /dev/$d 2>&1 | tee -a $LOGFILE + sudo hdparm -tT /dev/$d 2>&1 | tee -a $LOGFILE + sudo hdparm -tT /dev/$d 2>&1 | tee -a $LOGFILE +done + +/usr/local/bin/sysbench fileio prepare --file-num=$TEST_FILE_NUM --file-total-size=$TEST_DISK_SPACE 2>&1 | tee -a $LOGFILE +echo "# sysbench random read/write test in current directory #" | tee -a $LOGFILE +/usr/local/bin/sysbench fileio run --threads=$THREADS --file-test-mode=rndrw --file-block-size=$BLOCK_SIZE --file-io-mode=$FILE_IO_MODE --file-num=$TEST_FILE_NUM --file-total-size=$TEST_DISK_SPACE --file-rw-ratio=2 2>&1 | tee -a $LOGFILE +/usr/local/bin/sysbench fileio prepare --file-num=$TEST_FILE_NUM --file-total-size=$TEST_DISK_SPACE 2>&1 | tee -a $LOGFILE +echo "# sysbench sequential read test in current directory #" | tee -a $LOGFILE +/usr/local/bin/sysbench fileio run --threads=$THREADS --file-test-mode=seqrd --file-block-size=$BLOCK_SIZE --file-io-mode=$FILE_IO_MODE --file-num=$TEST_FILE_NUM --file-total-size=$TEST_DISK_SPACE 2>&1 | tee -a $LOGFILE +/usr/local/bin/sysbench fileio prepare --file-num=$TEST_FILE_NUM --file-total-size=$TEST_DISK_SPACE 2>&1 | tee -a $LOGFILE +echo "# sysbench sequential write test in current directory #" | tee -a $LOGFILE +/usr/local/bin/sysbench fileio run --threads=$THREADS --file-test-mode=seqwr --file-block-size=$BLOCK_SIZE --file-io-mode=async --file-num=$TEST_FILE_NUM --file-total-size=$TEST_DISK_SPACE 2>&1 | tee -a $LOGFILE +/usr/local/bin/sysbench fileio cleanup --file-num=$TEST_FILE_NUM --file-total-size=$TEST_DISK_SPACE 2>&1 | tee -a $LOGFILE diff --git a/bin/install-dependencies.sh b/bin/install-dependencies.sh index e4e92eb..9e7a2a1 100755 --- a/bin/install-dependencies.sh +++ b/bin/install-dependencies.sh @@ -1,6 +1,6 @@ #!/bin/bash -apt -y install make automake libtool pkg-config libaio-dev libssl-dev +apt -y install make automake libtool pkg-config libaio-dev libssl-dev smartmontools hdparm nvme-cli #apt -y install libmysqlclient-dev apt -y install libmariadb-dev libmariadb-dev-compat apt -y install libpq-dev diff --git a/bin/run-benchmark.sh b/bin/run-benchmark.sh deleted file mode 100755 index 0999c7b..0000000 --- a/bin/run-benchmark.sh +++ /dev/null @@ -1,95 +0,0 @@ -#!/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 diff --git a/bin/run-full-benchmark.sh b/bin/run-full-benchmark.sh new file mode 100755 index 0000000..b8612c7 --- /dev/null +++ b/bin/run-full-benchmark.sh @@ -0,0 +1,110 @@ +#!/bin/bash + +TEST_DISK_SPACE="64G" +TEST_FILE_NUM=512 +COOL_DOWN_TIME="3m" +WARMUP_TIME=600 + +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="full_test_$1_$(hostname)-$(date '+%Y-%m-%d_%H-%M-%S').log" + +echo ' ' +echo "#### Starting benchmark ####" | tee $LOGFILE +echo TS=$(date --rfc-3339=ns) | tee -a $LOGFILE +echo TEST_DISK_SPACE=$TEST_DISK_SPACE | tee -a $LOGFILE +echo TEST_FILE_NUM=$TEST_FILE_NUM | tee -a $LOGFILE +echo COOL_DOWN_TIME=$COOL_DOWN_TIME | tee -a $LOGFILE +echo WARMUP_TIME=$WARMUP_TIME | tee -a $LOGFILE +echo ' ' | tee -a $LOGFILE +sensors 2>&1 | tee -a $LOGFILE + +echo ' ' | tee -a $LOGFILE +echo "### System information ###" | tee -a $LOGFILE +echo "# uname -a #" | tee -a $LOGFILE +uname -a | tee -a $LOGFILE +echo "# /proc/version #" | tee -a $LOGFILE +cat /proc/version | tee -a $LOGFILE +echo "# /proc/meminfo #" | tee -a $LOGFILE +grep MemTotal /proc/meminfo | tee -a $LOGFILE +echo "# /proc/cpuinfo #" | tee -a $LOGFILE +cat /proc/cpuinfo | tee -a $LOGFILE +echo "# Block devices #" | tee -a $LOGFILE +lsblk | grep -v loop | tee -a $LOGFILE +echo "# df --block-size=G $(pwd) #" | tee -a $LOGFILE +df --block-size=G $(pwd) | tee -a $LOGFILE +BLOCK_DEVICES=$(lsblk | grep -v loop | grep disk | cut -f1 -d ' ') +for d in $BLOCK_DEVICES +do + echo "# block device /dev/$d => hdparm -Iv #" | tee -a $LOGFILE + sudo hdparm -Iv /dev/$d 2>&1 | tee -a $LOGFILE + echo "# block device /dev/$d => smartctl --all #" | tee -a $LOGFILE + sudo smartctl --all /dev/$d +done + +echo ' ' | tee -a $LOGFILE +echo "### Sleeping for a $COOL_DOWN_TIME 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 $COOL_DOWN_TIME + +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 $COOL_DOWN_TIME cooldown period ###" | tee -a $LOGFILE +sleep $COOL_DOWN_TIME + +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 $COOL_DOWN_TIME cooldown period ###" | tee -a $LOGFILE +sleep $COOL_DOWN_TIME + +echo calling $(dirname $0)/disk-test.sh $LOGFILE $TEST_DISK_SPACE $TEST_FILE_NUM | tee -a $LOGFILE +$(dirname $0)/disk-test.sh $LOGFILE $TEST_DISK_SPACE $TEST_FILE_NUM + +echo ' ' | tee -a $LOGFILE +echo "### Stressing the CPU for a $WARMUP_TIME seconds warmup period ###" | tee -a $LOGFILE +sensors 2>&1 | tee -a $LOGFILE +/usr/local/bin/sysbench cpu run --threads=8 --time=$WARMUP_TIME --report-interval=10 2>&1 | tee -a $LOGFILE +sensors 2>&1 | tee -a $LOGFILE + +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 "#### Continue stressing CPU to consume power for a while ####" | tee -a $LOGFILE +for i in {1..6} +do + /usr/local/bin/sysbench cpu run --threads=8 --time=300 --report-interval=30 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 diff --git a/bin/run-quick-benchmark.sh b/bin/run-quick-benchmark.sh new file mode 100755 index 0000000..10cb3a1 --- /dev/null +++ b/bin/run-quick-benchmark.sh @@ -0,0 +1,69 @@ +#!/bin/bash + +TEST_DISK_SPACE="64G" +TEST_FILE_NUM=512 + +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="quick_test_$1_$(hostname)-$(date '+%Y-%m-%d_%H-%M-%S').log" + +echo ' ' +echo "#### Starting benchmark ####" | tee $LOGFILE +echo TS=$(date --rfc-3339=ns) | tee -a $LOGFILE +echo TEST_DISK_SPACE=$TEST_DISK_SPACE | tee -a $LOGFILE +echo TEST_FILE_NUM=$TEST_FILE_NUM | tee -a $LOGFILE +echo COOL_DOWN_TIME=$COOL_DOWN_TIME | tee -a $LOGFILE +echo WARMUP_TIME=$WARMUP_TIME | tee -a $LOGFILE +echo ' ' | tee -a $LOGFILE +sensors 2>&1 | tee -a $LOGFILE + +echo ' ' | tee -a $LOGFILE +echo "### System information ###" | tee -a $LOGFILE +echo "# uname -a #" | tee -a $LOGFILE +uname -a | tee -a $LOGFILE +echo "# /proc/version #" | tee -a $LOGFILE +cat /proc/version | tee -a $LOGFILE +echo "# /proc/meminfo #" | tee -a $LOGFILE +grep MemTotal /proc/meminfo | tee -a $LOGFILE +echo "# /proc/cpuinfo #" | tee -a $LOGFILE +cat /proc/cpuinfo | tee -a $LOGFILE +echo "# Block devices #" | tee -a $LOGFILE +lsblk | grep -v loop | tee -a $LOGFILE +echo "# df --block-size=G $(pwd) #" | tee -a $LOGFILE +df --block-size=G $(pwd) | tee -a $LOGFILE +BLOCK_DEVICES=$(lsblk | grep -v loop | grep disk | cut -f1 -d ' ') +for d in $BLOCK_DEVICES +do + echo "# block device /dev/$d => hdparm -Iv #" | tee -a $LOGFILE + sudo hdparm -Iv /dev/$d 2>&1 | tee -a $LOGFILE + echo "# block device /dev/$d => smartctl --all #" | tee -a $LOGFILE + sudo smartctl --all /dev/$d +done + +echo ' ' | tee -a $LOGFILE +echo "#### 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 "#### 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 calling $(dirname $0)/disk-test.sh $LOGFILE $TEST_DISK_SPACE $TEST_FILE_NUM | tee -a $LOGFILE +$(dirname $0)/disk-test.sh $LOGFILE $TEST_DISK_SPACE $TEST_FILE_NUM + +echo TS=$(date --rfc-3339=ns) | tee -a $LOGFILE +echo "#### Tests complete ####" | tee -a $LOGFILE diff --git a/bin/run-quick-disk-test.sh b/bin/run-quick-disk-test.sh deleted file mode 100755 index 3a3cb2e..0000000 --- a/bin/run-quick-disk-test.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash - -/usr/local/bin/sysbench fileio prepare -/usr/local/bin/sysbench fileio run --threads=4 --file-test-mode=rndrw --file-io-mode=async -/usr/local/bin/sysbench fileio cleanup