@@ -1,5 +1,12 @@
#! /bin/bash
# This script is based on https://unix.stackexchange.com/revisions/480191/9 .
# The following changes proved to be necessary to make it work on CentOS 7:
# * removed disk info (model, size) - not very useful, might not work in many cases.
# * using "bw" instead of "bw_bytes" to support fio version 3.1 (those availible through yum @base)
# * escaping exclamation mark in sed command
# * the ".fiomark.txt" is not auto-removed
LOOPS=5 # How many times to run each test
SIZE=1024 # Size of each test, multiples of 32 recommended for Q32 tests to give the most accurate results.
WRITEZERO=0 # Set whether to write zeroes or randoms to testfile (random is the default for both fio and crystaldiskmark); dd benchmarks typically only write zeroes which is why there can be a speed difference.
@@ -16,12 +23,10 @@ else
echo " Testing in $TARGET "
fi
DRIVE=$( df $TARGET | grep /dev | cut -d/ -f3 | cut -d" " -f1 | rev | cut -c 2- | rev)
DRIVEMODEL=$( cat /sys/block/$DRIVE /device/model)
DRIVESIZE=$(( $(cat / sys/ block/ $DRIVE / size)* 512 / 1024 / 1024 / 1024 )) GB
echo " Configuration: Size:$SIZE Loops:$LOOPS Write Only Zeroes:$WRITEZERO
Running Benchmark on: /dev/ $DRIVE , $DRIVEMODEL ( $DRIVESIZE ), please wait...
Running Benchmark, please wait...
"
fio --loops=$LOOPS --size=$SIZE --filename=$TARGET /.fiomark.tmp --stonewall --ioengine=libaio --direct=1 --zero_buffers=$WRITEZERO --output-format=json \
@@ -39,21 +44,21 @@ fio --loops=$LOOPS --size=$SIZE --filename=$TARGET/.fiomark.tmp --stonewall --io
--name=4kQ8T8read --bs=4k --iodepth=8 --numjobs=8 --rw=randread \
--name=4kQ8T8write --bs=4k --iodepth=8 --numjobs=8 --rw=randwrite > $TARGET /.fiomark.txt
SEQR=" $(( $(cat $TARGET / .fiomark.txt | grep - A15 '"name" : "Seqread"' | grep bw_bytes | cut - d: - f2 | sed s:,:: g)/ 1024 / 1024 )) MB/s IOPS=$( cat $TARGET /.fiomark.txt | grep -A15 ' "name" : "Seqread"' | grep -m1 iops | cut -d: -f2 | cut -d. -f1 | sed ' s: ::g' ) "
SEQW=" $(( $(cat $TARGET / .fiomark.txt | grep - A80 '"name" : "Seqwrite"' | grep bw_bytes | sed ' 2 ! d' | cut - d: - f2 | sed s:,:: g)/ 1024 / 1024 )) MB/s IOPS=$( cat $TARGET /.fiomark.txt | grep -A80 ' "name" : "Seqwrite"' | grep iops | sed ' 7!d' | cut -d: -f2 | cut -d. -f1 | sed ' s: ::g' ) "
F12KR=" $(( $(cat $TARGET / .fiomark.txt | grep - A15 '"name" : "512 kread"' | grep bw_bytes | cut - d: - f2 | sed s:,:: g)/ 1024 / 1024 )) MB/s IOPS=$( cat $TARGET /.fiomark.txt | grep -A15 ' "name" : "512kread"' | grep -m1 iops | cut -d: -f2 | cut -d. -f1 | sed ' s: ::g' ) "
F12KW=" $(( $(cat $TARGET / .fiomark.txt | grep - A80 '"name" : "512 kwrite"' | grep bw_bytes | sed ' 2 ! d' | cut - d: - f2 | sed s:,:: g)/ 1024 / 1024 )) MB/s IOPS=$( cat $TARGET /.fiomark.txt | grep -A80 ' "name" : "512kwrite"' | grep iops | sed ' 7!d' | cut -d: -f2 | cut -d. -f1 | sed ' s: ::g' ) "
SEQ32R=" $(( $(cat $TARGET / .fiomark.txt | grep - A15 '"name" : "SeqQ32 T1 read"' | grep bw_bytes | cut - d: - f2 | sed s:,:: g)/ 1024 / 1024 )) MB/s IOPS=$( cat $TARGET /.fiomark.txt | grep -A15 ' "name" : "SeqQ32T1read"' | grep -m1 iops | cut -d: -f2 | cut -d. -f1 | sed ' s: ::g' ) "
SEQ32W=" $(( $(cat $TARGET / .fiomark.txt | grep - A80 '"name" : "SeqQ32 T1 write"' | grep bw_bytes | sed ' 2 ! d' | cut - d: - f2 | sed s:,:: g)/ 1024 / 1024 )) MB/s IOPS=$( cat $TARGET /.fiomark.txt | grep -A80 ' "name" : "SeqQ32T1write"' | grep iops | sed ' 7!d' | cut -d: -f2 | cut -d. -f1 | sed ' s: ::g' ) "
FKR=" $(( $(cat $TARGET / .fiomark.txt | grep - A15 '"name" : "4 kread"' | grep bw_bytes | cut - d: - f2 | sed s:,:: g)/ 1024 / 1024 )) MB/s IOPS=$( cat $TARGET /.fiomark.txt | grep -A15 ' "name" : "4kread"' | grep -m1 iops | cut -d: -f2 | cut -d. -f1 | sed ' s: ::g' ) "
FKW=" $(( $(cat $TARGET / .fiomark.txt | grep - A80 '"name" : "4 kwrite"' | grep bw_bytes | sed ' 2 ! d' | cut - d: - f2 | sed s:,:: g)/ 1024 / 1024 )) MB/s IOPS=$( cat $TARGET /.fiomark.txt | grep -A80 ' "name" : "4kwrite"' | grep iops | sed ' 7!d' | cut -d: -f2 | cut -d. -f1 | sed ' s: ::g' ) "
FK32R=" $(( $(cat $TARGET / .fiomark.txt | grep - A15 '"name" : "4 kQ32 T1 read"' | grep bw_bytes | cut - d: - f2 | sed s:,:: g)/ 1024 / 1024 )) MB/s IOPS=$( cat $TARGET /.fiomark.txt | grep -A15 ' "name" : "4kQ32T1read"' | grep -m1 iops | cut -d: -f2 | cut -d. -f1 | sed ' s: ::g' ) "
FK32W=" $(( $(cat $TARGET / .fiomark.txt | grep - A80 '"name" : "4 kQ32 T1 write"' | grep bw_bytes | sed ' 2 ! d' | cut - d: - f2 | sed s:,:: g)/ 1024 / 1024 )) MB/s IOPS=$( cat $TARGET /.fiomark.txt | grep -A80 ' "name" : "4kQ32T1write"' | grep iops | sed ' 7!d' | cut -d: -f2 | cut -d. -f1 | sed ' s: ::g' ) "
FK8R=" $(( $(cat $TARGET / .fiomark.txt | grep - A15 '"name" : "4 kQ8 T8 read"' | grep bw_bytes | sed 's/ "bw_bytes " : // g' | sed 's:,:: g' | awk '{ SUM += $1 } END { print SUM }')/ 1024 / 1024 )) MB/s IOPS=$( cat $TARGET /.fiomark.txt | grep -A15 ' "name" : "4kQ8T8read"' | grep iops | sed ' s/ "iops" : //g' | sed ' s:,::g' | awk ' { SUM += $1} END { print SUM }' | cut -d. -f1) "
FK8W=" $(( $(cat $TARGET / .fiomark.txt | grep - A80 '"name" : "4 kQ8 T8 write"' | grep bw_bytes | sed 's/ "bw_bytes " : // g' | sed 's:,:: g' | awk '{ SUM += $1 } END { print SUM }')/ 1024 / 1024 )) MB/s IOPS=$( cat $TARGET /.fiomark.txt | grep -A80 ' "name" : "4kQ8T8write"' | grep ' "iops" ' | sed ' s/ "iops" : //g' | sed ' s:,::g' | awk ' { SUM += $1} END { print SUM }' | cut -d. -f1) "
SEQR=" $(( $(cat $TARGET / .fiomark.txt | grep - A15 '"name" : "Seqread"' | grep bw | cut - d: - f2 | sed s:,:: g)/ 1024 )) MB/s IOPS=$( cat $TARGET /.fiomark.txt | grep -A15 ' "name" : "Seqread"' | grep -m1 iops | cut -d: -f2 | cut -d. -f1 | sed ' s: ::g' ) "
SEQW=" $(( $(cat $TARGET / .fiomark.txt | grep - A80 '"name" : "Seqwrite"' | grep bw | grep - v '_' | sed 2 \ ! d | cut - d: - f2 | sed s:,:: g)/ 1024 )) MB/s IOPS=$( cat $TARGET /.fiomark.txt | grep -A80 ' "name" : "Seqwrite"' | grep iops | sed ' 7!d' | cut -d: -f2 | cut -d. -f1 | sed ' s: ::g' ) "
F12KR=" $(( $(cat $TARGET / .fiomark.txt | grep - A15 '"name" : "512 kread"' | grep bw | cut - d: - f2 | sed s:,:: g)/ 1024 )) MB/s IOPS=$( cat $TARGET /.fiomark.txt | grep -A15 ' "name" : "512kread"' | grep -m1 iops | cut -d: -f2 | cut -d. -f1 | sed ' s: ::g' ) "
F12KW=" $(( $(cat $TARGET / .fiomark.txt | grep - A80 '"name" : "512 kwrite"' | grep bw | grep - v '_' | sed 2 \ ! d | cut - d: - f2 | sed s:,:: g)/ 1024 )) MB/s IOPS=$( cat $TARGET /.fiomark.txt | grep -A80 ' "name" : "512kwrite"' | grep iops | sed ' 7!d' | cut -d: -f2 | cut -d. -f1 | sed ' s: ::g' ) "
SEQ32R=" $(( $(cat $TARGET / .fiomark.txt | grep - A15 '"name" : "SeqQ32 T1 read"' | grep bw | cut - d: - f2 | sed s:,:: g)/ 1024 )) MB/s IOPS=$( cat $TARGET /.fiomark.txt | grep -A15 ' "name" : "SeqQ32T1read"' | grep -m1 iops | cut -d: -f2 | cut -d. -f1 | sed ' s: ::g' ) "
SEQ32W=" $(( $(cat $TARGET / .fiomark.txt | grep - A80 '"name" : "SeqQ32 T1 write"' | grep bw | grep - v '_' | sed 2 \ ! d | cut - d: - f2 | sed s:,:: g)/ 1024 )) MB/s IOPS=$( cat $TARGET /.fiomark.txt | grep -A80 ' "name" : "SeqQ32T1write"' | grep iops | sed ' 7!d' | cut -d: -f2 | cut -d. -f1 | sed ' s: ::g' ) "
FKR=" $(( $(cat $TARGET / .fiomark.txt | grep - A15 '"name" : "4 kread"' | grep bw | cut - d: - f2 | sed s:,:: g)/ 1024 )) MB/s IOPS=$( cat $TARGET /.fiomark.txt | grep -A15 ' "name" : "4kread"' | grep -m1 iops | cut -d: -f2 | cut -d. -f1 | sed ' s: ::g' ) "
FKW=" $(( $(cat $TARGET / .fiomark.txt | grep - A80 '"name" : "4 kwrite"' | grep bw | grep - v '_' | sed 2 \ ! d | cut - d: - f2 | sed s:,:: g)/ 1024 )) MB/s IOPS=$( cat $TARGET /.fiomark.txt | grep -A80 ' "name" : "4kwrite"' | grep iops | sed ' 7!d' | cut -d: -f2 | cut -d. -f1 | sed ' s: ::g' ) "
FK32R=" $(( $(cat $TARGET / .fiomark.txt | grep - A15 '"name" : "4 kQ32 T1 read"' | grep bw | cut - d: - f2 | sed s:,:: g)/ 1024 )) MB/s IOPS=$( cat $TARGET /.fiomark.txt | grep -A15 ' "name" : "4kQ32T1read"' | grep -m1 iops | cut -d: -f2 | cut -d. -f1 | sed ' s: ::g' ) "
FK32W=" $(( $(cat $TARGET / .fiomark.txt | grep - A80 '"name" : "4 kQ32 T1 write"' | grep bw | grep - v '_' | sed 2 \ ! d | cut - d: - f2 | sed s:,:: g)/ 1024 )) MB/s IOPS=$( cat $TARGET /.fiomark.txt | grep -A80 ' "name" : "4kQ32T1write"' | grep iops | sed ' 7!d' | cut -d: -f2 | cut -d. -f1 | sed ' s: ::g' ) "
FK8R=" $(( $(cat $TARGET / .fiomark.txt | grep - A15 '"name" : "4 kQ8 T8 read"' | grep bw | sed 's/ "bw " : // g' | sed 's:,:: g' | awk '{ SUM += $1 } END { print SUM }')/ 1024 )) MB/s IOPS=$( cat $TARGET /.fiomark.txt | grep -A15 ' "name" : "4kQ8T8read"' | grep iops | sed ' s/ "iops" : //g' | sed ' s:,::g' | awk ' { SUM += $1} END { print SUM }' | cut -d. -f1) "
FK8W=" $(( $(cat $TARGET / .fiomark.txt | grep - A80 '"name" : "4 kQ8 T8 write"' | grep bw | sed 's/ "bw " : // g' | sed 's:,:: g' | awk '{ SUM += $1 } END { print SUM }')/ 1024 )) MB/s IOPS=$( cat $TARGET /.fiomark.txt | grep -A80 ' "name" : "4kQ8T8write"' | grep ' "iops" ' | sed ' s/ "iops" : //g' | sed ' s:,::g' | awk ' { SUM += $1} END { print SUM }' | cut -d. -f1) "
echo -e "
Results from /dev/ $DRIVE , $DRIVEMODEL ( $DRIVESIZE ) :
Results:
\033[0;33m
Sequential Read: $SEQR
Sequential Write: $SEQW
@@ -74,4 +79,5 @@ Sequential Q32T1 Write: $SEQ32W
4KB Q8T8 Write: $FK8W
"
rm $TARGET /.fiomark.txt $TARGET /.fiomark.tmp
# rm $TARGET/.fiomark.txt
rm $TARGET /.fiomark.tmp