Параметры хранилища и тестирование производительности

Данная статья описывает индекс производительности облачного хранилища, методы тестирования производительности, а также рекомендации по интерпретации результатов тестирования.

Индекс производительности облачного хранилища

Главный индекс для измерения производительности хранилища включает IOPS,  пропускную способность и период ожидания.

IOPS (Input Output Per Second)

IOPS расшифровывается как операции ввода/вывода в секунду, и означает количество записанных или прочитанных операций, которые могут быть осуществлены в одну секунду. 
Ресурсоемкие приложения чувствительны к IOPS. 
В таблице ниже приведены наиболее распространенные измеренные характеристики производительности: последовательные операции и случайные операции.

Характеристики IOPS

Описание


Total IOPS

Общее количество операций ввода/вывода в секунду


Random read IOPS

Среднее количество случайных прочтенных операций ввода/вывода в секунду

Случайный доступ к данным на устройствах хранения данных

Random write IOPS

Среднее количество случайных записанных операций ввода/вывода в секунду

Sequential read IOPS

Среднее количество последовательных прочтенных операций ввода/вывода в секунду

Последовательный доступ к местоположениям на устройствах хранения данных смежно

Sequential write IOPS

Среднее количество последовательных записанных операций ввода/вывода в секунду


Пропускная способность (Throughput)

Пропускная способность измеряет объем данных, успешно переданных за секунду. 
Приложения, которые требуют массовое чтение или запись операций чувствительны к пропускной способности.

Период ожидания (Latency)

Период ожидания это время, которое требуется для выполнения запроса ввода/вывода. 
Для приложений, чувствительных к периоду ожидания, таких как базы данных, и для которых длительный период ожидания может привести к сообщениям об ошибках, мы рекомендуем использовать SSD диски. 
Для приложений, не чувствительных к периоду ожидания мы рекомендуем использование серверов с SATA дисками

Производительность

Данный раздел описывает производительность различных видов облачного хранилища.

Облачные диски

В таблице ниже приведены особенности и типичные сценарии различных видов облачных дисков.

Название

SSD диски

SATA диски

Максимальное кол-во IOPS

30,000

300

Максимальная пропускная способность

1500 Мбайт/сек

35 Мбайт/сек

Рекомендовано для решений:

- Облачный хостинг

- CloudVPS

- 1С-Битрикс

- Битрикс24

- 1С: Бухгалтерия

- Облачный диск

- Почта в облаке

- Облачный офис


Производительность дисков изменяется в зависимости от размера блоков данных. Меньшие блоки данных приводят к меньшей пропускной способности и более высокому IOPS, как показано в следующей таблице SSD диски могут достичь ожидаемой производительности только при малых блоках данных.


SSD диски

Размер блока данных

кол-во IOPS

Пропускная способность

4 Кб

Около 30,000

Около 120 Мбайт/сек

8 Кб

Около 25,000

Около 160 Мбайт/сек

16 Кб

Около 20,000

Около 400 Мбайт/сек

32 Кб

Около 18,000

Около 700 Мбайт/сек

64 Кб

Около 15,000

Около 1200 Мбайт/сек

128 Кб

Около 10,000

Около 1500 Мбайт/сек


Производительность тестового диска

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

-Linux: рекомендованы fio или dd 
-Windows: рекомендованы fio или Iometer

В данном разделе в качестве примера рассматривается сервер на Linux и fio, чтобы описать как тестировать производительность диска, используя fio. Перед тестированием диска вы должны убедиться, что диск соответствует 4К. 
Вы можете использовать fio для тестирования производительности облачного диска.


Предупреждение!

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


Тестирование случайных записанных IOPS

fio -direct=1 -iodepth=128 -rw=randwrite -ioengine=libaio -bs=4k -size=1G -numjobs=1 -runtime=1000 -group_reporting -filename=iotest -name=Rand_Write_Testing

Тестирование случайных прочитанных IOPS

fio -direct=1 -iodepth=128 -rw=randread -ioengine=libaio -bs=4k -size=1G -numjobs=1 -runtime=1000 -group_reporting -filename=iotest -name=Rand_Read_Testing

Тестирование пропускной способности записи

fio -direct=1 -iodepth=64 -rw=write -ioengine=libaio -bs=1024k -size=1G -numjobs=1 -runtime=1000 -group_reporting -filename=iotest -name=Write_PPS_Testing

Тестирование пропускной способности чтения

fio -direct=1 -iodepth=64 -rw=read -ioengine=libaio -bs=1024k -size=1G -numjobs=1 -runtime=1000 -group_reporting -filename=iotest -name=Read_PPS_Testing  


Для примера возьмем команду тестирования случайных прочитанных IOPS, чтобы описать значения параметров команды fio, как показано в следующей таблице:

Параметр

Описание

-direct=1

Игнорировать буфер ввода/вывода при тестировании. Данные записывают напрямую.

-rw=randwrite

Правила чтения и записи. Доступные варианты:

  • randread (random read) - случайное прочтение

  • randwrite(random write) - случайная запись

  • read(sequential read) - последовательное прочтение

  • write(sequential write) - последовательная запись

  • randrw (random read and write) - случайные прочтение и запись.


-ioengine=libaio

Использовать libaio в качестве метода тестирования (Linux AIO, асинхронный ввод/вывод). Обычно есть 2 варианта того, как приложение использует ввод/вывод: синхронно и асинхронно. Синхронный ввод/вывод отправляет только один запрос ввода/вывода за раз и возвращает его только после завершения работы ядра. В этом случае значение iodepth всегда меньше 1 для единичной задачи, но может быть решена несколькими параллельными задачами. Обычно 16-32 параллельных задания могут заполнить iodepth. Асинхронный метод использует libaio для отправки пакета запросов ввода-вывода каждый раз, что сокращает время взаимодействия и делает его более эффективным.

-bs=4k

Размер каждого блока для одного запроса ввода/вывода - 4к. Если размер не определен, то по умолчанию используется значение 4к. При тестировании IOPS мы рекомендуем устанавливать небольшое значение bs, например 4к, как в примере. При тестировании пропускной способности мы рекомендуем устанавливать большое значение bs, например 1024к, как в примерах с тестированием IOPS.  

-size=1G

Размер тестируемого файла 1Гб

-numjobs=1

Кол-во тестируемых заданий - 1

-runtime=1000

Время тестирования 1000 секунд. Если значение не определено, тестирование продолжится со значением определенным для -size и будет записывать данные в -bs каждый раз.

-group_reporting

Режим отображения результатов тестирования. Group_reporting суммирует статистику каждого задания, вместо того, чтобы показывать статистику по различным заданиям.

-filename=iotest

Выходной путь и название файлов. Тестирование чистого диска позволяет достичь более точных данных о производительности, но повреждает структуру файловой системы. Убедитесь, что вы осуществили резервное копирование ваших данных перед тестированием.


-name=Rand_Write_Testing

Название тестового задания