Skip to content

Instantly share code, notes, and snippets.

@rsyuzyov
Last active November 17, 2024 18:44
Show Gist options
  • Select an option

  • Save rsyuzyov/1ae1302ee595194cc664e9e535df9c3e to your computer and use it in GitHub Desktop.

Select an option

Save rsyuzyov/1ae1302ee595194cc664e9e535df9c3e to your computer and use it in GitHub Desktop.
fiodiskmark.sh
#!/bin/bash
FIOTXT="${0/.sh/.fio}"
RESULTFILE_PATH="${0/.sh/.txt}"
TESTFILE_PATH="${0/.sh/.tmp}"
TESTFILE_SIZE="1000m"
TEST_LOOPS="5"
printline(){
echo "$1" "$2" "$3" "$4" "$5" "$6"
echo "$1" "$2" "$3" "$4" "$5" "$6" >> $RESULTFILE_PATH
}
printfline(){
printf "$1" "$2" "$3" "$4" "$5" "$6"
printf "$1" "$2" "$3" "$4" "$5" "$6" >> $RESULTFILE_PATH
}
runtest(){
sync; sleep 3;
fio --loops=$TEST_LOOPS --size=$TESTFILE_SIZE --filename=$TESTFILE_PATH --ioengine=libaio --direct=1 --name=SeqReadQ8 --bs=$2 --iodepth=$3 --rw=read > $FIOTXT
READ=$(cat $FIOTXT | grep 'READ:' | awk '{print substr($3, 2, length($3)-3)}')
RIOPS=$(cat $FIOTXT | grep 'read:' | awk '{print substr($2, 6, length($2)-6)}')
sync; sleep 3;
fio --loops=$TEST_LOOPS --size=$TESTFILE_SIZE --filename=$TESTFILE_PATH --ioengine=libaio --direct=1 --name=SeqWriteQ8 --bs=$2 --iodepth=$3 --rw=write > $FIOTXT
WRITE=$(cat $FIOTXT | grep 'WRITE:' | awk '{print substr($3, 2, length($3)-3)}')
WIOPS=$(cat $FIOTXT | grep 'write:' | awk '{print substr($2, 6, length($2)-6)}')
printfline " | %12s | %10s | %10s | %10s | %10s |\n" "$1" "$READ" "$WRITE" "$RIOPS" "$WIOPS"
printline " +------------------------------------------------------------------+"
}
echo "" > $RESULTFILE_PATH
printline "test path: $PWD, `date`"
printline "test size: $TESTFILE_SIZE, loops: $TEST_LOOPS"
printline " +------------------------------------------------------------------+"
printfline " | %12s | %10s | %10s | %10s | %10s |\n" "Mode" "Read" "Write" "Read iops" "Write iops"
printline " +------------------------------------------------------------------+"
runtest SEQ1MQ8T1 1m 8 SeqReadQ8 SeqWriteQ8
runtest SEQ1MQ1T1 1m 1 SeqReadQ1 SeqWriteQ1
runtest RND4KQ32T1 4k 32 RandReadQ32 RandWriteQ32
runtest RND4KQ1T1 4k 1 RandReadQ1 RandWriteQ1
rm "$FIOTXT"
rm "$TESTFILE_PATH"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment