22/12/2021
При добавлении нового дискового пространства крайне важно понимать сколько Вам нужно операций чтения/записи или по научному IOPS, а также сколько та или иная дисковая система может Вам выдать таких транзакций в секунду. Такой подсчет в целом не представляет никаких сложностей и доступен любому, кто в ладах со школьной алгеброй. Если с определением объема дискового пространства на RAID массиве, как правило, проблем не возникает, то с подсчетом необходимых, а также доступных IOPS зачастую во многих организациях все обстоит не так гладко. В современных системах хранения данных зачастую используется определенный уровень кеша, технологии tiering, дедупликации и прочие фишки, которые могут влиять на общее значение IOPS. Однако, понимание того, сколько реально операций чтения/записи можно получить от самой дисковой подсистемы дает знание базовой производительности системы, от которого можно отталкиваться при проведении дополнительных расчетов.
Как считать
Давайте рассмотрим методологию и пример расчета производительности дисковой подсистемы из однотипных дисков, исходя из варианта RAID, а также типа нагрузки, которая будет задействована на данной системе. Допустим, мы планируем приобрести массив с 20 дисками SATA 7200 оборотов, каждый из которых выдает 75 IOPS. Суммарно все 20 дисков в максимуме способны обеспечить 20*75=1500 IOPS. Однако надо учитывать, что при пиковой загрузке дисков очень сильно вырастает время отклика и работать с такой дисковой системой становится практически невозможно. Поэтому, крайне желательно расчитывать допустимую производительность дисковой системы исходя из 70 процентной нагрузки от возможного максимума. То есть, в данном случае, мы получим 0.7*1500=1050 IOPS.
Таким образом формула, которая определяет суммарную допустимую производительность дисковой подсистемы, выглядит следующим образом:
Суммарная допустимая производительность = 70% * Количество дисков * Производительность данного типа диска.
Дальше, для того чтобы понять, сколько мы получим реальных IOPS, нам нужно знать тип RAID, который будет задействован, а также профиль трафика (соотношение операций записи и чтения). Это связано с тем, что при использовании различных типов RAID мы имеем дело с разным уровнем «штрафа на запись». Суть этого штрафа заключается в том, что в силу специфики работы дисковой подсистемы при объединении дисков в RAID для каждой операции записи приходится проводить дополнительные служебные операции чтения/записи.
Давайте посмотрим на то, какой «штраф на запись» есть у популярных типов RAID:
- RAID 1 — 2
- RAID 5 — 4
- RAID 6 — 6
- RAID 10 — 2
То есть при использовании RADI-1 на каждую операцию записи мы будем фактически использовать 2 IOPS, а для RAID-6 на точно такую же одну операцию записи будет израсходовано уже 6 IOPS.
Теперь обратим внимание на типы нагрузки, которые могут быть, и как это будет влиять на реальное количество IOPS, которые мы получим от дисковой подсистемы. Так использование данной дисковой подсистемы для активной СУБД, как правило, приведет к тому, что большая часть транзакций будет направлена на запись и лишь небольшая часть на чтение. Принято использовать шаблон для такого типа нагрузки — 70 процентов транзакций идет на запись и 30 процентов на чтение.
Можно рассмотреть и другие типы трафика на дисковую подсистему. Так для файлового хранилища, которое используется в организации для доступа к общим данным, можно применить другой шаблон — 30 процентов транзакций идет на запись и 70 процентов на чтение.
С учетом того, что при использовании технологии RAID мы получим «штраф на запись», то становится понятным почему нужно понимать соотношение операций чтения и записи. В зависимости от данного соотношения можно понять сколько реальных полезных операций чтения/записи можно получить от конкретной дисковой системы.
Давайте попробуем посчитать, сколько мы получим реальных эффектвных IOPS от нашей дисковой системы, описанной раннее. Будем считать, что у нас будет использоваться база данных, где 70 процентов обращений приходится на запись и 30 процентов на чтение.
Итак, для RAID-10 мы получим следующее уравнение, решение которого позволит найти искомое значение.
70%*2*X + 30%*X = 1050, где X — это реальное эффективное количество IOPS, а 2 — «штраф на запись» для RAID-10. Решим это простейшее линейное уравнение получим, что X = 618 IOPS.
Аналогичное уравнение для RAID-6 будет выглядеть следующим образом: 70%*6*X + 30%*X = 1050. Его решение дает значение X = 233 IOPS.
Как мы видим, в зависимости от выбранного уровня защиты данных на одних и тех же дисках мы получим совершенно разные значения эффективной производительности, что должно быть учтено при проектировании и внедрении. Давайте обобщим и запишем формулу по вычислению данной величины.
Эффективная реальная производительность = Суммарная допустимая производительность / (Процент операций записи * «штраф на запись» + Процент операций чтения)
Заключение
Давно хотел написать статью по этой тематике. Данный вопрос так или иначе часто поднимается при общении с инженерами в процессе проектирования и внедрения новых мощностей систем хранения данных. Подсчет IOPS является крайне важным моментом, на котором многие спотыкаются или не принимают его в расчет. Особенно этот процесс важен, если в Вашей IT инфраструктуре работают приложения и системы, на которые приходится серьезная нагрузка. При таком раскладе неумение подсчитать реальные IOPSы на дисковой системе может приводить к серьезным последствиям.