Страница 1 из 1

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

СообщениеДобавлено: 03 мар 2023, 14:34
Шитов Дмитрий
Для тестирования производительности дисков на Linux хорошо подходит утилита fio.

Если у вас не установлена эта утилита, то ее нужно доустановить. У Ubuntu (или Debian) это можно сделать следующей командой:
sudo apt install fio

Ссылка на документацию к последней версии утилиты fio тут: https://buildmedia.readthedocs.org/medi ... st/fio.pdf
Также справку об установленной утилите можно получить выполнив команду:
man fio

Очень важно!!!
Перед началом тестирования обязательно убедитесь, что в параметре “--filename” теста вы указываете корректные данные тестируемого диска и на диске есть достаточно места для размещения тестовых данных, указанных в параметре “--size”.
Ошибка может привести к краху системы и потере данных!
Во избежание непредвиденных ситуаций, первые разы учитесь выполнять подобные команды на тестовом стенде, отдельном от продуктивной среды.

Команда для выполнения теста:
sudo fio --loops=3 --size=4000m --filename=/tmp/fiotest.tmp --ioengine=libaio --direct=1 --name=Seqread --bs=1m --rw=read --stonewall --name=Seqwrite --bs=1m --rw=write --stonewall --name=512Kread --bs=512k --rw=randread --stonewall --name=512Kwrite --bs=512k --rw=randwrite --stonewall --name=4Kread --bs=4k --iodepth=1 -rw=randread --stonewall --name=4Kwrite --bs=4k --iodepth=1 -rw=randwrite --stonewall --name=4kQD32read --bs=4k --iodepth=32 --rw=randread --stonewall --name=4kQD32write --bs=4k --iodepth=32 --rw=randwrite --stonewall

Краткая справка по указанным параметрам:
--loops - используется для повторения одной и той же рабочей нагрузки заданное количество раз. По умолчанию 1.
--size - объем данных, который мы планируем читать/писать.
--filename - расположение файла для теста.
--stonewall - ожидать пока предыдущее задание закончит выполнение, прежде чем запускать это задание.
--ioengine=libaio - определяет, как задание выполняет ввод-вывод в файл. libaio - собственный асинхронный ввод-вывод Linux.
--direct - если значение равно “1”, то используется небуферизованный ввод-вывод. Другими словами, тестируем скорость самого диска, а не буфер или кэш диска.
--name - для каждой опции --name, которую видит fio, она запускает новое задание с этим именем. Записи командной строки, следующие за записью --name, будут применяться к этому заданию до тех пор, пока не будет больше записей или пока не появится новая запись --name.
--bs - размер блока в байтах, используемый для модулей ввода-вывода.
--rw - тип операции ввода/вывода.
--iodepth - количество потоков ввода/вывода.

Подробно о сценариях тестирования дисков в статье: http://www.gilev.ru/crystaldiskmark/