Colobridge WIKI

тестирование производительности диска

Применимость: «Linux, OpenVZ»

Слова для поиска: бенчмарк, benchmark


Протестировать производительность диска

Установите утилиту fio и используйте предлагаемый скрипт.

Скрипт создаст краткий отчет по нескольким тестам для оценки bw, iops, clat и отправит на ваш адрес

пример результата одного из тестов:

пример

  read : io=8192.0MB, bw=225688KB/s, iops=56422 , runt= 37169msec
    clat (usec): min=1023 , max=11603 , avg=2259.35, stdev=561.01

Синтаксис:

./fio.sh <размер файла> <директория> <имя теста>

пример для теста производительности на файловой системе:

./fio.sh 8g /mnt/test1 local_ext4_sdc1  

пример для теста производительности на блочном устройстве:

В этом варианте теста все данные на устройстве будут уничтожены
./fio.sh 8g /dev/sdc local_dev_sdc   

скрипт fio.sh

#!/bin/bash
SIZE="$1"
DDIR="$2"
EMAIL=mybox@mydomain.net

REP=$(hostname)-${3}-fio.txt
rm -f $REP
echo "write bs=1mb iodepth 4" |tee $REP 
fio -name benchmark --rw=write  -bs=1m -iodepth 4  --size=$SIZE \
 -ioengine libaio --direct=1 -directory=$DDIR | grep "iops\|clat"| grep -v  percentiles  | tee -a $REP 

echo "read bs=1mb iodepth 4" | tee -a $REP 
fio -name benchmark --rw=read  -bs=1m -iodepth 4  --size=$SIZE \
 -ioengine libaio --direct=1 -directory=$DDIR | grep "iops\|clat"| grep -v  percentiles | tee -a $REP 

echo "read bs=4k iodepth 128" | tee -a $REP 
fio -name benchmark  --rw=read  -bs=4k -iodepth 128  --size=$SIZE \
 -ioengine libaio --direct=1 -directory=$DDIR | grep "iops\|clat"| grep -v  percentiles | tee -a $REP 

echo "write bs=4k iodepth 128" | tee -a $REP 
fio -name benchmark  --rw=write  -bs=4k -iodepth 128  --size=$SIZE \
 -ioengine libaio --direct=1 -directory=$DDIR | grep "iops\|clat" | grep -v  percentiles | tee -a $REP 

echo "randread bs=4k iodepth 128" | tee -a $REP 
fio -name benchmark  --rw=randread  -bs=4k -iodepth 128  --size=$SIZE \
 -ioengine libaio --direct=1 -directory=$DDIR | grep "iops\|clat"| grep -v  percentiles | tee -a $REP 

echo "randwrite bs=4k iodepth 128" | tee -a $REP 
fio -name benchmark  --rw=randwrite  -bs=4k -iodepth 128  --size=$SIZE \
 -ioengine libaio --direct=1 -directory=$DDIR | grep "iops\|clat"| grep -v  percentiles | tee -a $REP 

echo "randrw 80/20 bs=4k" | tee -a $REP 
fio -name benchmark --rw=randrw --rwmixread=80  \
--bssplit=512/22:1k/15:2k/8:4k/23:8k/15:16k/2:32k/6:64k/7:128k/1:512k/1  \
-iodepth 256  --size=$SIZE -ioengine libaio --direct=1 \
-directory=$DDIR | grep "iops\|clat"| grep -v  percentiles | tee -a $REP


echo "iometer fileserver" | tee -a $REP 
fio -name benchmark --rw=randrw --rwmixread=80  \
--bssplit=512/22:1k/15:2k/8:4k/23:8k/15:16k/2:32k/6:64k/7:128k/1:512k/1  \
-iodepth 256  --size=$SIZE -ioengine libaio --direct=1 \
-directory=$DDIR | grep "iops\|clat" | grep -v  percentiles | tee -a $REP

cat $REP | mail -s $REP $EMAIL

sysbench

sysbench --test=fileio --file-total-size=6G --file-test-mode=rndrw --max-time=300 run
	
sysbench --test=fileio --file-total-size=6G --file-test-mode=rndrw --max-time=300 run

sysbench --test=fileio --file-total-size=6G --file-test-mode=rndwr --max-time=300 run

	
sysbench --test=fileio --file-total-size=6G --file-test-mode=rndwr --max-time=300 run

sysbench --test=oltp --oltp-table-size=1000000 --mysql-db=sbtest --mysql-user=root --mysql-password=test --num-threads=2 --max-time=60 run

	
sysbench --test=oltp --oltp-table-size=1000000 --mysql-db=sbtest --mysql-user=root --mysql-password=test --num-threads=2 --max-time=60 run

sysbench --test=oltp --oltp-table-size=1000000 --mysql-db=sbtest --mysql-user=root --mysql-password=test --num-threads=4 --max-time=60 run
	
sysbench --test=oltp --oltp-table-size=1000000 --mysql-db=sbtest --mysql-user=root --mysql-password=test --num-threads=4 --max-time=60 run

sysbench --test=fileio --file-total-size=6G --file-test-mode=seqwr --max-time=300 run
	
sysbench --test=fileio --file-total-size=6G --file-test-mode=seqwr --max-time=300 run