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

Обновлено: 07.07.2024

Несколько способов измерения производительности диска или дискового массива.

Измерение случайных IOPS с помощью FIO

FIO - популярный инструмент для измерения IOPS на сервере Linux.
Достаточно гибкий и простой инструмент в пользовании.

В статье будет рассмотрено несколько вариантов проверки, а именно случайное чтение, случайная запись и их комбинация блоками по 4Кб с многопоточностью.

Установка в CentOS/RHEL
Установка в Debian/Ubuntu

Тест случайных операций на чтение/запись

Данный тест создаст файл размером 4Гб и выполнит чтение и запись 4Кб с использованием разделения 75%/25% в файле, причем одновременно будет выполняться 64 операции. На каждые 3 операции чтения - одна операция на запись.

Результат выполнения команды будет приблизительно следующим:

Исходя из полученной информации делаем вывод, что наш диск в среднем выполняет 32115 операций на чтение и 10709 на запись. (Соотношение 3/1)

Тест случайных операций на чтение

Для измерения количества случайных операций на чтение выполняем следующую команду:

Результат выполнения команды будет приблизительно следующим:

Результаты теста показывают 55763 операций чтения в секунду, что очень хорошо для локального SSD.

Тест случайных операций на запись

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

Результат выполнения команды будет приблизительно следующим:

Результаты теста показывают 28660 операций на запись в секунду.

Последним аспектом оценки производительности диска является измерение задержки по отдельным запросам. Один из способов выяснить это - воспользоваться утилитой ioping.

Среднее значение задержки 138.8 us (микросекунд), что в целом очень хорошо! Если данный параметр будет превышать несколько миллисекунд, то с диском или дисковым массивом наблюдаются проблемы. Необходимо провести диагностику и найти “узкое место”, либо источник проблемы.

Измерение IOPS с помощью CrystalDiskMark в Windows

CrystalDiskMark - небольшая бесплатная программа, предназначенная для сравнительного тестирования быстродействия жестких дисков. Позволяет измерить скорость чтения и записи данных.

Загружаем и запускаем утилиту:


В программе представлено несколько тестов:

  • Sequential Tests (последовательная запись и чтение)
  • 4K Q8T8 (случайное чтение/запись блоков по 4Kб с глубиной 8 в 8 поток)
  • 4K Q1T1 (случайное чтение/запись блоков по 4Kб с глубиной 1 в 1 поток)
  • 4K QD32T1 (случайное чтение/запись блоков по 4Kб с глубиной 32 в 1 поток)

Запустим выполнение всех тестов и посмотрим на результат.


Посмотрим среднее количество IOPS на примере теста 4K Q8T8, для этого наведите курсор на значение и во всплывающей подсказке будет отображено количество IOPS.

Для замера производительности дисковой системы в Linux есть замечательная утилита fio (Flexible I/O tester). Утилита позволяет использовать для тестирования заранее написанные файл-тесты, в которых указывается что именно мы хотим измерить.

К примеру, можно провести тест на производительность при последовательном и случайном чтении/записи на диск.

Установка fio

Измеряем производительность NVMe диска с помощью fio

Есть сервер Dell PowerEdge R640 с NVMe дисками SSD Dell EMC NVMe 3.84 TB — KCD5XLUG3T84 . В спецификации указаны следующие параметры производительности для данной модели NVMe диска:

  • Последовательное чтение: 3140 MBPS
  • Последовательная запись: 1520 MBPS
  • Случайное чтение: 465000 IOPS
  • Случайная запись: 40000 IOPS

Загружаю на сервере Dell Support Live Image с операционной системой CentOS. Работаю в терминале под рутом. Устанавливаю репозиторий EPEL:

Создаю файл-тест с конфигурацией тестирования, назову его srcmvme0n1 :

Будем проводить четыре теста:

  • Случайное чтение блоками 4k
  • Случайная запись блоками 4k
  • Последовательное чтение блоками 512k
  • Последовательная запись блоками 512k

Процедура тестирования может занять продолжительное время.

Сравню полученные результаты с заявленными в спецификации (в скобках).

  • Последовательное чтение: 2518 (3140) MBPS
  • Последовательная запись: 1583 (1520) MBPS
  • Случайное чтение: 342000 (465000) IOPS
  • Случайная запись: 278000 (40000) IOPS

Чтение чуть меньше заявленного, а запись быстрее. Здесь, скорее всего, сыграло свою роль кэширование и недостаточно большой срок тестирования.

Заключение

Результат моего тестирования не выявил явных проблем с производительностью выбранного NVMe диска. Результаты отличались от заявленных производителем, но следует учесть, что тестируемый диск не новый, тест недолгий, задействован кэш.

Я не самый большой специалист в тестировании дисков и не досконально знаю все возможные опции для настройки файл-теста. Однако, готовые шаблоны можно всегда найти в Интернете.

Хотелось бы отметить, что утилитой fio кроме дисков можно проводить тестирование программных и аппаратных массивов.

Если вам понравилась статья, то ставьте 👍🏻 каналу.
Пишите комментарии, задавайте вопросы, подписывайтесь.

Linux

Для замера производительности дисковой системы в Linux есть замечательная утилита fio (Flexible I/O tester). Утилита позволяет использовать для тестирования заранее написанные файл-тесты, в которых указывается что именно мы хотим измерить.

К примеру, можно провести тест на производительность при последовательном и случайном чтении/записи на диск.

Установка fio

Измеряем производительность NVMe диска с помощью fio

Есть сервер Dell PowerEdge R640 с NVMe дисками SSD Dell EMC NVMe 3.84 TB — KCD5XLUG3T84. В спецификации указаны следующие параметры производительности для данной модели NVMe диска:

  • Последовательное чтение: 3140 MBPS
  • Последовательная запись: 1520 MBPS
  • Случайное чтение: 465000 IOPS
  • Случайная запись: 40000 IOPS

Загружаю на сервере Dell Support Live Image с операционной системой CentOS. Работаю в терминале под рутом. Устанавливаю репозиторий EPEL:

fio

fio

Создаю файл-тест с конфигурацией тестирования, назову его srcmvme0n1:

Будем проводить четыре теста:

  • Случайное чтение блоками 4k
  • Случайная запись блоками 4k
  • Последовательное чтение блоками 512k
  • Последовательная запись блоками 512k

fio

Процедура тестирования может занять продолжительное время.

fio

Сравню полученные результаты с заявленными в спецификации (в скобках).

  • Последовательное чтение: 2518 (3140) MBPS
  • Последовательная запись: 1583 (1520) MBPS
  • Случайное чтение: 342000 (465000) IOPS
  • Случайная запись: 278000 (40000) IOPS

Чтение чуть меньше заявленного, а запись быстрее. Здесь, скорее всего, сыграло свою роль кэширование и недостаточно большой срок тестирования.

Заключение

Результат моего тестирования не выявил явных проблем с производительностью выбранного NVMe диска. Результаты отличались от заявленных производителем, но следует учесть, что тестируемый диск не новый, тест недолгий, задействован кэш.

Я не самый большой специалист в тестировании дисков и не досконально знаю все возможные опции для настройки файл-теста. Однако, готовые шаблоны можно всегда найти в Интернете.

Хотелось бы отметить, что утилитой fio кроме дисков можно проводить тестирование программных и аппаратных массивов.

date

30.04.2020

directory

CentOS, Linux, Ubuntu

comments

Комментариев пока нет

В этой статье рассмотрим способы тестирования производительности IOPS дисков или дискового массива в Linux. IOPS (input/output operations per second) – количество операций ввода-вывода, выполняемые системой хранения данных за одну секунду (это может быть как один диск, RAID массив или LUN на системе хранения). Условно IOPS можно считать количество блоков, которые успевает считаться или записаться на носитель.

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

Установка утилиты fio для тестирования IOPS в Linux

Для замера производительности IOPS дисков в Linux можно использовать утилиту fio (утилита доступна для CentOS в репозитории EPEL). Соотвественно для установки fio в RHEL, CentOS используется пакетный менеджер yum (dnf):

Либо apt-get в Debian, Ubuntu :

yum install fio в centos

Затем вам нужно определить диски для тестирования. Тестирование выполняется путев выполнения операций записи/чтения в той директории, в которую примонтирован диск или LUN.

Измерение производительности дисков в IOPS с помощью fio

Выполним несколько видов тестирования производительности IOPS диска в различных сценариях нагрузки на диск (реждим тестирования, который нужон выбрать зависит от логики размещенного приложения и общей архитектуры проекта).

Тест случайных операций на чтение/запись

При запуске такого теста, будет создан файл размером 8 Гб. Затем утилита fio выполнит чтение/запись блока 4КБ (стандартный размер блока) с разделением на 75/25% по количеству операций чтения и записи и замерит производительность. Команда выглядит следующим образом:

fio утилита тести iops в linux centos

Первую проверку я запустил на массиве из двух SSD дисков и результаты получились хорошие:

Так как мы запустили тест на чтение/запись, показатели по отдельным проверкам, будут чуть выше.

Для сравнения, я замерил скорость на обычном SATA диске:

iops sata диска

Для HDD диска результаты, конечно гораздо хуже, чем для SSD.

Тест случайных операций на чтение

Чтобы замерить производительность дисков только для случайных операций на чтение, нужно выполнить следующую команду:

Команда поменялась в самом конце на --readwrite=randread .

iops ssd диска на случайные операции чтения

Как ранее я уже говорил, скорость по отдельным замерам будет выше:

Если запустить тест только на чтение, разница со смешанным тестом достигает (200-250 MiB/s и 67000 IOPS), что достаточно ощутимо.

Тест случайных операций на запись

Для замера производительности диска для случайных операций записи, выполните команду:

fio тестирование iops диска на random запись в linux

Производительность операций записи на хороших SSD дисках тоже очень высокая. Как и в случае с чтением, разница со смешанным тестом достигает 200-250 MiB/s, а в IOPS 56000.

Если опираться на официальную документацию по дискам от производителя (это SSD диски от Intel), можно смело сказать, что в данном случае они не обманули.

Тестирование производительности дисков с помощью файлов.

Утилита fio позволяет проверять диски не только с помощью интерактивного запуска команд, но и запускать заранее подготовленные конфигурационные файлы для тестов. Чтобы воспользоваться данным вариантом, создайте файл:

И добавьте в него содержимое:

Теперь запустите тест:

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

Проверка latency диска с помощью ioping

Помимо IOPS есть еще один важный параметр, характеризующий качество вашей дисковой подсистемы – latency. Latency – это время задержки выполнения запроса ввода/вывода и характеризуют время доступа к системе хранения (измеряется в миллисекундах). Чем выше latency, тем больше приходится ждать вашему приложения данных от дисковой подсистемы. Для типовых систем хранения значения latency более 20 мс считаются плохими.

Для проверки latency диска используется утилита ioping:

Запустите тест latency для диска (выполняется 20 запросов):

Среднее значение 298.7 us (микросекунд), т.е. средняя latency диска в нашем случае 0.3 ms, что очень хорошо.

Значение latency может быть указано в us (микросекундах) или в ms (миллисекундах). Т.е. для получения из us значения в ms нужно разделить его на 1000.

Таким образом, вы можете провести нагрузочное тестирование дисковой подсистемы на вашем сервере до запуска проекта и получить максимальную производительность. Конечно такой тест не дает гарантий, что дисковый массив или диск будет постоянно гарантировать такую производительность, но на начальном этапе это тест, который обязательно нужно выполнить. Методика тестирования IOPS в Windows описана в этой статье.

Читайте также: