Параметры хранилища и тестирование производительности
Данная статья описывает индекс производительности облачного хранилища, методы тестирования производительности, а также рекомендации по интерпретации результатов тестирования.
Индекс производительности облачного хранилища
Главный индекс для измерения производительности хранилища включает IOPS, пропускную способность и период ожидания.
IOPS (Input Output Per Second)
Характеристики IOPS |
Описание |
|
Total IOPS |
Общее количество операций ввода/вывода в секунду |
|
Random read IOPS |
Среднее количество случайных прочтенных операций ввода/вывода в секунду |
Случайный доступ к данным на устройствах хранения данных |
Random write IOPS |
Среднее количество случайных записанных операций ввода/вывода в секунду |
|
Sequential read IOPS |
Среднее количество последовательных прочтенных операций ввода/вывода в секунду |
Последовательный доступ к местоположениям на устройствах хранения данных смежно |
Sequential write IOPS |
Среднее количество последовательных записанных операций ввода/вывода в секунду |
Пропускная способность (Throughput)
Период ожидания (Latency)
Производительность
Данный раздел описывает производительность различных видов облачного хранилища.
Облачные диски
В таблице ниже приведены особенности и типичные сценарии различных видов облачных дисков.
Название |
SSD диски |
SATA диски |
Максимальное кол-во IOPS |
30,000 |
300 |
Максимальная пропускная способность |
1500 Мбайт/сек |
35 Мбайт/сек |
Рекомендовано для решений: |
- Облачный хостинг - CloudVPS - 1С-Битрикс - Битрикс24
- 1С: Бухгалтерия
|
- Облачный диск - Почта в облаке - Облачный офис |
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 Мбайт/сек |
В зависимости от операционной системы, на которой работает сервер, вы можете использовать различные инструменты для тестирования производительности:
Тестирование чистого диска может помочь добиться более точных данных о производительности, но повреждает структуру файловой системы. Убедитесь, что вы сделали бэкап перед тестированием. Мы рекомендуем использовать новый сервер без информации на диске, чтобы произвести тестирование диска с помощью 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 |
Правила чтения и записи. Доступные варианты:
|
-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 |
Название тестового задания |