====== 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]]