Протестировать производительность файлового хранилища
Это инструкция с примером тестирования производительности файлового хранилища на облачном сервере.
Для полноценного тестирования производительности файлового хранилища (значений пропускной способности и лимитов на чтение и запись в IOPS) используйте утилиту fio
.
Результаты тестирования можно сравнить с ожидаемой производительностью, которая зависит от типа файлового хранилища. Значения можно посмотреть в таблице Лимиты файлового хранилища.
1. Установить утилиту fio
-
Установите утилиту
fio
:sudo apt update
sudo apt install fio
2. Протестировать производительность
Можно использовать тесты:
- случайная запись блоками 4 КБ — для тестирования лимитов на запись в IOPS;
- случайное чтение блоками 4 КБ — для тестирования лимитов на чтение в IOPS;
- случайная запись блоками 4 MБ — для тестирования пропускной способности;
- случайное чтение блоками 4 MБ — для тестирования пропускной способности.
Параметры тестов:
blocksize
— размер одного блока, с которым проводится операция чтения или записи;iodepth
— количество потоков;filename
— файл для записи или чтения. В примерах ниже приведены тесты c параметромfilename=/mnt/nfs/test
— для тестирования создастся отдельный файл в директории с примонтированным файловым хранилищем;size
— общий размер тестового файла. Для получения релевантных результатов мы рекомендуем выполнять тестирование на файловом хранилище размером больше 100 ГБ.
Случайная запись блоками 4 КБ
-
Запустите тест:
fio \
--name=test1 \
--blocksize=4k \
--rw=randwrite \
--direct=1 \
--buffered=0 \
--ioengine=libaio \
--iodepth=16 \
--loops=1000 \
--runtime=30 \
--filename=/mnt/nfs/test \
--size=99G -
В выводе теста посмотрите значение лимита на запись в IOPS (
IOPS
):write: IOPS=118, BW=475KiB/s (487kB/s)(2000MiB/4310296msec); 0 zone resets
Случайное чтение блоками 4 КБ
-
Запустите тест:
fio \
--name=test1 \
--blocksize=4k \
--rw=randread \
--direct=1 \
--buffered=0 \
--ioengine=libaio \
--iodepth=16 \
--loops=1000 \
--runtime=30 \
--filename=/mnt/nfs/test \
--size=99G -
В выводе теста посмотрите значение лимита на чтение в IOPS (
IOPS
):read: IOPS=320, BW=1280KiB/s (1311kB/s)(2000MiB/1599899msec)
Случайная запись блоками 4 МБ
-
Запустите тест:
fio \
--name=test1 \
--blocksize=4M \
--rw=randwrite \
--direct=1 \
--buffered=0 \
--ioengine=libaio \
--iodepth=16 \
--loops=1000 \
--runtime=30 \
--filename=/mnt/nfs/test \
--size=99G -
В выводе теста посмотрите значение пропускной способности (
BW
):write: IOPS=25, BW=100MiB/s (105MB/s)(2000MiB/19974msec); 0 zone resets
Случайное чтение блоками 4 MБ
-
Запустите тест:
fio \
--name=test1 \
--blocksize=4M \
--rw=randread \
--direct=1 \
--buffered=0 \
--ioengine=libaio \
--iodepth=16 \
--loops=1000 \
--runtime=30 \
--filename=/mnt/nfs/test \
--size=99G -
В выводе теста посмотрите значение пропускной способности (
BW
):read: IOPS=25, BW=100MiB/s (105MB/s)(2000MiB/19911msec)