====== FIO (Flexible IO Tester) ====== ===== Синтетическое тестирование (v.1.0)===== == Начальные условия == == Мероприятия по подготовке == - Создать виртуальную машину следующей конфигурации: - 8 vCPU - 2 GB mem - Linux Debian - 256 GB Disk - Установить ''fio''; - Установить ''nmon''; - Создать файлы файлы по шаблону ниже. Или скопировать из предоставленного {{ :wiki:benchmark:tests:storage:disk.iso | *.iso образа }} файлы внутрь виртуальной машины; - Командой ''lsblk'' найти тестируемое устройство; - Указать в файле bench.ini тестируемое устройство, в примере - "/dev/sdb"; #!/bin/sh BASEDIR=/home/admin #<---- Укажите рабочую директорию, где будут храниться отчёты INIDIR=$BASEDIR/ini LOGDIR=$BASEDIR/log DEV=/dev/sdb #<---- Укажите девайс который будем тестировать IODEPTH=16 RUNTIME=300 TPAUSE=30 STOR="sdb" #<---- Укажите девайс который будем тестировать echo "stor $STOR" > $INIDIR/nmon.gr # --------------------- /usr/bin/nmon -f -t -s 5 -c 5000 -g $INIDIR/nmon.gr -m $LOGDIR/fio fiocmdlc="--filename=$DEV --iodepth=$IODEPTH --runtime=$RUNTIME " for fiocmdl in " --blocksize=4k --output=$LOGDIR/rand_read_4.out $INIDIR/rand_read.ini"\ " --blocksize=8k --output=$LOGDIR/rand_read_8.out $INIDIR/rand_read.ini"\ " --blocksize=16k --output=$LOGDIR/rand_read_16.out $INIDIR/rand_read.ini"\ " --blocksize=256k --output=$LOGDIR/rand_read_256.out $INIDIR/rand_read.ini"\ " --blocksize=4k --output=$LOGDIR/rand_write_4.out $INIDIR/rand_write.ini"\ " --blocksize=8k --output=$LOGDIR/rand_write_8.out $INIDIR/rand_write.ini"\ " --blocksize=16k --output=$LOGDIR/rand_write_16.out $INIDIR/rand_write.ini"\ " --blocksize=256k --output=$LOGDIR/rand_write_256.out $INIDIR/rand_write.ini"\ " --blocksize=4k --output=$LOGDIR/rand_read_write_4.out $INIDIR/rand_read_write.ini"\ " --blocksize=8k --output=$LOGDIR/rand_read_write_8.out $INIDIR/rand_read_write.ini"\ " --blocksize=16k --output=$LOGDIR/rand_read_write_16.out $INIDIR/rand_read_write.ini"\ " --blocksize=256k --output=$LOGDIR/rand_read_write_256.out $INIDIR/rand_read_write.ini"\ " --blocksize=4k --output=$LOGDIR/read_4.out $INIDIR/read.ini"\ " --blocksize=8k --output=$LOGDIR/read_8.out $INIDIR/read.ini"\ " --blocksize=16k --output=$LOGDIR/read_16.out $INIDIR/read.ini"\ " --blocksize=256k --output=$LOGDIR/read_256.out $INIDIR/read.ini"\ " --blocksize=4k --output=$LOGDIR/read_write_4.out $INIDIR/read_write.ini"\ " --blocksize=8k --output=$LOGDIR/read_write_8.out $INIDIR/read_write.ini"\ " --blocksize=16k --output=$LOGDIR/read_write_16.out $INIDIR/read_write.ini"\ " --blocksize=256k --output=$LOGDIR/read_write_256.out $INIDIR/read_write.ini"\ " --blocksize=4k --output=$LOGDIR/write_4.out $INIDIR/write.ini"\ " --blocksize=8k --output=$LOGDIR/write_8.out $INIDIR/write.ini"\ " --blocksize=16k --output=$LOGDIR/write_16.out $INIDIR/write.ini"\ " --blocksize=256k --output=$LOGDIR/write_256.out $INIDIR/write.ini"; do echo " ----- $fiocmdlc $fiocmdl" >> $LOGDIR/fio/test.log fio $fiocmdlc $fiocmdl >> $LOGDIR/fio/test.log echo " ----- endtest" >> $LOGDIR/fio/test.log sleep $TPAUSE done pkill nmon # --------------------- [writetest] rw=write direct=1 buffered=0 ioengine=libaio [readtest] rw=read direct=1 buffered=0 ioengine=libaio [writetest] rw=rw direct=1 buffered=0 ioengine=libaio [writetest] rw=randwrite direct=1 buffered=0 ioengine=libaio [readtest] rw=randread direct=1 buffered=0 ioengine=libaio [writetest] rw=randrw direct=1 buffered=0 ioengine=libaio == Мероприятия по проверке == - Запустить тестирование коммандой ''bench.sh'' == Мероприятия после проверки == - Скачать с сервера полученные результаты теста в файле вида "fio-bench_xxxxxx_xxxx.nmon" - На ПК администратора установить [[http://nmon.sourceforge.net/pmwiki.php?n=Site.Nmon-Analyser|nmon analyzer]] - Открыть полученный результат с помощью nmon analyzer - Перейти на вкладку DISK_SUMM Сводные результаты тестов представлены на данной странице: [[wiki:benchmark:results:fio:v1.0|Результаты тестов fio]] ===== Синтетическое тестирование (v.1.1) ===== == Начальные условия == == Мероприятия по подготовке == - Создать виртуальную машину следующей конфигурации: - 8 vCPU - 2 GB mem - Linux Debian - 256 GB Disk - Установить ''fio''; - Установить ''nmon''; - Создать файлы файлы по шаблону ниже. Или скопировать из предоставленного {{ :wiki:benchmark:tests:storage:disk.iso | *.iso образа }} файлы внутрь виртуальной машины; - Командой ''lsblk'' найти тестируемое устройство; - Указать в файле bench.ini тестируемое устройство, в примере - "/dev/sdb"; #!/bin/sh BASEDIR=/home/admin #<---- Укажите рабочую директорию, где будут храниться отчёты INIDIR=$BASEDIR/ini LOGDIR=$BASEDIR/log DEV=/dev/sdb #<---- Укажите девайс который будем тестировать IODEPTH=16 RUNTIME=300 TPAUSE=30 STOR="sdb" #<---- Укажите девайс который будем тестировать echo "stor $STOR" > $INIDIR/nmon.gr # --------------------- /usr/bin/nmon -f -t -s 5 -c 5000 -g $INIDIR/nmon.gr -m $LOGDIR/fio fiocfg="--filename=/dev/sdb --iodepth=$IODEPTH --runtime=$RUNTIME " for fiorun in \ " --blocksize=4k --output=$LOGDIR/rand_write_4.out $INIDIR/rand_write.ini" \ " --blocksize=8k --output=$LOGDIR/rand_write_8.out $INIDIR/rand_write.ini" \ " --blocksize=16k --output=$LOGDIR/rand_write_16.out $INIDIR/rand_write.ini" \ " --blocksize=256k --output=$LOGDIR/rand_write_256.out $INIDIR/rand_write.ini" \ " --blocksize=4k --output=$LOGDIR/rand_read_write_4.out $INIDIR/rand_read_write.ini" \ " --blocksize=8k --output=$LOGDIR/rand_read_write_8.out $INIDIR/rand_read_write.ini" \ " --blocksize=16k --output=$LOGDIR/rand_read_write_16.out $INIDIR/rand_read_write.ini" \ " --blocksize=256k --output=$LOGDIR/rand_read_write_256.out $INIDIR/rand_read_write.ini" \ " --blocksize=4k --output=$LOGDIR/rand_read_4.out $INIDIR/rand_read.ini" \ " --blocksize=8k --output=$LOGDIR/rand_read_8.out $INIDIR/rand_read.ini" \ " --blocksize=16k --output=$LOGDIR/rand_read_16.out $INIDIR/rand_read.ini" \ " --blocksize=256k --output=$LOGDIR/rand_read_256.out $INIDIR/rand_read.ini" \ " --blocksize=4k --output=$LOGDIR/write_4.out $INIDIR/write.ini" \ " --blocksize=8k --output=$LOGDIR/write_8.out $INIDIR/write.ini" \ " --blocksize=16k --output=$LOGDIR/write_16.out $INIDIR/write.ini" \ " --blocksize=256k --output=$LOGDIR/write_256.out $INIDIR/write.ini" \ " --blocksize=4k --output=$LOGDIR/read_write_4.out $INIDIR/read_write.ini" \ " --blocksize=8k --output=$LOGDIR/read_write_8.out $INIDIR/read_write.ini" \ " --blocksize=16k --output=$LOGDIR/read_write_16.out $INIDIR/read_write.ini" \ " --blocksize=256k --output=$LOGDIR/read_write_256.out $INIDIR/read_write.ini" \ " --blocksize=4k --output=$LOGDIR/read_4.out $INIDIR/read.ini" \ " --blocksize=8k --output=$LOGDIR/read_8.out $INIDIR/read.ini" \ " --blocksize=16k --output=$LOGDIR/read_16.out $INIDIR/read.ini" \ " --blocksize=256k --output=$LOGDIR/read_256.out $INIDIR/read.ini" ; do echo " ----- $fiocfg $fiorun" >> $LOGDIR/fio/test.log fio $fiocfg $fiorun >> $LOGDIR/fio/test.log echo " ----- endtest" >> $LOGDIR/fio/test.log sleep $TPAUSE done pkill nmon # --------------------- [writetest] rw=write direct=1 buffered=0 ioengine=libaio [readtest] rw=read direct=1 buffered=0 ioengine=libaio [writetest] rw=rw direct=1 buffered=0 ioengine=libaio [writetest] rw=randwrite direct=1 buffered=0 ioengine=libaio [readtest] rw=randread direct=1 buffered=0 ioengine=libaio [writetest] rw=randrw direct=1 buffered=0 ioengine=libaio == Мероприятия по проверке == - Запустить тестирование командой ''bench.sh'' == Мероприятия после проверки == - Скачать с сервера полученные результаты теста в файле вида "fio-bench_xxxxxx_xxxx.nmon" - На ПК администратора установить [[http://nmon.sourceforge.net/pmwiki.php?n=Site.Nmon-Analyser|nmon analyzer]] - Открыть полученный результат с помощью nmon analyzer - Перейти на вкладку DISK_SUMM ==== Нагрузочное тестирование СХД ==== == Начальные условия == == Мероприятия по подготовке == - Создать каталог куда будут записываться результаты теста. В примере указан каталог /var/log/storage1 - Создать конфигурационный файл теста - Указать примонтированые блочные устройства (vdb, vdc,…) - Указать время замера в переменной **runtime=** [global] ioengine=libaio direct=1 group_reporting time_based runtime=1h buffered=0 random_generator=tausworthe64 norandommap disable_clat=1 disable_slat=1 log_avg_msec=5000 [ NVMe_1 ] description=Random read/write 80/20 rw=randrw rwmixread=80 bs=8k filename=/dev/vdb iodepth=16 numjobs=8 [ NVMe_2 ] description=Random read/write 80/20 rw=randrw rwmixread=80 bs=8k filename=/dev/vdc iodepth=16 numjobs=8 [ HDD_1 ] description=Read/write 80/20 rw=rw rwmixread=80 bs=256k filename=/dev/vdd iodepth=1 numjobs=1 [ HDD_2 ] description=Read/write 80/20 rw=rw rwmixread=80 bs=256k filename=/dev/vde iodepth=1 numjobs=1 [ HDD_3 ] description=Read/write 80/20 rw=rw rwmixread=80 bs=256k filename=/dev/vdf iodepth=1 numjobs=1 == Мероприятия по проверке == - Запустить тестирование коммандой fio /var/fio.rtf -output-format=json --output=/var/log/storage1/fio.json --write_lat_log=/var/log/storage1/lat.json --write_bw_log=/var/log/storage1/bw.json —write_iops_log=/var/log/storage1/iops.json == Мероприятия после проверки == ===== Смотри также ===== [[https://docs.oracle.com/en-us/iaas/Content/Block/References/samplefiocommandslinux.htm|Примеры от Oracle]]