Утилита fio#

Описание#

Утилита fio используется для нагрузочного тестирования дисковой подсистемы посредством создания потоков или процессов, нагружающих ее операциями ввода/вывода.

Синтаксис утилиты:

fio <options/parameters> <jobfile>

Где:

  • <options/parameters> - опции/параметры;

  • <jobfile> - файл задания, содержит описание теста, соответствующего нагрузке ввода-вывода, которую необходимо имитировать.

Опции#

Часто используемые опции утилиты представлены в таблице ниже.

Опции fio#

Опция

Описание

--cpuclock-test

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

--minimal

Отображение статистики в сжатом формате, разделенном точкой с запятой

--output=filename

Запись выходных данных в указанный файл

--parse-only

Анализ только опций, без запуска операций ввода-вывода

Параметры#

Часто используемые параметры утилиты представлены в таблице ниже.

Параметры fio#

Параметр

Описание

--bs=<integer>

Размер блока в байтах, используемый для единиц ввода-вывода (integer - целое числовое значение); по умолчанию - 4096; может быть, например, bs=256k - 256 Кб для операций чтения, записи и обрезки

--buffered=<boolean>

Использование буферизованного ввода-вывода, если значение равно true; по умолчанию используется значение true

--direct=<boolean>

Использование небуферизованного ввода-вывода, если значение равно true (boolean - логическое целое число, определяемое для значений true/1 и false/0); по умолчанию используется значение false

--eta-newline=time

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

--filename=<string>

Указание имени файла; по умолчанию имя файла основывается на названии задания, номера потока и номера файла

--group_reporting

Отображение статистики по группам заданий

--iodepth=<integer>

Количество устройств ввода-вывода, которые должны быть подключены к файлу задания

--ioengine=<string>

Определение типа выполнения задания ввода-вывода в файл, например, sync - базовый ввод-вывод для чтения или записи, libaio - асинхронный ввод-вывод

--name=<string>

Указание имени задания

--numjobs=<integer>

Создание указанного количества клонов задания; каждый клон создается как независимый поток или процесс

--readonly

Включение безопасных проверок (только для чтения), предотвращающих операции записи и обрезки

--runtime=<time>

Ограничение времени выполнения; тест будет выполняться до тех пор, пока не завершится настроенная рабочая нагрузка ввода-вывода или пока не пройдет указанный период времени, в зависимости от того, что произойдет раньше; если единица измерения отсутствует, то значение интерпретируется в секундах

--rw=<string>

Тип шаблона ввода-вывода; допустимыми значениями могут быть, например, read - последовательное чтение, randwrite - случайая запись

--size=<integer>

Общий размер файла ввода-вывода для каждого потока задания

--time_based

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

Примеры использования#

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

    fio --filename=path/to/file --direct=1 --rw=randread --bs=4k --ioengine=libaio --iodepth=256 --runtime=120 --numjobs=4 --time_based --group_reporting --name=job_name --eta-newline=1 --readonly
    

    Где:

    • --filename=path/to/file - путь к файлу, на котором будет выполняться тест;

    • --direct=1 - небуферизованный ввод-вывод;

    • --rw=randread - случайное чтение;

    • --bs=4k - размер блока 4 Кб;

    • --ioengine=libaio - асинхронный ввод-вывод;

    • --iodepth=256 - очередь ввода-вывода - 256;

    • --runtime=120 - время выполнения - 120 секунд;

    • --numjobs=4 - выполнение 4 клонов задания одновременно;

    • --name=job_name - имя задания;

    • --eta-newline=1 - принудительный ввод новой строки каждую секунду.

  • Для проведения тестирования с параметрами, указанными в файле задания path/to/job_file, введите команду:

    fio path/to/job_file