тестирование производительности диска
Применимость: «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