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

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

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

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

Установить fio

sudo apt update
sudo apt install fio

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

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

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

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

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

Выбрать тест

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

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

  • 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)