Определяем производительность и скорость работы дисков

Часто приходится тестировать производительность дисков. На самом деле надо провести много тестов, чтобы иметь данные перед глазами. Обсудим, что такое линейная запись или чтение и чем 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/.

Что будем искать? Например,VPS-сервер

Мы в социальных сетях