Протестировать производительность дисков
Для полноценного тестирования производительности дисков облачных серверов (IOPS на чтение и запись и пропускной способности) используйте утилиту fio
. Для тестирования можно использовать файл-тесты — подготовленные текстовые файлы с настройками тестирования.
Результаты тестирования можно сравнить с лимитами для локальных дисков и сетевых дисков.
Установить утилиту fio
-
Установите утилиту
fio
:sudo apt update
sudo apt install fio
Подготовить диск
Не используйте эту команду для дисков, которые содержат какую-либо информацию — команда уничтожает все данные на диске. В примерах ниже приведены тесты с записью на диск с параметром filename=/dev/sdb — запись также уничтожит данные и файловую систему на диске, если они там есть.
Для исключения влияния сервисов и производительности файловой системы на результат теста мы рекомендуем создать пустой сетевой диск и заполнить его данными:
dd if=/dev/urandom of=/dev/sdX bs=4M
Для тестов вы можете использовать файл, но результат может быть не показателен, особенно если вы используете корневой раздел.
Протестировать производительность
Выберите тест:
- случайная запись блоками 4 КБ — для тестирования IOPS;
- случайное чтение блоками 4 КБ — для тестирования IOPS;
- случайная запись блоками 4 MБ — для тестирования пропускной способности;
- случайное чтение блоками 4 MБ — для тестирования пропускной способности.
Параметры тестов:
size
— общий размер тестового файла;blocksize
— размер одного блока, с которым проводится операция чтения или записи;filename
— файл для записи или чтения. В примерах ниже приведены тесты с записью на диск с параметромfilename=/dev/sdb
— запись также уничтожит данные и файловую систему на диске, если они там есть;iodepth
— количество потоков.
Случайная запись блоками 4 КБ
-
Создайте тест:
nano write.ini
-
Добавьте в файл содержимое:
[writetest]
size=2000M
blocksize=4k
filename=/dev/sdb
rw=randwrite
direct=1
buffered=0
ioengine=libaio
iodepth=32 -
Запустите тест:
fio write.ini
В выводе теста посмотрите значение IOPS:
write: IOPS=118, BW=475KiB/s (487kB/s)(2000MiB/4310296msec); 0 zone resets
Случайная запись блоками 4 МБ
-
Создайте тест:
nano write.ini
-
Добавьте в файл содержимое:
[writetest]
size=2000M
blocksize=4M
filename=/dev/sdb
rw=randwrite
direct=1
buffered=0
ioengine=libaio
iodepth=32 -
Запустите тест:
fio write.ini
В выводе теста посмотрите значение пропускной способности (BW):
write: IOPS=25, BW=100MiB/s (105MB/s)(2000MiB/19974msec); 0 zone resets
Случайное чтение блоками 4 КБ
-
Создайте тест:
nano read.ini
-
Добавьте в файл содержимое:
[readtest]
size=2000M
blocksize=4k
filename=/dev/sdb
rw=randread
direct=1
buffered=0
ioengine=libaio
iodepth=32 -
Запустите тест:
fio read.ini
В выводе теста посмотрите значение IOPS:
read: IOPS=320, BW=1280KiB/s (1311kB/s)(2000MiB/1599899msec)
Случайное чтение блоками 4 MБ
-
Создайте тест:
nano read.ini
-
Добавьте в файл содержимое:
[readtest]
size=2000M
blocksize=4M
filename=/dev/sdb
rw=randread
direct=1
buffered=0
ioengine=libaio
iodepth=32 -
Запустите тест:
fio read.ini
В выводе теста посмотрите значение пропускной способности (BW):
read: IOPS=25, BW=100MiB/s (105MB/s)(2000MiB/19911msec)