Рынок SSD развивается семимильными шагами — наличием твердотельного накопителя в составе системного блока вряд ли кого удивишь. Производители наперебой советуют нам те или иные новые девайсы, новые контроллеры, новые фишки и оптимизации, подталкивая пользователя к покупке именно их девайсов. Один из инструментов влияния — скоростные показатели накопителя, которые в случае использования SATA-накопителя упираются в пропускную способность интерфейса, а в случае использования NVMe накопителя — в возможности контроллера и массива памяти SSD.
Сегодня нам бы хотелось поговорить о нескольких вещах, влияющих сразу и на производительность, и на стабильность скоростных характеристик, и на срок службы накопителя. Речь идет о резервной области накопителя и о том, какие чудеса и полезные фишки несет ее изменение. Скажем прямо: тема — не нова, существует со времен возникновения твердотельных накопителей, и многое взято из разных источников интернете. Основная же идея в любом случае одна: как резервная область влияет на показатели SSD.
Резервная область на твердотельном накопителе скрыта от глаз пользователя и используется под нужды SSD: она доступна только контроллеру самого накопителя. Нужды контроллера могут быть разнообразными, однако сводятся к двум важным вещам: использованию под кэш и резерв для замены битых или изношенных ячеек. Рассмотрим обе ситуации отдельно.
Резервная область для кэша
Резервная область может использоваться накопителем для ускорения записи в NAND, путем создания буфера SLC-кэша из доступного массива NAND. В результате скоростные характеристики накопителя при использовании режима SLC-кэширования выше на операциях чтения/записи, но лишь в пределах выделенной под кэш области, как правило, фиксированной на уровне прошивки контроллера. После исчерпания доступного кэша пользователь неизбежно столкнется с падением производительности SSD. Особенно ярко это видно при использовании накопителей с TLC или 3D TLC NAND, где скоростные характеристики самой NAND в силу ее конструктивных особенностей ощутимо ниже, чем у собратьев на MLC NAND и ее вариациях.
Резервная область для продления жизни SSD
У всех твердотельных накопителей есть показатель под названием TBW, указывающий фактический ресурс перезаписи ячеек. Иными словами — сколько раз пользователь может записывать и считывать данные на SSD. Ресурс обычно выражен значением в терабайтах (TB), соответственно, чем выше это значение, тем выше вероятность того, что SSD проживет дольше. Тем не менее, это не отменяет два факта: SSD может внезапно умереть из-за отказа контроллера или из-за сбоя питания от некачественного блока питания ПК, в результате фактических отказов микросхем NAND.
Задумывались ли вы когда-нибудь, почему у определенных накопителей указан один объем TBW, а у других, той же емкости — совершенно другой, причем разница бывает и двукратной? Ответ кроется в пределах рассматриваемой нами проблематики, а именно — в размере резервной области накопителя. Если резервная область накопителя больше, то и дополнительных ячеек на замену изношенных или битых будет больше, соответственно и оперировать ими контроллер сможет до их фактического исчерпания. Отсюда и получается, что у одного накопителя размер резервной области под нужды фактического выравнивания износа и замены выработавших ресурс ячеек ниже, при этом и ресурс TBW весьма скромный, а у другого SSD, напротив, больше размер резервной области, потому и ресурс TBW указан заведомо выше.
ReserveSSD-2.jpg
Кстати, вы наверняка в курсе того, что на рынке продаются накопители не только 120GB, но и 128GB: аналогично 240GB и 256GB и т. д. Секрет этих накопителей прост — разный размер резервной области при одинаковом массиве NAND. Угадайте, какие накопители более выносливы? Хочется сказать, что первые, но это далеко не всегда так: мы не можем точно знать реальный размер массива NAND-накопителя, соответственно не можем и утвердительно сказать, какой из них более вынослив.
Большинство накопителей, присутствующих на рынке, имеет одинаковое количество парных микросхем NAND, поэтому при одинаковом массиве NAND надежнее и быстрее будет тот, который имеет больший размер резервной области. Иными словами, при равных условиях 120GB будет более выгодным приобретением, чем 128GB, та же история с 240GB и 256GB.
Как узнать резервную область накопителя?
Часть 1. Где мои гигабайты?
Для начала обратимся к теории. Имея на руках, предположим, накопитель на 240GB и установив его в систему, после форматирования мы получим уже не 240GB, а примерно 224GB. Но если мы возьмем накопитель на 256GB и отформатируем в Windows, то увидим, что нам доступно примерно 238,4GB. Куда делись наши гигабайты? Чтобы ответить на этот вопрос, нужно немного погрузиться в теорию и разобраться, как же вообще формируется объем SSD и в чем он измеряется.
Часть 2. Гигабайты vs гибибайты
Традиционно емкость любого SSD мы можем измерить в гигабайтах (GB) — это именно то, что мы видим на сайтах производителей и на упаковке самого товара. Гигабайты — это десятичные приставки, все мы помним примерно ту же ситуацию и с обычными HDD. Производители при указании объема пользуются формулой 1 гигабайт = 1 миллиард байт, что далеко от истины. Корректнее же отображает ёмкость новый измеритель, более реальный — гибибайт. Таким образом, если 1 гигабайт — это 1 млрд. байт, то 1 гибибайт ~ 1,074 * 109 байт.
ReserveSSD-3.jpg
Реальная емкость накопителя
Получается, все без исключения производители указывают объем накопителя в гигабайтах, в то время как операционная система на самом деле оперирует гибибайтами. Типовой размер резервной области, то есть эдакий негласный стандарт, составляет примерно 7% от реальной емкости массива NAND-накопителя. Чтобы узнать реальный объем NAND в гибибайтах, нужно поделить емкость накопителя в гигабайтах на 1,073741824.
Именно эти цифры мы видим после форматирования в операционной системе: 240GB накопитель превращается в доступные пользователю 224GiB, а 256GB накопитель превращается в 238,4GiB. Зачем вообще это считать, ведь операционная система сама это делает? Ответ как раз прост: на SSD емкостью 256GB размер резервной области максимально небольшой, условно — его совсем нет, в то время как на 240GB накопителе резервная область есть, и она скрыта от пользователя.
Что конкретно мне дает резервная область?
Как уже было сказано выше, резервная область напрямую влияет на усиление записи в NAND (тот самый кэш), а также на возможности контроллера оперировать доступными ячейками под нужды выравнивания износа и замены выработавших ресурс ячеек. Если мы имеем на руках относительно недорогой накопитель в 256GB на TLC или 3D TLC NAND, то отсутствие резервной области или ее маленький размер приведет сразу к двум вещам. Во-первых, к нестабильным и откровенно низким скоростям записи/чтения при любых более-менее серьезных и не очень нагрузках на накопитель. Контроллер будет просто не в состоянии их обработать. Во вторых, будет более скромный реальный ресурс перезаписи у накопителя. Контроллеру просто негде будет взять доступные ячейки для оперативной замены выработавших ресурс ячеек или выравнивания износа в процессе работы.
Что происходит с производительностью?
Выше мы пришли к выводу, что объем резервной области напрямую влияет на производительность накопителя. Чем больше резервных блоков доступно контроллеру, тем выше вероятность, что при высокой нагрузке сам контроллер отреагирует корректно и произведет все операции верно. Тем самым ситуации перегрузки, подвисания и подтормаживания накопителя сводятся к минимуму, как и число ошибок, возникающих при операциях с накопителем. Пользователь перестает ощущать дискомфорт и наслаждается стабильной работой девайса.
Пример тестирования
К сожалению, нет готового приложения или бенчмарка, которое бы описывало зависимость IOPS от времени при эмуляции записи 4KB блоков на SSD с очередью команд QD32. Тем не менее, проводится подобное сравнение самых разных накопителей, при этом тест вручную и отображая итоги в виде наглядных графиков. Одно из таких исследований датировано 2014 годом, при этом сравнивается несколько накопителей, ссылка на оригинальную статью здесь. На практике совсем неважно, какой именно накопитель SSD используется в тесте, важен итог, который схож у любого SSD. В статье приводится пример SSD Samsung 840 Pro объемом 256GB, в ходе тестирования которого размер резервной области изменялся от 7% до 50%. Ниже приведены примеры.
Размер резервной области — задан производителем
В этом примере Samsung 840 Pro 256GB тестировался как есть, из коробки. Вот что имеем в стандартном случае:
ReserveSSD-9.png
Размер резервной области — 12%
Размер резервной области увеличен до 12%. В случае с использованием накопителя объемом 256GB пользователю будет доступно лишь 225GB. Как видим, по сравнению с первым графиком результаты накопителя, выраженные в IOPS, стали ровнее, гораздо больше записей блоками 4KB происходит на большей скорости.
ReserveSSD-10.png
Размер резервной области — 25%
Размер резервной области увеличен до 25%. В случае с использованием накопителя объемом 256GB пользователю будет доступно лишь 192GB. Потери полезного пространства весьма ощутимые, но и результаты производительности накопителя, выраженные в IOPS, заметно подросли, график стал еще ровнее, просадок производительности стало меньше.
ReserveSSD-11.png