Калькулятор IOPS. Вопросы и ответы
Калькулятор IOPS – что это?
Термины
Какие типы контроллеров поддерживает Калькулятор IOPS?
Какие типы накопителей «поддерживает» Калькулятор IOPS?
Зачем нужен выбор конкретной модели накопителя?
Почему Калькулятор IOPS вычисляет только производительность случайного доступа?
Что такое глубина очереди?
Как глубина очереди влияет на производительность и задержку?
Как влияет на производительность тип RAID-массива?
Как влияет на производительность массива включение кэша контроллера?
Как влияет на производительность включение кэша дисков?
Почему полезная емкость массива меньше ожидаемой?
Калькулятор IOPS позволяет оценить производительность дисковой подсистемы сервера.
В зависимости от типа контроллера и накопителей, режима кэш, числа накопителей, глубины очереди и характера нагрузки вычисляются производительность, задержка и емкость для массивов RAID 0/10/5/6.
IOPS - Input/output Operations Per Second, число операций ввода/вывода, выполняемое дисковой подсистемой в секунду.
Операция ввода/вывода – операция чтения или записи, выполняемая дисковой подсистемой. Различают операции последовательного и случайного доступа.
Операции последовательного доступа - чтение или запись блоков данных, которые расположены друг за другом. Производительность таких операций оценивают в мегабайтах в секунду (MB/s).
Операции случайного доступа - чтение или запись блоков данных, которые расположены в произвольном порядке. Производительность таких операций оценивают в IOPS.
Запрос – задание дисковой подсистеме на выполнение операции чтения или записи.
Глубина очереди – количество одновременных запросов на чтение или запись.
Задержка – среднее время выполнения запроса.
Strip – блок данных, который записывается на один диск RAID-массива. Размер этого блока задается при создании RAID-массива.
Stripe – суммарный размер одной записи на всех дисках RAID-массива без учета данных четности.
Какие типы контроллеров поддерживает Калькулятор IOPS?
Калькулятор IOPS поддерживает все типы RAID-контроллеров, которые используются в серверных системах нашей сборки:
- RAID-контроллеры и модули Intel (на базе RAID-процессоров ROC LSI), в том числе Tri-Mode
- RAID-контроллеры LSI (на базе RAID-процессоров ROC LSI), в том числе Tri-Mode
- RAID-контроллеры Adaptec
- встроенный (Embedded) SATA-контроллер чипсетов Intel C612/624 в режимах ESRT2 и RSTe
- встроенный (Embedded) SAS/SATA-контроллер Intel SCU в режимах ESRT2 и RSTe
- встроенный в процессор Intel Xeon RAID-контроллер для накопителей NVMe (Intel VMD)
Для контроллеров с кэш-памятью возможен выбор режимов Write Through и Write Back.
Выбор контроллера накладывает ограничения на максимальное количество дисков, а также их интерфейс.
Например, для встроенных контроллеров количество дисков ограничено числом портов – 4, 6 или 8. Хотя эти контроллеры могут работать с расширителями портов, на практике это применяется редко.
Для SATA-контроллеров нельзя выбрать диски с интерфейсом SAS. Кроме того, не все контроллеры поддерживают все типы RAID-массивов.
Какие типы накопителей «поддерживает» Калькулятор IOPS?
Калькулятор IOPS поддерживает все типы используемых нами в производстве серверов Team современных серверных жестких дисков: 2.5" и 3.5" с интерфейсами SAS и SATA и скоростью вращения 7200, 10000 и 15000 оборотов в минуту.
Калькулятор также поддерживает современные твердотельные накопители (SSD) с интерфейсами SATA3 (6Gb/s), SAS3 (12Gb/s), NVMe (4GB/s).
Зачем нужен выбор конкретной модели накопителя?
Жесткие диски одного класса, но разных производителей (например, диски SAS 2.5" со скоростью вращения 7200 оборотов в минуту), могут заметно различаться по производительности. Наличие промежуточной неотключаемой энергонезависимой кэш-памяти в некоторых моделях накопителей позволяет в разы увеличить скорость на операциях случайной записи.
Почему Калькулятор IOPS вычисляет только производительность случайного доступа?
В подавляющем большинстве приложений дисковая подсистема сервера работает в режиме случайного доступа, осуществляя чтение и запись данных, расположенных в массиве произвольным образом.
Когда необходимо оценить производительность последовательного чтения или записи, можно считать, что скорость массива будет кратна количеству дисков в массиве (при условии, что размер блока данных больше размера Stripe). Это справедливо даже для массивов с вычислением четности, поскольку в этом случае выполняется запись целого страйпа и блока четности без предварительного чтения «старых» данных.
Глубина очереди – это количество одновременных запросов на чтение или запись, которые сервер посылает дисковой подсистеме. Если глубина очереди равна единице, то следующий запрос посылается только после получения подтверждения о выполнении предыдущего запроса. Если глубина очереди больше единицы, сервер сразу посылает несколько запросов и в дальнейшем поддерживает заданную глубину очереди по мере их выполнения.
Как глубина очереди влияет на производительность и задержку?
Для начала рассмотрим понятие глубины очереди применительно к одиночному диску.
Чем больше глубина очереди, тем больше запросов жесткий диск может обработать за единицу времени. Это объясняется тем, что диск выстраивает последовательность обработки запросов таким образом, чтобы маршрут движения головок был оптимальным с точки зрения минимизации времени операций. Чем больше глубина очереди, тем больше у диска выбор и тем эффективнее оптимизация.
Диски SATA могут обрабатывать до 32 одновременных запросов, диски SAS – до 64. При максимальной глубине очереди производительность диска увеличивается примерно в три раза по сравнению с одиночными запросами.
Однако не все так просто. При увеличении глубины очереди растет задержка - среднее время выполнения запроса. Действительно, при глубине очереди, например, 32 каждый запрос должен подождать, пока будут обработаны предыдущие запросы. То есть, если общая производительность выросла в три раза по сравнению с глубиной очереди 1, время выполнения каждого запроса вырастет примерно в 10 раз. Это время складывается из времени ожидания и времени выполнения операции. Поэтому ориентироваться только на показатели производительности при максимальной глубине очереди не следует, так как задержки становятся слишком большими.
Когда мы говорим о глубине очереди применительно к RAID-массиву, картина меняется. При глубине очереди 1 мы не получим выигрыша в производительности по сравнению с одиночным диском, поскольку в массиве будет работать всегда только один диск. А вот если массив получит сразу столько запросов, сколько он имеет дисков в своем составе, мы получим рост производительности, пропорциональный числу дисков.
Правда, следует заметить, что запросы совсем необязательно распределятся равномерно между всеми дисками массива, поэтому реальный рост производительности будет меньше. Например, для массива из двух дисков только в половине возможных случаев запросы будут приходиться на разные диски, поэтому производительность вырастет всего в полтора раза (на самом деле немного больше, поскольку в другой половине случаев на каждый диска придет по два запроса и производительность дисков вырастет за счет оптимизации). Наш Калькулятор IOPS точно учитывает эти моменты для любого количества дисков и любой глубины очереди.
Оптимальным является вариант, когда на каждый диск массива приходится один запрос. При дальнейшем увеличении глубины очереди производительность массива растет гораздо медленнее задержки, которая прямо пропорциональна глубине очереди. Именно поэтому при расчете производительности массива глубина очереди по умолчанию принимается равной количеству дисков. Однако ее можно поменять, чтобы увидеть, как при этом будут меняться производительность и величина задержки.
Как влияет на производительность тип RAID-массива?
Рассмотрим приближенную и упрощенную модель - будем считать, что глубина очереди равна количеству дисков массива и запросы распределяются между дисками равномерно. Рассмотрим сначала операции случайного чтения.
В массиве RAID 0 чтение будет выполняться параллельно с каждого диска массива, поэтому производительность массива будет равна произведению производительности одного диска на число дисков в массиве.
Для RAID 5 и RAID 6 картина точно такая же. Поскольку данные четности распределены между всеми дисками равномерно, при чтении будут задействованы все диски.
А вот для RAID 10 с аппаратным контроллером производительность будет даже выше, чем у RAID 0, поскольку чтение будет выполняться с того диска зеркальной пары, головки которого ближе к нужному сектору.
Для операций записи ситуация другая, кроме RAID 0. Для RAID 0 производительность по мере увеличения количества дисков в массиве растет так же, как в случае с чтением. RAID 10 медленнее в два раза, поскольку должен записывать одни и те же данные на два диска.
Для массива RAID 5 каждый запрос на запись порождает 4 операции: чтение «старого» блока данных, чтение четности, запись «новых» данных и запись четности. Поэтому теоретически RAID 5 при том же количестве дисков медленнее RAID 0 примерно в 4 раза. Однако на самом деле производительность определяется типом контроллера. Для контроллеров Adaptec реальная производительность неплохо согласуется с теоретической, а вот для контроллеров LSI с увеличением количества дисков производительность не растет, хотя при небольшом количестве дисков они работают быстрее, чем Adaptec. Разница объясняется тем, что LSI максимально оптимизирует свои алгоритмы для работы с массивами с небольшим числом дисков, поскольку не делает контроллеры с количеством портов более 8, в то время как Adaptec ориентируется в том числе и на массивы с большим количеством дисков и предлагает контроллеры и с 16 и с 24 портами.
Все вышесказанное относится и к массивам RAID 6 с той разницей, что для выполнения одного запроса на запись требуется уже шесть операций: три чтения и три записи.
Как влияет на производительность массива включение кэша контроллера?
Включение кэша контроллера на запись (режим Write Back) увеличивает производительность массивов любого типа примерно на порядок, поскольку данные записываются сначала в «быструю» память контроллера. Перенос данных из кэша на диски осуществляется в фоновом режиме, при этом контроллер «выжимает» из массива максимально возможную производительность в IOPS за счет оптимизации внутренней очереди запросов, поскольку величина задержки при переносе данных из кэша на диски в этом случае не имеет значения.
В реальных серверных конфигурациях включение режима Write Back рекомендуется только при наличии защиты кэша контроллера от потери питания (батарейной или на базе флэш-модулей). В противном случае велик риск потери большого объема данных.
Как влияет на производительность включение кэша дисков?
Все современные жесткие диски имеют некоторый объем «быстрой» кэш-памяти – обычно 64 или 128 MB. Если эта память включена (Disk Cache ON), то данные записываются сначала в эту память и запрос считается выполненным. Затем диск в фоновом режиме переписывает информацию на магнитные пластины. Включение кэш значительно (в разы) увеличивает производительность диска, поскольку диск переписывает содержимое кэш на пластины, оптимизируя процесс перемещения головок.
Поскольку кэш-память дисков обычно энергозависима, потеря питания приведет к потере всех данных в кэш диска, поэтому включать ее рекомендуется только при наличии резервирования по питанию.
Одновременное включение кэш-памяти дисков и контроллера не всегда дает прирост производительности по сравнению с включением только кэша контроллера. В отдельных конфигурациях производительность может несколько снизиться. Причина в том, что фоновые процессы дисков могут тормозить работу алгоритмов контроллеров.
Почему полезная емкость массива меньше ожидаемой?
Производители жестких дисков и твердотельных накопителей указывают емкость этих устройств в GB (Гигабайтах) или TB (Терабайтах). При этом под одним гигабайтом понимается величина 109 байт, а 1 TB – это 1012 байт.
Емкость RAID-массива обычно указывается тоже в Гигабайтах или Терабайтах, но при этом 1 GB считается равным 10243 байт, а 1 TB – 10244 байт.