Особенности работы SSD — что такое SLC-кэш и как он влияет на скорость
Содержание
Содержание
Ты купил современный SSD и довольный устанавливаешь его в свой ПК. Сразу же, на высокой скорости, начинаешь переносить на него данные с других накопителей. И вдруг в какой-то момент скорость записи на SSD падает в несколько раз. Что произошло? Почему падает скорость записи? Все дело в SLC-кэше.
Сегодня существуют твердотельные накопители на четырех типах памяти:
Samsung — единственная компания, которая продолжает называть всю свою память MLC, лишь добавляя количество бит на ячейку. И часто это вводит покупателей в заблуждение. Например, 3-bit MLC, хотя по факту это TLC.
Сегодня самыми распространенным типом памяти в твердотельных накопителях является усовершенствованный 3D NAND TLC. Невысокая цена производства, высокая плотность данных, современные контроллеры и использование технологий SLC-кэширования позволили производителям значительно повысить скорость и ресурс TLC накопителей. Но все ли так хорошо, как кажется на первый взгляд?
Что такое SLC-кэш, и как он реализован
Чтение и запись данных на SSD-накопитель происходит по битам. Запись в ячейки SLC памяти самая быстрая, так как одна ячейка содержит лишь один бит. С TLC-накопителями сложнее. Чтобы записать одну ячейку, необходимо несколько раз считать с нее данные, для того чтобы далее их правильно записать. А дополнительные операции чтения с ячейкой значительно увеличивают время.
И для того, чтобы повысить скорость записи в TLC ячейки, производители прибегли к простой хитрости. В начале записи контроллер сохраняет данные по одному биту на ячейку, что называется режимом SLC. Это значительно увеличивает скорость записи. Продолжая запись, контроллер в фоновом режим уплотняет записанные данные в ячейку, преобразуя ее в трехбитную. Но такая быстрая запись не может быть постоянной. Объем накопителя все же рассчитывается из трех бит на ячейку. Следовательно, после заполнения SLC-кэша, скорость падает и достаточно сильно. SLC-кэш бывает реализован разными способами:
Следовательно, на QLC накопителях в таком режиме максимальная скорость будет на четверть свободного объема накопителя или меньше — все зависит от реализации SLC-кэша. Пример SLC-кэша на Smartbuy Nitro 480GB (SBSSD-480GQ-MX902-25S3). Объем SLC-кэша на QLC накопителе составил всего 23 % от общего свободного объема SSD.
Большинство пользователей не столкнутся с заполнением SLC-кэша при работе с SSD накопителем и вот почему:
Как определить объем SLC-кэша?
SLC-кэш на разных тестах и при разных условиях может показывать разные значения. Все зависит от того, как в данный момент используется накопитель. Поэтому все тесты лучше проводить на абсолютно новом пустом SSD накопителе, при этом не используя его в качестве системного. При установке операционной системы на SSD, даже в покое происходят операции чтения и записи, а следовательно результат будет не совсем точный.
Подготовка SSD накопителя
Если накопитель уже используется как дополнительный, лучше его очистить или отформатировать. Дальше необходимо выполнить команду TRIM через оптимизацию накопителя средствами Windows. Для этого переходим в «Этот компьютер» («Мой компьютер»).
Правой кнопкой мыши нажимаем на наш SSD и выбираем Свойства.
Переходим во вкладку Сервис и нажимаем кнопку Оптимизировать.
После чего выбираем снова наш SSD накопитель и наживаем кнопку Оптимизировать.
После данной операции необходимо дать накопитель «отдохнуть» примерно 15 минут и не выполнять с ним никаких операций.
Первый способ
Для определения SLC-кэша нам понадобятся программы, которые могут непрерывно линейно записывать данные на накопитель. Это можно сделать утилитой AIDA64, в разделе Сервис → Тест диска.
Далее в новом окне AIDA64 Disk Benchmark, в первом выпадающем списке меню выбираем Тест линейной записи (Linear Write), а затем накопитель, который необходимо протестировать.
ВАЖНО! Сразу после начала этого теста все данные с накопителя будут удалены!
Второй способ
Не настолько точный, как тесты утилитами, но тоже наглядный и очень понятный. Для этого нам понадобится второй SSD-накопитель, назовем его «исходный». (исходный SSD накопитель может быть даже системным). Для максимальной точности скорость чтения Исходного SSD должна быть выше, чем скорость записи тестового SSD, на котором будем определять объем SLC-кэша. На исходном накопителе создаем папку с объемными видеофайлами. Даже если у вас есть один видеофайл, просто копируем его несколько раз. Объем папки будет зависеть от объема тестового SSD — папка должна быть кратна 100 ГБ, чтобы можно было легко увидеть объем SLC-кэша. Также объем папки должен быть больше, чем треть общего объема тестового SSD накопителя, чтобы на примере одного копирования мы смогли все увидеть. Не забываем подготовить SSD по инструкции выше. Давайте скопируем папку объемом 100 Гб на SSD накопитель ADATA Falcon 256GB (AFALCON-256G-C) и посмотрим на SLC-кэш.
По графику объем SLC-кэша составил примерно 85 Гб. А вот скорость до заполнения SLC-кэша и после составили 1,05 ГБ/сек и 123 МБ/сек соответственно.
Как сильно скорость SSD накопителя может падать после заполнения SLC-кэша?
Ответить на это вопрос однозначно для всех накопителей не получится. И тому есть несколько причин:
Вот пример недорого SATA SSD накопителя Patriot P210 128GB (P210S128G25)
Скорость после заполнения SLC-кэша падает до 71,5 МБ/сек. И это скорости прямой записи в TLC режиме.
Теперь давайте посмотрим, на что способны топовые NVMe SSD накопители на примере Samsung 970 EVO Plus 1TB (MZ-V7S1T0BW).
Даже после заполнения SLC-кэша скорости падают не значительно и остаются высокими до полного заполнения SSD-накопителя.
Если мы посмотрим на Smartbuy Nitro 240GB с QLC чипами памяти, то тут сразу видно еще более сильное снижение скорости до 22 МБ/сек. Даже не нужно ждать окончания теста — по графику все и так понятно.
Без SLC-кэширования не обходится ни один современный SSD-накопитель. Причем не важно, на каком типе памяти он построен — TLC или QLC. Благодаря SLC-кэшу мы имеет такие высокие скорости. И пусть на разных накопителях разный объем кэша, при обычном использовании мы никогда не увидим значительное снижение скорости, так как просто не сможем заполнить SLC-кэш. Конечно, если вы работаете с видеофайлами, особенно с разрешением 4К, и вам постоянно приходится перемещать их, например при видеомонтаже, то не стоит покупать дешевые SSD накопители. Лучше заранее посмотреть тесты и обзоры и выбрать оптимальный вариант. В большинстве же случаев SLC-кэш так и останется чем-то неизвестным.
Стоит ли включать кэширование на SSD диске?
Сегодня мы рассмотрим еще один часто запутанный вычислительный термин, который обещает обеспечить повышенную производительность при изящном использовании компактного SSD в качестве кэша. Пустрая трата денег или стоящее приобретение? Мы углубились в эту тему, чтобы пролить свет на все, что нужно знать о кэшировании SSD.
Что такое SSD Cache?
Кэш SSD, или, как его правильно называют, SSD-кэширование, представляет собой механизм управления данными, разработанный Intel в начале 2010-х годов, который использует небольшой твердотельный накопитель в качестве кэша для жесткого диска, как правило, большего размера.
Таким образом, кэш позволяет системе получать доступ к данным гораздо быстрее, чем если бы они были извлечены и прочитаны из своего последнего места на жестком диске, что приводит к повышению производительности для задач, зависящих от памяти.
Для кэширования SSD основная концепция заключается в предоставлении более быстрого и отзывчивого SSD накопителя в качестве временного хранилища для часто запрашиваемых данных, таких как основные операционные сценарии ОС и файлы, которые хранятся на более медленном обычном жестком диске. Скорость твердотельного накопителя примерно в десять раз выше, чем у жесткого диска, для большинства задач с твердотельным накопителем существенно лучше для операций чтения с небольшого диска с произвольным доступом, которые определяют основную часть повседневных задач в ОС.
В реальном выражении кэширование SSD будет включать в себя SSD небольшого размера, скажем, 40 ГБ, в сочетании с большим традиционным жестким диском, например, с емкостью 1 ТБ.
Intel разработала технологию кэширования SSD Smart Response Technology (SRT), а запатентованная итерация этого механизма доступна только на материнских платах с поддержкой SRT и чипсетами Intel. Что еще хуже, Intel не использует технологию всех своих наборов микросхем, которая ограничивает аппаратные конфигурации, которые пользователь может ожидать, сохраняя при этом возможность кэширования SSD.
Системы с чипсетами AMD требуют, чтобы пользователь использовал стороннее программное обеспечение для эмуляции кэширования SSD, поскольку AMD до сих пор не разработала или не интегрировала конкурирующую технологию в свои чипсеты. К счастью, существует множество программных решений, таких как FancyCache и PrimoCache. Как общеизвестно, они ненадежны и имеют целый ряд проблем.
Ограничения SSD-кэширования
Кэширование SSD дает ощутимые преимущества только тогда, когда система находится в том состоянии, которое мы называем «чистым», таким как загрузка компьютера после его выключения, перезагрузка Windows или первоначальный запуск приложения после перезагрузки или выключения питания. Существует иерархия памяти, которая работает от кэша ЦП до ОЗУ, кэша SSD, затем HDD. Перезапуск очищает кэш ЦП и ОЗУ, превращая кэш SSD в место доступа к данным.
Причина этого заключается в том, что во всех других случаях есть вероятность, что критически важные, часто используемые данные уже хранятся в ОЗУ системы, и, поскольку ОЗУ быстрее любого жесткого диска, будь то SSD или HDD, кэширование SSD делает процесс заполнения оперативной памяти данными, намного быстрее. Ничто не улучшит скорость, как то, что данные уже доступны в оперативной памяти.
Как видите, главное преимущество кэширования SSD наиболее очевидно при загрузке Windows: ОС находится в работоспособном состоянии гораздо раньше, чем в кэшированной системе без SSD. Аналогично, запуск Steam и вашей любимой игры после перезагрузки будет намного быстрее с SSD-кэшированием. Если вы работали без перезапуска в течение нескольких часов и открыли, затем закрыли различные программы и решили открыть их еще раз, SSD ничего не сделает для ускорения процесса.
Продолжая тему ограничивающих факторов, внутренняя работа SRT является тщательно охраняемым секретом, и Intel не сообщает подробностей о том, как технология проверяет, какие данные заслуживают кэширования, хотя ощутимые тенденции предполагают, что существует определенный предел размера данных. это может быть кэшировано весом не более нескольких мегабайт.
Если вы одновременно запускаете множество приложений, преимущества будут очевидны, в то время как если вы будете запускать одну и ту же программу изо дня в день, обрабатывая файлы большого формата, преимущества будут незначительными.
Стоит ли включать кэширование SSD?
Как только SSD-кэширование запущено, оно само по себе позаботится о том, чтобы не было никакой его настройки от пользователя. Преимущества, если таковые имеются, пассивно производятся, что делает его удобным решением.
Однако настройка кэширования, даже с набором микросхем Intel SRT, является трудной задачей, которая включает в себя использование правильных драйверов, правильную настройку BIOS и запуск его в качестве настройки RAID, установку драйверов Windows и Rapid Storage Technology, управление режимами и т.д. Суть в том, что он значительно сложнее, чем использование SSD-накопителя большой емкости и простая установка Windows.
Кэширование SSD исторически стоило намного меньше, чем выделение для SSD разумного размера, но, поскольку технология становится все более распространенной, цена даже 100 ГБ или более SSD экспоненциально становится более доступной с течением времени. Следовательно, комбинация SSD-кэша и жесткого диска заменяется более крупными бюджетными твердотельными накопителями в качестве места для ОС, в то время как больший жесткий диск используется для хранения носителей, к которому редко обращаются.
Вывод
Как работает SSD-кэширование в системах хранения данных
Что такое SSD-кэширование
Большая часть хранимых данных имеет небольшое количество повторных обращений, такие данные принято называть «холодными». Они составляют значительную часть как в крупных файловых архивах, так и на жестком диске вашего домашнего компьютера. Если к данным обращаются повторно, то они будут называться «теплыми» или «горячими». Последние обычно представляют собой блоки служебной информации, которая считывается при загрузке приложений или выполнении каких-либо стандартных операций.
SSD-кэширование — это технология, при которой твердотельные накопители используются в качестве буфера для часто запрашиваемых данных. Система определяет степень «теплоты» данных и перемещает их на быстрый накопитель. За счет этого чтение и запись этих данных будут выполняться с большей скоростью и с меньшей задержкой.
Про SSD-кэширование часто говорят, когда речь идет о системах хранения данных, где эта технология дополняет HDD-массивы, повышая производительность за счет оптимизации случайных запросов. Устройство HDD-накопителей позволяет им успешно справляться с последовательным паттерном нагрузки, но имеет естественное ограничение для работы со случайными запросами. Объем SDD-кэша при этом обычно составляет около 5–10% от емкости основной дисковой подсистемы.
Системы, которые используют SSD-кэш вместе с HDD-дисками, принято называть гибридными. Они популярны на рынке СХД, так как значительно доступнее по цене, чем all-flash конфигурации, но при этом способны эффективно работать с достаточно широким спектром задач и нагрузок.
Когда SSD-кэш будет полезен
SSD-кэш подходит для ситуаций, когда система хранения данных получает не только последовательную нагрузку, но и определенный процент случайных запросов. При этом эффективность SSD-кэширования будет значительно выше в ситуациях, когда случайные запросы характеризуются пространственной локальностью, то есть на определенном адресном пространстве формируется область «горячих» данных.
Технология SSD-кэширования будет особенно полезна, например, при работе с потоками в видеонаблюдении. В таком паттерне преобладает последовательная нагрузка, но могут встречаться также случайные запросы на чтение и запись. Если не отрабатывать такие пики при помощи SSD-кэширования, то система будет пытаться справиться с ними при помощи HDD-массива, следовательно, производительность существенно снизится.
Рисунок 1. Неравномерный временной интервал с непредсказуемой частотой обращений
На практике появление случайных запросов среди равномерной последовательной нагрузки совсем не редкость. Это может происходить при одновременной работе на сервере нескольких различных приложений. Например, одно имеет установленный приоритет и работает с последовательными запросами, а другие время от времени обращаются к данным (в том числе, повторно) в случайном порядке. Другим примером возникновения случайных запросов может быть так называемый I/O Blender Effect, который перемешивает последовательные запросы.
Если на СХД поступает нагрузка с большой частотой случайных и мало повторяющихся запросов, то эффективность SSD-кэша будет снижаться.
Рисунок 2. Равномерный временной интервал с предсказуемой частотой обращений
При большом количестве таких обращений пространство SSD-накопителей будет быстро заполняться, и производительность системы будет стремиться к скорости работы на HDD-накопителях.
Следует помнить, что SSD-кэш является довольно ситуативным инструментом, который будет показывать свою продуктивность далеко не во всех случаях. В общих чертах его использование будет полезным при следующих характеристиках нагрузки:
Как работает SSD-кэш в СХД
Функция кэша — ускорять выполнение операции за счет размещения часто запрашиваемых данных на быстрых носителях. Для кэширования самых «горячих» данных используется оперативная память (RAM), в СХД это кэш первого уровня (L1 Cache).
Кэш первого уровня может быть дополнен менее быстрыми твердотельными накопителями. В этом случае у нас появляется кэш второго уровня (L2 Cache). Такой подход используется для реализации SSD-кэширования в большинстве существующих СХД.
Рисунок 3. Традиционный SSD-кэш второго уровня.
Традиционный SSD-кэш второго уровня работает следующим образом: все запросы после RAM попадают в буфер SSD (рисунок 3).
Работа кэша на чтение
Система получает запрос на чтение данных, находит необходимые блоки на основном хранилище (HDD) и производит их чтение. При повторных обращениях система создает копии этих данных на SSD-накопителях. Последующие операции чтения будут выполняться уже с быстрых носителей, что увеличит скорость работы.
Работа кэша на запись
Система получает запрос на запись и размещает необходимые блоки данных на SSD-накопителях. Благодаря быстрым носителям, операция записи и оповещение инициатора происходят с минимальными по времени задержками. По мере заполнения кэша система начинает постепенно передавать на основное хранилище наиболее «холодные» данные.
Алгоритмы заполнения кэша
Один из главных вопросов в работе SSD-кэша — выбор данных, которые будут помещаться в буферное пространство. Так как объем хранения тут ощутимо ограничен, то при его заполнении нужно принимать решение о том, какие блоки данных вытеснять и по какому принципу производить замещение.
Для этого применяются алгоритмы заполнения кэша. Коротко рассмотрим наиболее распространенных в сегменте СХД.
FIFO (First In, First Out) — из кэша последовательно вытесняются наиболее старые блоки, замещаясь наиболее свежими.
LRU (Least Recently Used) — из кэша первыми вытесняются блоки данных с наиболее давней датой обращения.
LARC (Lazy Adaptive Replacement Cache) — блоки данных попадают в кэш, если они были запрошены как минимум дважды за определенный промежуток времени, а кандидаты на замещение отслеживаются в дополнительной LRU-очереди в оперативной памяти.
SNLRU (Segmented LRU) — данные из кэша вытесняются по принципу LRU, но при этом они проходят несколько категорий (сегментов), обычно это: «холодные», «теплые», «горячие». Степень «теплоты» здесь определяется частотой обращений.
LFU (Least Frequently Used) — из кэша первыми вытесняются те блоки данных, к которым было меньше всего обращений.
LRFU (Least Recently/Frequently Used) — алгоритм комбинирует работу LRU и LFU, вытесняя сначала те блоки, которые попадают под рассчитываемый параметр из даты и количества обращений.
В зависимости от типа алгоритма и качества его реализации будет определяться итоговая эффективность SSD-кэширования.
Особенности SSD-кэширования в RAIDIX
В RAIDIX реализован параллельный SSD-кэш, который имеет две уникальные особенности: разделение входящих запросов на категории RRC (Random Read Cache) и RWC (Random Write Cache) и использование Log-структурированной записи для собственных алгоритмов вытеснения.
1. Категории RRC и RWC
Пространство кэша разделено на две функциональные категории: для случайных запросов на чтение — RRC, для случайных запросов на запись — RWC. Для каждой из этих категорий есть свои правила попадания и вытеснения.
За попадание отвечает специальный детектор, который квалифицирует поступающие запросы.
Рисунок 4. Схема работы SSD-кэша в RAIDIX
Попадание в RRC
В область RRC попадают только случайные запросы с частотой обращения больше 2-х (ghost-очередь).
Попадание в RWC
В область RWC попадают все случайные запросы на запись, у которых размер блока меньше устанавливаемого параметра (по умолчанию 32KB).
2. Особенности Log-структурированной записи
Log-структурированная запись — это способ последовательной записи блоков данных без учета их логической адресации (LBA, Logical Block Addressing).
Рисунок 5. Визуализация принципа Log-структурированной записи
В RAIDIX Log-структурированная запись используется для заполнения выделенных областей (с установленным размером в 1 ГБ) внутри RRC и RWC. Эти области применяются для дополнительного ранжирования при перезаписи пространства кэша.
Вытеснение из буфера RRC
Выбирается самая холодная область RRC, и в нее перезаписываются новые данные из ghost-очереди (данные с частотой обращений больше 2-х).
Вытеснения из буфера RWC
Область выбирается по принципу FIFO, а затем из нее последовательно, в соответствии с LBA (Logical Block Address), вытесняются блоки данных.
Возможности SSD-кэширования в RAIDIX
Параллельная архитектура SSD-кэша в RAIDIX позволяет ему быть не просто буфером для накопления случайных запросов — он начинает выполнять роль «умного распределителя» нагрузки на дисковую подсистему. Благодаря сортировке запросов и особым алгоритмам вытеснения, сглаживание пиков случайной нагрузки происходит быстрее и с меньшим влиянием на общую производительность системы.
Алгоритмы вытеснения используют log-структурированную запись для более эффективного замещения данных в кэше. Благодаря этому снижается количество обращений к flash-накопителям и существенно сокращается их износ.
Сокращение износа SSD-накопителей
Благодаря детектору нагрузки и алгоритмам перезаписи суммарное количество write hits на массив SSD накопителей в RAIDIX составляет 1.8. В аналогичных условиях работа кэша второго уровня с алгоритмом LRU имеет значение 10.8. Это означает, что количество требуемых перезаписей на флеш-накопители в реализованном подходе будет в 6 раз меньше, чем во многих традиционных СХД. Соответственно, SSD-кэш в RAIDIX будет использовать ресурс твердотельных накопителей значительно эффективнее, увеличивая срок их жизни примерно в 6 раз.
Эффективность SSD-кэширования на различных нагрузках
Смешанную нагрузку можно рассматривать как хронологический перечень состояний с последовательным или случайным типом запроса. Системе хранения данных приходится справляться с каждым из этих состояний, даже если оно не является для нее предпочтительным и удобным.
Мы провели тестирование SSD-кэша, эмулируя различные рабочие ситуации с разными типами нагрузок. Сравнив полученные результаты со значениями системы без SSD-кэша, можно наглядно оценить прирост производительности при разных типах запросов.
Конфигурация системы:
SSD кэш: RAID 10, 4 SAS SSD, объем 372 GB
Основное хранилище: RAID 6i, 13 HDD, объем 3072 GB
| Тип паттерна | Тип запроса | Значение с SSD-кэшированием | Значение без SSD-кэширования | Увеличение производительности |
| Случайное чтение (100% попадание в кэш) | random read 100% | 85.5K IOps | 2.5K IOps | В 34 раза |
| Случайная запись (100% попадание в кэш) | random write 100% | 23K IOps | 500 IOps | В 46 раз |
| Случайное чтение (80% попадание в кэш, 20% попадание на HDD) | random read 100% | 16.5K IOps | 2.5K IOps | В 6.5 раз |
| Случайное чтение из кэша, запись на HDD | random read 50% | 40K IOps | 180 IOps | В 222 раза |
| sequential write 50% | 870 Mbps | 411 Mbps | В 2 раза | |
| Случайное чтение и запись (100% попадание в кэш) | random read 50% | 30K IOps | 224 IOps | В 133 раза |
| random write 50% | 19K IOps | 800 IOps | В 23 раза | |
| Последовательные запросы с большим блоком, случайная нагрузка 100% попадает в SSD-кэш | random read 25% | 2438 IOps | 56 IOps | В 43 раза |
| random write 25% | 1918 IOps | 82 IOps | В 24 раза | |
| sequential read 25% | 668 Mbps | 120 Mbps | В 5.5 раз | |
| sequential write 25% | 382 Mbps | 76.7 Mbps | В 5 раз |
У каждой реальной ситуации будет свой неповторимый «рисунок» нагрузки, и такое фрагментарное представление не дает однозначного ответа об эффективности SSD-кэширования на практике. Но оно помогает сориентироваться в том, где данная технология может быть наиболее полезна.
Заключение
Технология SSD-кэширования позволяет повысить производительность СХД при работе со смешанным типом нагрузки. Это доступный и простой способ получить эффективно работающую систему в случаях, когда HDD накопители не имеют физической возможности обеспечить желаемый результат.
При существующем разнообразии серверных задач и приложений, применение SSD-кэша в гибридных СХД становится все более привлекательным. Но следует помнить, что эта технология требовательна к условиям использования, и она не является универсальным решением всех проблем с производительностью.
SSD-кэш, реализованный в СХД RAIDIX, обладает особым набором свойств, который позволяет ему не только ускорять работу системы, но и продлевать срок используемых SSD-накопителей.









