Часто приходится тестировать производительность дисков. На самом деле надо провести много тестов, чтобы иметь данные перед глазами. Обсудим, что такое линейная запись или чтение и чем tps отличается iops.
Существует несколько подходов для тестирования именно дисков:
Запись (Линейное)
dd if=/dev/zero of=test bs=64k count=16k conv=fdatasync oflag=direct
Ответ:
16384+0 records in 16384+0 records out 1073741824 bytes (1.1 GB) copied, 2.70783 s, 397 MB/s
Можно запустить 2-3 раза и посмотреть среднее значение.
Чтение (Линейное)
dd if=test of=/dev/null bs=1M count=1024 iflag=direct
hdparm -tT /dev/sda (предварительно установив через yum install hdparm)
Внимание! Если Вы тестируете VPS на OpenVZ, то оба вышеупомянутых варианта могут как не сработать, так и показать верные результаты. В нашем тестировании результаты совпали с правдой.
time (dd if=/dev/zero of=/tmp/test bs=64k count=16k > /dev/null; sync)
Вывод:
/dev/sda: Timing cached reads: 23534 MB in 2.00 seconds = 11782.33 MB/sec Timing buffered disk reads: 4940 MB in 3.00 seconds = 1645.67 MB/sec
Подсчет IOPS
Iozone
Для начала устанавливаем с сайта http://www.iozone.org/ последний rpm (не source):
cd /tmp
wget http://www.iozone.org/src/current/iozone-3-420.i386.rpm
Если у Вас система 64 бит, то необходимо также установить это:
yum install glibc.i686
rpm -ihv iozone-3-420.i386.rpm
Запуск:
/opt/iozone/bin/iozone
1) Для тестирования системы вам понадобится команда:
/opt/iozone/bin/iozone -O -i0 -i2 -s30g -r64k
При этом размер файла s должен быть больше размера оперативной памяти.
2) Эта команда для тестирования отдельного диска. Также можно использовать первую команду, но перед этим необходимо перейти в директорию на тестируемом диске.
/opt/iozone/bin/iozone -O -i0 -i2 -s30g -r64k -l 1 -u 1 -F /ssd2/
У iozone 12 типов теста:
Например, для запуска второго теста надо запускать с опцией -i 2. Можно задавать несколько типов тестов, или сделать сразу комплексный через -a
- 0=write/rewrite
- 1=read/re-read
- 2=random-read/write
- 3=Read-backwards
- 4=Re-write-record
- 5=stride-read
- 6=fwrite/re-fwrite
- 7=fread/Re-fread,
- 8=random mix
- 9=pwrite/Re-pwrite
- 10=pread/Re-pread
- 11=pwritev/Re-pwritev
- 12=preadv/Re-preadv
Для указания размера файла: -s 1m или -s 64k
Для указания размера блока для записи -r 4k
Дополнительную информацию можно прочитать здесь: http://www.thegeekstuff.com/2011/05/iozone-examples/.