Тестировать флеш-массивы мы начали по просьбе одного нашего крупного заказчика, который никак не мог определиться с решением по системе хранения данных, которое решало бы его задачи. Однако, тема оказалась настолько актуальной и интересной, что скоро вышла за пределы одного конкретного проекта. Со временем, была отработана собственная методика, написаны скрипты и собран уникальный фактический материал. Захотелось поделиться им с коллегами. Честно, без лишних восторгов и мифов, просто факты. Эта статья откроет серию независимых публикаций, каждая их которых будет посвящена тестированию какого-то конкретного массива или сопутствующей технологии. Однако, сперва нам придется сказать несколько слов о том, чем отличаются SSD накопители от обычных жестких дисков (HDD) и какие особенности, вследствие этого, появляются при тестировании систем хранения данных построенных на их основе.
Заранее прошу прощения за прописные истины. Винчестер (HDD) — это мотор, пластины, головки и контроллер. При чтении/записи контроллер диска перемещает головки на нужную дорожку, ждет, когда диск повернется нужным сектором и читает/пишет данные. При таком алгоритме, производительность напрямую зависит от скорости вращения шпинделя и скорости перемещения головок. Оба имеют механические и электромеханические ограничения. Значимого улучшения этих показателей не наблюдается уже больше десятилетия (диски со скоростью вращения шпинделя 15000 об/мин появились лет 12 назад).
Что обычно измеряют на жестких дисках?
1. Замеряется IOPS (количество операций ввода-вывода, производимых в секунду) и Latency (время отклика)при произвольной (random) нагрузке небольшими блоками. Количество IOPS, выдаваемых HDD, слабо зависит от:
- размера блоков (основные задержки связаны с механикой, а не скоростью чтения-записи с пластин).
- от типа нагрузки (то есть от того, читаем мы или пишем).
2. Bandwidth (пропускная способность) при потоковом вводе выводе. Показатели слабо зависят от типа нагрузки, но значимо зависят от положения головок по отношению к центру диска (Zone Bit Recording)
Отметим, что скорость работы HDD не зависит от истории нагрузки, то есть мы получим одинаковые IOPS на одинаковой нагрузке, и в начале теста, и в конце. HDD с одинаковой частотой вращения шпинделя разных производителей, как правило, практически не отличаются по производительности – механика примерно одинаковая, а контроллер давно перестал быть ограничивающим производительность фактором.
Теперь, вернемся к SSD накопителям (не обязательно в дисковом форм-факторе). Стандартный SSD состоит из контроллера(ов) и набора микросхем памяти. Микросхемы памяти состоят (очень упрощенно) из блоков (как правило — 4K), организуемых в страницы. Данные всегда записываются в свободное место, последовательно заполняя свободные страницы, не зависимо от того новые это данные или изменение уже существующих. Копии измененных блоков данных не стираются, а только помечаются как устаревшие. Удалением «устаревших» копий блоков данных на SSD занимается специальный процесс – Garbage Collection (GC), который (в общем случае) выполняет следующие операции:
- Выбирает страницы с наибольшим процентом «устаревших» копий данных;
- Переписывает все актуальные данные в новую страницу;
- Очищает страницу.
Обычно «сборка мусора» (Garbage Collection) производится в фоновом режиме в то время, когда система не загружена, но при длительной нагрузке на запись, этот процесс начинает сильно ограничивать производительность SSD, т.к. скорость работы процесса Garbage Collection ощутимо ниже пиковой скорости работы SSD на запись. Феномен падения производительности SSD при длительной нагрузке на запись называется Write Cliff
Производители SSD накопителей пытаются нивелировать влияние процессов Garbage Collection через:
- Резервирование значимого кол-ва страниц SSD накопителя для поглощения пиков нагрузки на запись. Ряд производителей даже позволяют делать низкоуровневое форматирование SSD накопителей, увеличивающее этот резерв за счет объема диска, повышая нагрузочные характеристики SSD по записи.
- Создание отдельных сервисных процессоров, занимающихся «сборкой мусора» в дополнение к основным контроллерам.
Производительность SSD очень значимо зависит от типа микросхем памяти, способа их организации, используемых контроллеров на диске, интерфейса ввода-вывода и, в отличие от обычных HDD, где, по сути, все диски с одинаковой частотой вращения шпинделя обладают сопоставимой производительностью, разные SSD накопители могут отличаться по производительности в разы.
Что обычно измеряют на флеш-дисках и флеш-массивах?
1. IOPS и latency при произвольной (random) нагрузке. В отличие от HDD тут есть зависимость от размера блока и типа нагрузки, то есть пишем мы или читаем. Соответственно, в случае SSD приходится делать группы тестов с изменением отношения количества операций чтения к операциям записи, с изменяющимся размером блока.
2. Изменение производительности SSD при длительных операциях записи, с целью определения:
- Максимальный объем данных, которые можно записать на дисковый массив до начала работы процесса Garbage Collection;
- Производительность процесса Garbage Collection, которую можно рассматривать, как максимально среднюю производительность дискового массива на операциях записи.
Бесполезно замерять bandwidth при потоковом вводе выводе, так как архитектура SSD подразумевает фрагментацию данных.
Что важно – после каждого теста на запись определяющего пиковую производительность дискового массива, необходимо делать паузу для нивелирования влияния процессов Garbage Collection
Архитектура флеш-массивов и оптимизированность их контроллеров под использование SSD играет очень важную роль в определении показателей производительности всего массива. При пиковой производительности одного SSD накопителях в 50000 IOPS, ограничивающим фактором может стать производительность контроллера дискового массива. Такое часто случается при попытках отдельных производителей сделать флеш-массив из обычного через установку в него SSD дисков. Кроме того, контроллер массива значимо добавляет latency, которая раньше была не заметна на HDD системах:
- latency HDD ~4ms,
- latency контроллера массива ~0,2-0,4 ms
- latency SSD накопителя, как правило <0,2 ms
Не оптимизированный контроллер может существенно снизить характеристики используемого SSD накопителя.
Ещё один важный момент: СХД SSD потенциально способен выдавать миллионы IOPS. При тестировании, ограничивающим фактором может стать сам генератор нагрузки, поэтому конфигурация сервера(ов) генерирующего нагрузку, должна учитывать особенности SSD. Необходимо правильным образом настраивать планировщики, размеры очередей ввода-вывода и т.п., максимально распараллеливать тест: маловероятно на одном LUN на весь объем дискового массива получить заявляемые производителем показатели.
На этом, полагаю, теории достаточно – пора переходить к практике. Читайте в следующей статье: Тестирование СХД IBM RamSan FlashSystem 820.
P.S. Автор выражает сердечную благодарность Павлу Катасонову, Юрию Ракитину и всем другим сотрудникам компании участвовавшим в подготовке данного материала.
Автор: MrCleaner