Это теперь мы понимаем, как просто выбирать HDD. Разнообразие SSD – вот что внушает страх неискушенному потребителю, перед витриной. Если речь о носителе для ПК, риск промахнуться невелик. В серверах цена ошибочного выбора слишком высока, чтобы игнорировать различия между SSD.
“Знание некоторых принципов легко возмещает незнание некоторых фактов”
К.А. Гельвеций
Закон рынка: потребитель должен иметь выбор. Но тот же потребитель взвыл бы, оказавшись перед огромной темной массой предложения, без средств сортировки продуктов: каталогов товарных категорий и фильтров по меткам. Он может слабо разбираться в технических характеристиках и, как правило, обходится минимумом опорных точек: известностью бренда, размером (который, всем известно, имеет значение), ценой. Но выбор дайте.
Захоти он разобраться в многообразии SSD, c чего начать: типа ячеек NAND, свойств контроллера, оценки умозрительных IOPS? Любые параметры становятся полезной информацией только после уяснения модели нагрузок в целевых приложениях. Что до цены – она всегда важна, но сравнивать можно то, что подходит под задачу. Если не подходит – какой с него прок?
Самый простой рецепт первичного отбора SSD – чтение документации производителя. Взять Samsung и его популярную серию SSD 850 Pro. Производитель поместил ее в раздел Consumer SSD и везде пишет, что эта серия предназначена для ПК. С его точки зрения, этим SSD нечего делать в серверах. Есть раздел Enterprise SSD, в нем – серии SM863 и PM863, их и ставьте. Ставят 850 Pro. Разве не странно, ценить бренд, но при этом пользоваться его продуктами не по назначению?
Комитет по стандартам JEDEC в своих определениях SSD исходит из таких показателей:
Ежели кому JEDEC – не указ, дальше можно не читать.
Посмотрим на характеристики двух семейств SSD еще от одного известного производителя, SanDisk. Первые - для персональных устройств, вторые – под (некоторые) корпоративные приложения.
Получается, производительность клиентских SSD выше, чем у серверных SSD, при том, что стоят они вдвое дешевле. Как же так?
В подробных спецификациях клиентских SSD, например, таких:
есть примечание в скобках (8GB Span), которое говорит о том, что такую производительность показывает SSD в состоянии FOB (Fresh of the Box) – то есть, пустой.
Cпецификации серверных 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 показатели обычно находятся в диапазоне 3-10 DWPD, встречается 25 DWPD. Клиентские SSD не дотягивают до 0.2 DWPD. Иногда указывают абсолютное значение ресурса перезаписи на протяжении жизни SSD, в петабайтах:
Параметр UBER (частота невосстановимых ошибок) – это вероятность того, что сектор данных не будет прочитан, из-за ошибки при размещении данных. При UBER = 10-15 потеряется один бит данных на 1015 операций чтения. Хорошо если повредится пиксел архивной фотографии. А если пострадает бухгалтерская запись?
Как видно, серверные 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 сам себе командир и распорядитель своей флэш-памяти. До помещения в ячейки NAND контроллер прогоняет цепочки данных через свою динамическую память, обычную DRAM. Она ему нужна для работы внутреннего RAID, под сборки модифицируемых данных, в сервисных процедурах.
Зависимость этой памяти от внешнего питания ставит под угрозу целостность сохраняемых данных. Сервер может запитываться через UPS, но при этом внезапно умереть, по множеству причин. Чтобы не потерять данные, на платах контроллеров серверных SSD размещают конденсаторные цепи, например, на твердотельных танталовых конденсаторах. Их остаточного заряда достаточно для корректного завершения транзакций и переноса данных в энергонезависимую флэш-память.
В клиентских SSD никаких конденсаторов нет.
Клиентские SSD, они же бытовые или потребительские, не являются критичным ресурсом. C них невелик спрос, любые возможные потери — личное дело каждого. Напротив, серверные SSD — коллективный инструмент производства. Хочешь быть эффективным, и заодно избежать нанесения масштабного вреда — читай матчасть. Клод Адриан Гельвеций писал о том же: «Источником, порождающим наибольшее число общественных бедствий, является невежество».