SSD в серверах и некоторые принципы

31 октябрь, 2016 - 21:04Андрій Тищенко

Это теперь мы понимаем, как просто выбирать HDD. Разнообразие SSD – вот что внушает страх неискушенному потребителю, перед витриной. Если речь о носителе для ПК, риск промахнуться невелик. В серверах цена ошибочного выбора слишком высока, чтобы игнорировать различия между SSD.

“Знание некоторых принципов легко возмещает незнание некоторых фактов”
К.А. Гельвеций

Закон рынка: потребитель должен иметь выбор. Но тот же потребитель взвыл бы, оказавшись перед огромной темной массой предложения, без средств сортировки продуктов: каталогов товарных категорий и фильтров по меткам. Он может слабо разбираться в технических характеристиках и, как правило, обходится минимумом опорных точек: известностью бренда, размером (который, всем известно, имеет значение), ценой. Но выбор дайте.

Захоти он разобраться в многообразии SSD, c чего начать: типа ячеек NAND, свойств контроллера, оценки умозрительных IOPS?  Любые параметры становятся полезной информацией только после уяснения модели нагрузок в целевых приложениях. Что до цены – она всегда важна, но сравнивать можно то, что подходит под задачу. Если не подходит – какой с него прок?

Самый простой рецепт первичного отбора SSD – чтение документации производителя. Взять Samsung и его популярную серию SSD 850 Pro. Производитель поместил ее в раздел Consumer SSD и везде пишет, что эта серия предназначена для ПК. С его точки зрения, этим SSD нечего делать в серверах. Есть раздел Enterprise SSD, в нем – серии SM863 и PM863, их и ставьте. Ставят 850 Pro. Разве не странно, ценить бренд, но при этом  пользоваться его продуктами не по назначению?

Комитет по стандартам JEDEC в своих определениях SSD исходит из таких показателей:

серверные SSD – те, что могут работать в режиме 24/7 при температуре до 550 ;
клиентские SSD – предназначенные для работы 8 часов в день при температуре до 400.

Ежели кому JEDEC – не указ, дальше можно не читать.

Производительность

Посмотрим на характеристики двух семейств SSD еще от одного известного производителя, SanDisk. Первые - для персональных устройств, вторые – под (некоторые) корпоративные приложения.

SSD в серверах и некоторые принципы

Получается, производительность клиентских SSD выше, чем у серверных SSD, при том, что стоят они вдвое дешевле.  Как же так?

В подробных спецификациях клиентских SSD, например, таких:

SSD в серверах и некоторые принципы

есть примечание в скобках (8GB Span), которое говорит о том, что такую производительность показывает SSD в состоянии FOB (Fresh of the Box) – то есть, пустой.

Cпецификации серверных SSD выглядят иначе, например, так:

SSD в серверах и некоторые принципы

Замеры производительности серверных SSD всегда делаются на заполненном диске, да еще несколько раз перезаписанном, под разнотипной нагрузкой.

 

Все становится понятно из графика

SSD в серверах и некоторые принципы

Источник:::   SNIA Performance Test Specification Client 1.1, http://www.snia.org/sites/default/files/SSS%20PTS%20Client%20-%20v1.1.pdf

Диск “из коробки” (FOB) не находился под нагрузкой, его ячейки пусты. Их заполнение не требует рекультивации (сбора мусора - переноса данных на чистые страницы памяти - стирания освободившихся страниц - перезаписи ячеек). Потому их показатели производительности необыкновенно высоки. В переходном состоянии (Transition) производительность деградирует – по мере того, как нагрузка принуждает контроллер все чаще выполнять циклы read-modify-write.  Устойчивое состояние (Steady State) наступает после продолжительной интенсивной перезаписи данных в ячейки SSD по всему объему. 

В ПК нагрузка на дисковую подсистему не только вялая, но еще и потоковая (считал файл – записал файл). Серверная нагрузка ввода-вывода принципиально иная - с длинными очередями рандомных обращений к дискам, короткими блоками. Под виртуализацией все еще хуже:  “блендер” виртуализации перемалывает нагрузку любого типа в мелкий порошок. С какими бы типами данных не работали приложения, со стороны дисков нагрузка выглядит как непрерывное хаотичное бомбометание.

Серверные SSD к такому режиму работы готовы. Их контроллеры, прошивки, процедуры (фонового сбора мусора), избыток резервных ячеек позволяют им сохранять высокий уровень производительности на протяжении всего срока службы. Клиентские SSD, помещенные в несвойственную им среду, резко сбрасывают показатели, и, как правило, быстро отдают концы.

Пожалуй, главное в погоне за производительностью ввода-вывода - не выбор производителя SSD и конкретных моделей дисков, а грамотное обустройство дисковой подсистемы под планируемый набор приложений. К примеру, протокол 12 Гбит SAS всегда будет иметь превосходство над 6 Гбит SATA – из-за полосы пропускания,  двунаправленной передачи данных и глубины очереди команд. Протокол NVMe  дает радикальный скачок в пропускной способности и снижении задержек обращения к дискам. Вооруженный технологическим знанием потребитель всегда добьется большего, чем сноровистый читатель прайс-листов.

Надежность


Относящаяся к надежности выборка параметров серверного SSD выглядит примерно так:

SSD в серверах и некоторые принципы


Если первые три параметра носят вероятностный характер, то четвертый достаточно четко определяет пределы живучести SSD, ресурс перезаписи его ячеек. Для серверных SSD показатели  обычно находятся в диапазоне 3-10 DWPD, встречается 25 DWPD. Клиентские SSD не дотягивают до 0.2 DWPD. Иногда указывают абсолютное значение ресурса перезаписи на протяжении жизни SSD, в петабайтах:

SSD в серверах и некоторые принципы


Параметр UBER (частота невосстановимых ошибок) – это вероятность того, что сектор данных не будет прочитан, из-за ошибки при размещении данных. При UBER = 10-15 потеряется один бит данных на 1015 операций чтения. Хорошо если повредится пиксел архивной фотографии. А если пострадает  бухгалтерская запись?

SSD в серверах и некоторые принципы



Как видно, серверные SSD в среднем в 100 раз устойчивее клиентских SSD к фатальным ошибкам.

Одним из основных “убийц” SSD является Write Amplification (WA). Контроллер SSD пишет во флэш-память намного больше данных, чем ему передает операционная система. Операции записи порождаются процедурам перемещения  данных read- modify-write для освобождения страниц под запись, сбором мусора, проверками целостности данных.

Write Amplification = Amount of Data Written to Flash / Amount of Data Written by Host

WA — это в чистом виде накладные расходы (штрафы) на запись, прямой урон производительности. За большим значением WA для любого SSD прячется призрак смерти, ускоренного износа ячеек. Клиентские SSD в зоне особой опасности.

Помогает сохранять высокий уровень производительности и живучести накопителя Over Provisioning (OP) — избыток ячеек, выделяемый производителем или пользователем при форматировании SSD.

Over Provisioning = (Physical capacity — User Capacity) / User Capacity

OP — служебная область, недоступная ОС и приложениям. Этот резерв ячеек контроллер SSD использует для переноса данных при освобождении страниц под запись. По мере заполнения данными любого SSD, остается все меньше свободного места для перемещения данных. При забитом под завязку SSD и малом OP контроллеру нет пространства для маневра. В клиентских SSD OP не превышает 3-5%. В серверных SSD можно встретить и 30%.

Картинка «Write Amplification vs Over Provisioning» дает хорошее представление о плохих прогнозах.

SSD в серверах и некоторые принципы

Целостность данных

Нам хочется думать, что по команде записи, поступившей от ОС, данные гарантированно и сразу попадают в постоянную память — то есть, на диски. В случае SSD — во флэш-память. Это не так. Контроллер SSD сам себе командир и распорядитель своей флэш-памяти. До помещения в ячейки NAND контроллер прогоняет цепочки данных через свою динамическую память, обычную DRAM. Она ему нужна для работы внутреннего RAID, под сборки модифицируемых данных, в сервисных процедурах.

Зависимость этой памяти от внешнего питания ставит под угрозу целостность сохраняемых данных. Сервер может запитываться через UPS, но при этом внезапно умереть, по множеству причин. Чтобы не потерять данные, на платах контроллеров серверных SSD размещают конденсаторные цепи, например, на твердотельных танталовых конденсаторах. Их остаточного заряда достаточно для корректного завершения транзакций и переноса данных в энергонезависимую флэш-память.

В клиентских SSD никаких конденсаторов нет.

Как быть?

Клиентские SSD, они же бытовые или потребительские, не являются критичным ресурсом. C них невелик спрос, любые возможные потери — личное дело каждого. Напротив, серверные SSD — коллективный инструмент производства. Хочешь быть эффективным, и заодно избежать нанесения масштабного вреда — читай матчасть. Клод Адриан Гельвеций писал о том же: «Источником, порождающим наибольшее число общественных бедствий, является невежество».