Примеры тестирования производительности дисковой подсистемы с помощью утилиты fio. Заметка периодически дополняется.
Ставим из репозитория EPEL:
# yum install epel-release # yum install fio
Простые тесты.
Тест на случайную запись:
# fio --name=randwrite --ioengine=libaio --iodepth=1 --rw=randwrite --bs=4k --direct=0 --size=512M --numjobs=2 --runtime=240 --group_reporting
Тест на случайное чтение:
# fio --name=randread --ioengine=libaio --iodepth=16 --rw=randread --bs=4k --direct=0 --size=512M --numjobs=4 --runtime=240 --group_reporting
Тест на случайные чтение и запись:
# fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=test --filename=random_read_write.fio --bs=4k --iodepth=64 --size=4G --readwrite=randrw --rwmixread=75
Создание файлов с тестами.
Утилита fio позволяет использовать для тестирования, заранее написанные файл-тесты. Каждый такой тест — это файл с расширением .fio, разделённый внутри на секции, в рамках которых задаются настройки тестирования. Пример такого теста:
# cat test.fio [global] rw=randread size=256m directory=/tmp/fio.test ioengine=libaio iodepth=4 invalidate=1 direct=1 [bgwriter] rw=randwrite iodepth=32 [queryA] iodepth=1 ioengine=mmap direct=0 thinktime=3 [queryB] iodepth=1 ioengine=mmap direct=0 thinktime=5 [bgupdater] rw=randrw iodepth=16 thinktime=40 size=32m
Тесты от Google Cloud.
Подробнее здесь, по ссылке. В примерах ниже для тестирования используется на порядок меньше места (в документации примеры используют 100Гб), для запуска тестов на небольших инстансах.
Запись на диск:
# fio --name=writefile --size=100G --filesize=8G --filename=/dev/disk/by-id/google-local-ssd-0 --bs=1M --nrfiles=1 --direct=1 --sync=0 --randrepeat=0 --rw=write --refill_buffers --end_fsync=1 --iodepth=200 --ioengine=libaio
Случайное чтение:
# fio --time_based --name=benchmark --size=8G --runtime=30 --filename=/dev/disk/by-id/google-local-ssd-0 --ioengine=libaio --randrepeat=0 --iodepth=128 --direct=1 --invalidate=1 --verify=0 --verify_fatal=0 --numjobs=4 --rw=randread --blocksize=4k --group_reporting
Случайная запись:
# fio --time_based --name=benchmark --size=8G --runtime=30 --filename=/dev/disk/by-id/google-local-ssd-0 --ioengine=libaio --randrepeat=0 --iodepth=128 --direct=1 --invalidate=1 --verify=0 --verify_fatal=0 --numjobs=4 --rw=randwrite --blocksize=4k --group_reporting
А ещё, для тестирования производительности диска, стоит посмотреть вот эту заметку об ioping.