Что же такое IOPS, и как его считать?
- Принцип IOPS и характеристики производительности
- Методы расчета IOPS для HDD и SSD
- Для жестких дисков (HDD)
- Для твердотельных накопителей (SSD)
- RAID-пенальти для разных типов массивов
- IOPS в контексте современных систем хранения: практические примеры
- Виртуальные среды (VDI)
- Базы данных
- Веб-хостинг и высоконагруженные сайты
- Анализ больших данных
- Формулы расчета IOPS
- Расчет минимального количества дисков
- Обновляемая производительность
- Интересные факты, ситуации иаспекты, которые важно учитывать
- Программы для измерения IOPS
- Немного выводов
Добрый день! В современном мире цифровых технологий, где скорость обработки информации становится критически важной, понимание параметра IOPS помогает осознанно подходить к выбору систем хранения данных, домашнего диска и оптимизации их работы. Зачастую отдавая большое количество денег за оборудование, хочется быть уверенным, что оно сможет удовлетворить все те потребности, которые вы на него возлагаете. Сегодня мы рассмотрим понятие IOPS со всех сторон.
IOPS (Input/Output Operations Per Second) — это метрика производительности систем хранения данных, жестких дисков и твердотельных SSD, которая измеряет количество операций ввода-вывода, выполняемых устройством за одну секунду. Этот параметр стал особенно важен с развитием технологий хранения данных и ростом требований к производительности в различных сферах — от корпоративных баз данных до виртуальных сред и высоко нагруженных веб-приложений.
Советую почитать про системы хранения данных
Принцип IOPS и характеристики производительности
IOPS представляет собой количественный показатель, отражающий способность системы хранения данных обрабатывать запросы на чтение и запись информации. Каждая такая "операция" — это работа с блоком данных определенного размера, обычно составляющим 4 КБ для случайного доступа и 128 КБ и более для последовательных операций
Напомню, что когда вы создаете разделы на RAID контроллерах, то там на уровне LUN как раз таки и задают размер блока исходя их того, что на нем будет храниться.
Основные характеристики производительности IOPS включают:
Общие IOPS (Total IOPS): Суммарное количество операций ввода-вывода в секунду при выполнении как чтения, так и записи.
IOPS случайного чтения (Random Read IOPS): Количество операций чтения из случайных областей носителя в секунду.
IOPS случайной записи (Random Write IOPS): Количество операций записи в случайные области носителя в секунду.
IOPS последовательного чтения (Sequential Read IOPS): Количество операций последовательного чтения данных в секунду.
IOPS последовательной записи (Sequential Write IOPS): Количество операций последовательной записи данных в секунду.
Основными измеряемыми величинами являются операции линейного (последовательного) и произвольного (случайного) доступа.
Под линейными операциям чтения/записи, при которых части файлов считываются последовательно, одна за другой, подразумевается передача больших файлов (более 128 К). При произвольных операциях данные читаются случайно из разных областей носителя, обычно они ассоциируются с размером блока 4 Кбайт.
Тип операции | Размер блока | Типичное использование |
---|---|---|
Случайное чтение/запись | 4 КБ | Работа с небольшими файлами, базы данных |
Последовательное чтение/запись | 128 КБ и более | Передача больших файлов, резервное копирование |
На производительность IOPS влияет множество факторов: конструкция и настройки устройства, драйверы, параметры файловой системы, настройки ОС, соотношение операций чтения/записи, размеры блоков, количество потоков, размеры очередей и буферов, фрагментация и фоновые процессы
Методы расчета IOPS для HDD и SSD
Для жестких дисков (HDD)
Производительность HDD в основном определяется механическими характеристиками — скоростью вращения пластин и временем позиционирования головок. Расчет теоретического IOPS для HDD можно выполнить по формуле:
IOPS = 1 / (средняя задержка + среднее время поиска)
Пример расчета: Для диска Seagate ST500DM002-1BC142 со средним временем задержки 4.16 мс и средним временем поиска 8.5 мс:
Таблица: Примерные значения IOPS для HDD
Тип HDD | Скорость вращения | Примерный IOPS | Интерфейс |
---|---|---|---|
SATA-диски | 7,200 об/мин | 75-100 IOPS | SATA 3 Гбит/с |
SATA-диски | 10,000 об/мин | 125-150 IOPS | SATA 3 Гбит/с |
SAS-диски | 10,000 об/мин | ~140 IOPS | SAS |
SAS-диски | 15,000 об/мин | 175-210 IOPS | SAS |
Для твердотельных накопителей (SSD)
SSD демонстрируют значительно более высокие показатели IOPS благодаря отсутствию механических частей. Однако их производительность может значительно снижаться при длительных операциях записи из-за процессов сборки мусора и выравнивания износа.
Таблица: Примерные значения IOPS для SSD
Модель SSD | Тип | IOPS | Интерфейс |
---|---|---|---|
Intel X25-M G2 MLC | SSD | ~8,600 IOPS | SATA 3 Гбит/с |
OCZ Vertex 3 | SSD | ~60,000 IOPS | SATA 6 Гбит/с |
OCZ RevoDrive 3 X2 | SSD | ~200,000 IOPS | PCIe |
OCZ Z-Drive R4 CloudServ | SSD | ~1,400,000 IOPS | PCIe |
Samsung 870 EVO | SSD | ~98,000 IOPS | SATA 3 |
Samsung 980 PRO | NVMe | ~1,000,000 IOPS | PCIe 4.0 x4 |
WD Black SN850 | NVMe | ~700,000 IOPS | PCIe 4.0 x4 |
Samsung 970 EVO Plus | NVMe | ~620,000 IOPS | PCIe 3.0 x4 |
SK Hynix Platinum P41 | NVMe | ~1,400,000 IOPS | PCIe 4.0 x4 |
Micron 9650 SSD | NVMe | ~5,500,000 IOPS | PCIe 6.0 x4 |
Azure Premium SSD v2 | NVMe | ~80,000 IOPS | NVMe |
Azure Ultra Disk | NVMe | ~400,000 IOPS | NVMe |
Важное отличие SSD от HDD — существенная разница между производительностью чтения и записи, что связано с особенностями работы NAND-памяти
Поставщики систем хранения часто ссылаются на IOPS для характеристики производительности твердотельных накопителей (SSD), жестких дисков (HDD) и сетей хранения данных. Однако число операций ввода-вывода в секунду не является фактическим эталонным тестом, а цифры, предлагаемые поставщиками, могут не соответствовать реальной производительности.
Наряду со скоростью передачи, которая измеряет, насколько быстро данные могут быть переданы из непрерывных хранилищ, IOPS можно использовать для измерения производительности хранилища. В то время как скорость передачи измеряется в байтах, а IOPS измеряется как целое число.
В качестве измерения IOPS можно сравнить с числом оборотов двигателя автомобиля в минуту. Если автомобиль находится на нейтралке, и утверждать, что двигатель способен вращаться со скоростью 10 000 об/мин в этот момент, бессмысленно. Без учета размера блока данных (или размера ввода-вывода), активности чтения/записи или потока ввода-вывода, IOPS как автономное измерение мало что говорит, так, что НЕ ВЕДИТЕСЬ на маркетинг
Жесткие диски используют стандартное уравнение для определения операций ввода-вывода в секунду, но твердотельные накопители работают иначе. Для жестких дисков IOPS зависит от времени поиска, а твердотельные накопители в первую очередь зависят от внутреннего контроллера устройства. Производительность SSD меняется со временем, достигая пика на ранней стадии. Однако даже после перехода в устойчивое состояние твердотельные накопители по-прежнему превосходят жесткие диски с точки зрения операций ввода-вывода в секунду. Жесткие диски также борются с более высокой задержкой и более длительным временем чтения/записи.
RAID-пенальти для разных типов массивов
RAID-пенальти — это дополнительная нагрузка на систему хранения, связанная с обеспечением избыточности и отказоустойчивости в RAID-массивах. Операции чтения обычно не несут пенальти, так как могут выполняться с любого диска, а вот операции записи требуют дополнительных действий в зависимости от типа RAID.
Тип RAID | Пенальти записи | Объяснение |
---|---|---|
RAID 0 | 1 | Отсутствие избыточности, данные записываются один раз |
RAID 1 | 2 | Данные записываются на два зеркальных диска |
RAID 5 | 4 | Требуются операции: чтение старых данных, чтение четности, запись новых данных, запись новой четности |
RAID 6 | 6 | Аналогично RAID 5, но с двумя контролями четности |
RAID 10 | 2 | Комбинация зеркалирования и страйпинга |
IOPS в контексте современных систем хранения: практические примеры
В современных системах хранения данных IOPS становится критическим параметром для различных сценариев использования:
Виртуальные среды (VDI)
В виртуальных средах типичное соотношение операций составляет 80-90% записи и только 10-20% чтения. Это требует использования RAID-массивов с низким пенальти записи (например, RAID 10) и SSD-накопителей с высокими показателями случайной записи 1.
Понимание характеристики рабочей нагрузки является наиболее критическим фактором, поскольку от этого и зависит выбор оптимального RAID для среды. Приложения которые интенсивно используют операции на запись являются хорошими кандидатами для RAID 10, тогда как приложения которые интенсивно используют операции на чтение могут быть размещены на RAID 5.
Базы данных
СУБД часто генерируют интенсивные рабочие нагрузки со случайным доступом. Для систем управления базами данных рекомендуется использовать массивы с высокими показателями IOPS случайного чтения/записи.
Веб-хостинг и высоконагруженные сайты
Современные веб-сайты используют многоуровневое кэширование, но в определенных сценариях (холодный кэш, большие объемы данных, персонализированный контент) производительность диска становится критическим фактором 8.
Пример расчета требований для веб-сервера:
Требуется: 600 IOPS чтения + 300 IOPS записи
Используется RAID 5 (пенальти = 4)
Общие требуемые IOPS = 600 + (300 × 4) = 1800 IOPS 6
Анализ больших данных
Обработка больших объемов данных требует как высоких показателей последовательного чтения/записи для обработки больших файлов, так и случайного доступа для быстрого поиска и агрегации. В качестве примера сравним, как две рабочие нагрузки, обращающиеся к одному и тому же количеству данных, требуют существенно разного количества операций ввода-вывода в секунду. Первая рабочая нагрузка требует чтения десяти файлов размером 750 МБ, 7,5 ГБ, а передача занимает 100 секунд. Это означает, что скорость передачи данных составляет 75 МБ/с и потребляется 10 операций ввода-вывода в секунду, что вполне соответствует возможностям одного жесткого диска. Вторая рабочая нагрузка требует чтения десяти тысяч файлов 750 КБ, такого же объема данных, 7,5 ГБ, но потребляет 10 000 операций ввода-вывода в секунду. Поскольку обычный диск не может генерировать более 200 операций ввода-вывода в секунду, этот запрос не будет выполнен за те же 100 секунд. Это пример того, как разные рабочие нагрузки могут требовать существенно разной производительности при использовании одной и той же емкости хранилища.
Формулы расчета IOPS
Есть два сценария вычисления IOPS-ов. Один из сценариев это когда есть определенное число дисков, и мы хотим знать, сколько IOPS эти диски выдадут? Второй сценарий, когда мы знаем сколько нам IOPS-ов надо, и хотим вычислить нужное количество дисков?
Правильный способ измерить производительность массива all-flash или даже гибридного массива - это разработать статистику производительности на основе конкретных рабочих нагрузок или сочетания рабочих нагрузок. Например, запустите тест производительности SQL и тест производительности VDI одновременно в одной и той же системе хранения и вместо составления отчетов о потребленных IOPS создайте отчет о данных, которые являются более ощутимыми и актуальными для центра обработки данных. В этом случае это может быть количество одновременных пользователей SQL и поддерживаемых экземпляров VDI при сохранении приемлемого времени отклика.
Functional IOPS = (((Total Raw IOPS × % Write)) / (RAID Penalty)) + (Total Raw IOPS × % Read)
Total Raw IOPS = IOPS диска × количество дисков
% Write = процент операций записи
% Read = процент операций чтения 1
Предположим, что у нас есть 20 дисков. Total Raw IOPS = 170*20 = 3400 IOPS (один 15K RPM диск может выдать в среднем 170 IOPS).
RAID | HDD/SSD (шт) | Формула |
---|---|---|
RAID 5 | 20 | Total Raw IOPS = 170*20 = 3400 IOPS. Вариант 1 - (80%Write 20%Read) Functional IOPS = (((3400*0.8))/(4))+(3400*0.2) = 1360 IOPS Вариант 2 - (20%Write 80%Read) Functional IOPS = (((3400*0.2))/(4))+(3400*0.8) = 2890 IOPS |
RAID 1 | 20 | Total Raw IOPS = 170*20 = 3400 IOPS. Вариант 1 (80%Write 20%Read) Functional IOPS = (((3400*0.8))/(2))+(3400*0.2) = 2040 IOPS Вариант 2 (20%Write 80%Read) Functional IOPS = (((3400*0.2))/(2))+(3400*0.8) = 3100 IOPS |
Расчет минимального количества дисков
Подсчет количества дисков для достижения определенного количества IOPS. Рассмотрим ситуацию где нам надо определить тип RAID-а и количества дисков для достижения определенного количества IOPS-ов 5000 и с определенными рабочими нагрузками, например 80%Write20%Read и 20%Write80% Read.
Количество дисков = (Требуемые IOPS чтения + (Требуемые IOPS записи × Пенальти RAID)) / IOPS одного диска
Пример расчета для нагрузки 80% записи, 20% чтения:
Требуется: 5000 IOPS
RAID 5: количество дисков = (1000 + (4000 × 4)) / 170 ≈ 100 дисков
RAID 10: количество дисков = (1000 + (4000 × 2)) / 170 ≈ 53 диска
Понимание и подсчет IOPS, RAID пенальти, и характеристик рабочих нагрузок очень критичны аспект при планировании. Когда нагрузка более интенсивна на запись луче выбирать RAID 10 и наоборот при нагрузках на чтение RAID 5.
Обновляемая производительность
Как указывалось выше, большинство массивов all-flash обеспечат большую производительность, чем большинство центров обработки данных могут использовать сегодня. Но сегодня ключевое слово здесь. По мере того, как плотность виртуальных серверов и виртуальных рабочих столов, а также количество пользователей на экземпляр базы данных продолжают масштабироваться, центрам обработки данных будет требоваться все больше и больше производительности. Сам флэш-носитель станет немного быстрее, но ключевым препятствием на пути к увеличению производительности станет контроллер хранилища и эффективность программного обеспечения хранилища.
Функции и возможности программного обеспечения хранения увеличивают производительность флеш-памяти. Эффективность этого программного обеспечения хранения в том, как оно выполняет эти различные возможности, имеет решающее значение для общей производительности. К счастью, поставщик all-flash имеет доступ к постоянно растущей вычислительной мощности, которая может маскировать большую часть накладных расходов на программное обеспечение хранения. Тем не менее, очень важно, чтобы поставщик флэш-памяти мог предоставить возможность обновления для своего аппаратного обеспечения контроллера, чтобы их клиенты могли воспользоваться преимуществами увеличивающейся мощности каждой итерации процессоров Intel.
Интересные факты, ситуации иаспекты, которые важно учитывать
Эффект уменьшения производительности SSD: В ходе тестирования Intel X25-E 64 GB G1 было обнаружено, что после первых 8 минут теста с высокой нагрузкой IOPS снижался с 10,000 до 3,000-4,000 IOPS и стабилизировался на этом уровне. Даже после снижения производительность SSD значительно превосходила HDD.
Влияние размера блока: Увеличение размера блока приводит к уменьшению IOPS, так как на обработку каждой операции требуется больше времени.
Парадокс кэширования: Современные системы активно используют кэширование, что минимизирует дисковые операции. Однако при "холодном" кэше (после перезагрузки) или работе с большими объемами данных, не помещающимися в кэш, производительность IOPS становится критической.
Многофакторность производительности: На реальные показатели IOPS влияет множество факторов — от конструкции устройства до "погоды на Солнце"
- Помимо IOPS, критически важным параметром является задержка (Latency) — время выполнения отдельной операции ввода-вывода. Низкая задержка особенно важна для приложений, чувствительных к времени отклика, таких как базы данных и системы реального времени.
- Влияние интерфейсов - Развитие интерфейсов (SATA, SAS, PCIe) значительно расширяет потенциал систем хранения. Накопители PCIe демонстрируют на порядок лучшую производительность по сравнению с SATA-устройствами.
- Виртуализация и облачные среды - В виртуализации и cloud-средах провайдеры часто ограничивают IOPS для виртуальных машин. При выборе хостинга важно учитывать не только объем дискового пространства, но и показатели IOPS.
- Проактивный мониторинг - Регулярный мониторинг дисковых операций с помощью инструментов вроде
iotop
позволяет заблаговременно выявлять потенциальные проблемы и планировать масштабирование систем хранения.
Программы для измерения IOPS
IOmeter — http://www.iometer.org/ - тест IOPS
IOzone — http://www.iozone.org/ - тест IOPS
FIO — http://freecode.com/projects/fio - тест IOPS
CrystalDiskMark — http://crystalmark.info/software/CrystalDiskMark/index-e.html - тест IOPS
SQLIO — http://www.microsoft.com/en-us/download/details.aspx?id=20163 - набор тестов для расчета производительности (IOPS, MB, Latency) под сервера БД
wmarow — http://wmarow.com/strcalc/ - калькулятор RAID групп по производительности IOPS
Немного выводов
IOPS остается фундаментальным показателем производительности систем хранения данных, несмотря на развитие технологий кэширования и увеличение объемов оперативной памяти. Понимание сущности IOPS, методов его расчета и факторов влияния позволяет проектировать эффективные и сбалансированные системы хранения, отвечающие требованиям современных приложений и сервисов.
При проектировании систем хранения важно учитывать не только пиковые значения IOPS, но и характер рабочей нагрузки, соотношение операций чтения/записи, тип используемого RAID-массива и задержку выполнения операций. Комплексный подход к оценке производительности дисковых систем позволяет избежать "узких мест" и обеспечить стабильную работу приложений даже в условиях интенсивных нагрузок.
Как показывает практика, инвестиции в оптимальную конфигурацию систем хранения окупаются за счет повышения отзывчивости приложений, снижения времени простоя и возможности масштабирования под растущие бизнес-потребности.