Вокруг SLC-кэширования: опыты с Samsung PM871b

Какая часть SSD используется для SLC-кэ­ши­ро­ва­ния? Обыч­но, на этот во­прос про­из­во­ди­те­ли на­ко­пи­те­лей от­ве­чать не то­ро­пят­ся. Цель на­ше­го экс­пе­ри­мен­та — про­на­блю­дать ра­бо­ту ал­го­рит­ма, от­вет­ст­вен­но­го за вы­де­ле­ние бы­ст­рой кэ­ши­ру­ю­щей SLC-об­лас­ти в со­с­та­ве за­по­ми­на­ю­ще­го про­ст­ран­ст­ва, со­сто­я­ще­го из TLC-яче­ек, а так­же оце­нить объ­ем кэ­ши­ру­ю­ще­го бло­ка, в ко­то­ром мож­но вы­пол­нять опе­ра­ции чте­ния и за­пи­си в ус­ко­рен­ном тем­пе.

Поможет нам в этом M.2 NGFF-накопитель Samsung PM871b с SATA-ин­тер­фей­сом, со­здан­ный на основе Sam­sung K9CKGY8H5A и оснащенный DRAM-буфером. Читатель, на­вер­ное, уже знает, что ми­кро­схе­ма K9CKGY8H5A — это четыре 256-гигабитных кристалла 64-слойной флеш-памяти TLC 3D V-NAND в од­ном кор­пу­се, а DRAM-бу­фер Samsung K4E4E16 — 4-гигабитный LPDDR3 (ин­фор­ма­ция о DDR2, ско­рее все­го, не со­от­вет­ст­ву­ет дей­ст­ви­тель­но­с­ти).

Твердотельный M.2 NGFF-накопитель Samsung PM871b (MZ-NLN128C)

 

О SATA-контроллере известно еще меньше: по слухам, это что-то загадочное типа Samsung MJX. Разве что про­г­рам­мное обес­пе­че­ние Samsung Magician информирует пользователя об актуальной версии прошивки — MVT24H3Q, но это тоже мало о чем скажет. С его же помощью получим первые оценки производительности SSD-накопителя PM871b (по заводской кодификации, указанной на стикере устройства, — MZ-NLN128C).

С помощью Samsung Magician получим маркетинговые оценки производительности SSD-накопителя PM871b

Если верить производителю, SSD объемом 128 ГБ, благодаря наличию 512-ме­га­байт­но­го DRAM-буфера, де­мон­ст­ри­ру­ет ско­рость за­пи­си в 386 MBPS. Метрики чтения вплотную при­бли­жа­ют­ся к те­о­ре­ти­че­ско­му пре­де­лу SATA3, до­сти­гая от­мет­ки в 523 MBPS.

Верифицируем официальные результаты силами ин­же­нер­но­го релиза NIOBench. Сейчас новая вер­сия дан­но­го про­грам­мно­го продукта выложена только для знакомства, но ее фун­к­ци­о­наль­ность уже до­ста­точ­на для то­го, чтобы ис­сле­до­вать динамику про­из­во­ди­тель­но­с­ти накопителя PM871b — как раз то, что нас ин­те­ре­су­ет в ар­хи­тек­ту­ре M.2 NGFF Sam­sung PM871b.

Оценка производительности SSD-накопителя Samsung PM871b в нативном сценарии тестовой утилиты NIOBench

 

Как видно из полученных результатов, средние показатели скорости чтения в NIOBench близки к по­ка­за­те­лям Sam­sung Ma­gi­ci­an. Снижение с 523 MBPS до 513 MBPS объяснимо: оба сценария пренебрегают хитростями опе­ра­ци­он­ной системы, предлагая результаты «снизу». Нативный сценарий NIOBench отключает бу­фе­ри­за­цию и кэ­ши­ро­ва­ние, ис­поль­зуя опции ОС API, но действуя при этом в рамках стан­дарт­ных фай­ло­вых опе­ра­ций. Sam­sung Ma­gi­ci­an, возможно, способен обойти верхние уровни mass storage стека ОС, ми­ни­ми­зи­руя накладные расходы.

Другими словами, варьируя об­мен дан­ны­ми с на­ко­пи­те­лем количеством ите­ра­ций или из­ме­ри­тель­ных по­вто­ров, раз­ме­ром файлов или чи­та­е­мых бло­ков, мы вряд ли опустимся су­ще­ст­вен­но ниже полученного ниж­не­го пре­де­ла в 513 MBPS. Прирост за счет уп­реж­да­ю­ще­го чтения и со­пут­ст­ву­ю­ще­го кэ­ши­ро­ва­ния воз­мо­жен, что и демонстрирует Sam­sung Ma­gi­ci­an, при­бли­жая пользователя к по­ка­за­те­лям PM871b, до­ступ­ным в ус­ло­ви­ях ре­аль­ной экс­плу­а­та­ции — 523 MBPS.

Динамика производительности SSD-накопителя Samsung PM871b в нативном сценарии тестовой последовательности NIOBench, состоящей из 50 итераций

С записью сложнее, и на графике видно, почему: скорость записи на начальном этапе тестирования «сма­зы­ва­ет­ся», по всей ви­ди­мо­с­ти, алгоритмами кэ­ши­ро­ва­ния. NIOBench в тестировании, состоящем из 50 ите­ра­ций, дает ско­рость за­пи­си «на круг» — 170 MBPS. Sam­sung Ma­gi­ci­an оперирует менее тру­до­ем­ки­ми пат­тер­на­ми, отсюда вдвое большая про­из­во­ди­тель­ность записи — короткий период ак­тив­но­с­ти кэ­ши­ро­ва­ния ока­зы­ва­ет куда более су­щест­вен­ное вли­я­ние на конечный результат при малом числе из­ме­ре­ний. Улуч­ша­ют мет­ри­ки Sam­sung Ma­gi­ci­an и спе­кулятивные механизмы ОС.

В отсутствии информации на элементную базу накопителя MZ-NLN128C, можно лишь предполагать, что ос­нов­ную роль в фор­ми­ро­ва­нии полученных результатов сыграло SLC-кэ­ши­ро­ва­ние. Имеем ли мы право пре­не­бречь кэ­ши­ро­ва­ни­ем данных в DRAM-буфере — пока вопрос.

Приближаемся к SLC-кэшированию

Приблизим фрагмент производительности Samsung PM871b, зависимый от кэ­ши­ро­ва­ния, уменьшив размер тес­то­во­го пат­тер­на до 100 МБ, а размер блока — до 10 МБ.

Тестирование SSD-накопителя Samsung MZ-NLN128C малыми блоками

 

График производительности SSD-накопителя Samsung MZ-NLN128C при тестировании малыми блоками

Как видно из графика, переполнение SLC-кэш произошло после записи 1200 MB данных. Про­из­во­ди­тель­ность записи до точки перегиба весьма и весьма впечатляющая — на уровне 450 MBPS. Только SLС-ячей­ки в состоянии обеспечить такой темп, ведь в любом случае мы выходим за пределы объема, под­от­чет­но­го DRAM-бу­фе­ру. За точкой пе­ре­ги­ба ско­рость за­пи­си ти­пич­на для элементов TLC-струк­ту­ры.

Фирменная технология Samsung TurboWrite в SSD-накопителе PM871b, скорее всего, имеет возможность по сво­е­му ус­мо­т­ре­нию использовать определенную часть TLC-ячеек в качестве од­но­у­ров­не­вых SLC-яче­ек, из мно­же­ст­ва со­сто­я­ний такой ячейки используя только два. Такое пе­ре­оп­ре­де­ле­ние работает с ог­ляд­кой на объем сво­бод­но­го про­ст­ран­ст­ва накопителя, маневрируя суммарной плотностью записи за­по­ми­на­ю­ще­го про­ст­ран­ст­ва. В этом су­щест­вен­ное от­ли­чие механизмов кэширования SSD от достаточно де­тер­ми­ни­ро­ван­ных по­ли­тик кэ­ши­ро­ва­ния, реализованных в про­цес­со­рах.

Исследуем возможности технологии TurboWrite по реакции накопителя Samsung PM871b на повторную за­пись бло­ка, на­хо­дя­ще­го­ся в данный момент в SLC-кэш. Тестовый сценарий NIOBench позволяет варь­и­ро­вать под­хо­ды к оценке ме­т­рик, обеспечивая заданное количество повторных вызовов ОС API для чтения и за­пи­си фай­лов. По­вто­рим пред­ыду­щий тест, задав File groupr 5 repeats в качестве параметра для дис­цип­ли­ны об­ме­на R/W.

Тестирование SSD-накопителя Samsung MZ-NLN128C малыми блоками с пятикратными повторами записи

 

График производительности SSD-накопителя Samsung MZ-NLN128C при тестировании малыми блоками с пятикратными повторами записи

 

Медианные значения для записи особо не изменились, а скорость чтения даже несколько выросла. Оче­вид­но, если бы повторные операции записи одного блока трактовались накопителем как поступление новых дан­ных, требующих отдельного пространства для кэ­ши­ро­ва­ния, то эффект от включения пятикратных из­ме­ри­тель­ных итераций был бы более выражен. В данном же случае точка перегиба сместилась с от­мет­ки 1200 МБ на 900 MB, хотя с учетом повторов накопитель должен был выполнить запись 900*5=4500 МБ дан­ных.

На выходе

Есть основания осторожно предположить, что логика, отвечающая за освобождение пространства SLC-бу­фе­ра, за­ни­ма­е­мо­го «за­ти­ра­е­мы­ми» данными, в большинстве случаев была способна принять оп­ти­маль­ное ре­ше­ние. В этой свя­зи можно кон­ста­ти­ро­вать, что бенчмарки, способные формировать картину ди­на­ми­че­ской реакции SSD-устройств на вхо­дя­щие воз­му­ще­ния, дают более объективную картину про­из­во­ди­тель­но­с­ти, при­бли­жая нас к пониманию про­при­е­тар­ных под­хо­дов производителя. Samsung в дан­ном контексте — всего лишь эпизод, на его месте может ока­зать­ся лю­бой :)