Тестирование производительности дисков

Для полноценного тестирования производительности дисков облачных серверов (IOPS на чтение и запись и пропускной способности) используйте утилиту fio. С fio можно использовать файл-тесты — подготовленные текстовые файлы с настройками тестирования.

  1. Установите утилиту fio.
  2. Подготовьте диск к тестированию.
  3. Выберите тест.

Результаты тестирования можно сравнить с лимитами для локальных дисков и сетевых дисков.

Установить fio

sudo apt update
sudo apt install fio

Подготовить диск

Для исключения влияния сервисов и производительности файловой системы на результат теста мы рекомендуем создать пустой сетевой диск и заполнить его данными:

dd if=/dev/urandom of=/dev/sdX bs=4M

Не используйте эту команду для дисков с информацией — она уничтожает данные на диске. В примерах ниже приведены тесты с записью на диск с параметром filename=/dev/sdb — запись также уничтожит данные и файловую систему на диске, если они там есть.

Для тестов вы можете также использовать файл, но результат может быть не показателен, особенно если вы используете корневой раздел.

Выбрать тест

Выберите тест:

Параметры тестов:

  • size — общий размер теста;
  • blocksize — размер одного блока, с которым проводится операция чтения или записи;
  • filename — файл для записи или чтения. В примерах ниже приведены тесты с записью на диск с параметром filename=/dev/sdb — запись также уничтожит данные и файловую систему на диске, если они там есть;
  • iodepth — количество потоков.

Случайная запись блоками 4 КБ

  1. Создайте тест:

    nano write.ini
  2. Добавьте в файл содержимое:

    [writetest]
    size=2000M
    blocksize=4k
    filename=/dev/sdb
    rw=randwrite
    direct=1
    buffered=0
    ioengine=libaio
    iodepth=32
  3. Запустите тест:

    fio write.ini

    В выводе теста посмотрите значение IOPS:

    write: IOPS=118, BW=475KiB/s (487kB/s)(2000MiB/4310296msec); 0 zone resets

Случайная запись блоками 4 МБ

  1. Создайте тест:

    nano write.ini
  2. Добавьте в файл содержимое:

    [writetest]
    size=2000M
    blocksize=4M
    filename=/dev/sdb
    rw=randwrite
    direct=1
    buffered=0
    ioengine=libaio
    iodepth=32
  3. Запустите тест:

    fio write.ini

    В выводе теста посмотрите значение пропускной способности (BW):

    write: IOPS=25, BW=100MiB/s (105MB/s)(2000MiB/19974msec); 0 zone resets

Случайное чтение блоками 4 КБ

  1. Создайте тест:

    nano read.ini
  2. Добавьте в файл содержимое:

    [readtest]
    size=2000M
    blocksize=4k
    filename=/dev/sdb
    rw=randread
    direct=1
    buffered=0
    ioengine=libaio
    iodepth=32
  3. Запустите тест:

    fio read.ini

    В выводе теста посмотрите значение IOPS:

    read: IOPS=320, BW=1280KiB/s (1311kB/s)(2000MiB/1599899msec)

Случайное чтение блоками 4 MБ

  1. Создайте тест:

    nano read.ini
  2. Добавьте в файл содержимое:

    [readtest]
    size=2000M
    blocksize=4M
    filename=/dev/sdb
    rw=randread
    direct=1
    buffered=0
    ioengine=libaio
    iodepth=32
  3. Запустите тест:

    fio read.ini

    В выводе теста посмотрите значение пропускной способности (BW):

    read: IOPS=25, BW=100MiB/s (105MB/s)(2000MiB/19911msec)