SLC-кэш: размер имеет значение.

Некоторое время назад в комментариях к одному моему обзору возникла достаточно интересная дискуссия, которая позволила обратить внимание на один интересный аспект заполнения SLC-кэша в твердотельных накопителях.

SLC-кэш - это такая зона (некий объём, точнее сказать) из всей ёмкости устройства, который при поступлении потока данных используется в качестве места быстрой записи (благодаря неполному использованию ячеек памяти MLC/TLC типа); но после прекращения записи спустя некоторое время контроллер накопителя производит уплотнение записанной ранее информации с высвобождением ресурсов.

Обычно скорость записи в рамках объёма SLC-кэша весьма велика (нередко превышая 400-450 МБ/с при последовательном доступе), но по исчерпании этого объёма скорость записи резко падает, хорошо если втрое-вчетверо, но бывает и в 10-20 раз.

Естественно, если SLC-кэш имеет размер в 30-50% ёмкости устройства (как у многих современных накопителей, например ADATA SU650), то рядовой пользователь практически никогда не столкнётся с деградацией скорости записи, ну кроме как в исключительном случае "сначала записать кучу фильмов в объёме 30-50% от ёмкости устройства, а потом, не дождавшись восстановления производительности, снова начать записывать 30-50% от оставшегося доступного пространства". Если SLC-кэш имеет ограниченный размер (1.5-5%), как у многих накопителей на контроллере Phison S11, то столкновение с деградацией скорости записи неминуемо, вопрос лишь в частоте возникновения таких ситуаций.

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

Проиллюстрирую это картинками.

В наличии был лишь один твердотельный накопитель с SLC-кэшем размером примерно 1.5-2 Гигабайта (Phison S11 + 3D TLC).

При копировании ISO-файла с жёсткого диска скорость записи в начале копирования ограничена лишь скоростью чтения с обычного жёсткого диска.

Но, спустя некоторое время SLC-кэш исчерпан, и скорость записи падает до втрое-вчетверо меньших значений.

Подождав некоторое время для выравнивания данных, запускаю аналогичную операцию с копированием данных по сети.

В начале копирования скорость записи заметно меньше, но опять-таки ограничена скоростью поступления данных.

Практически в том же месте SLC-кэш исчерпывается (лишь немногим позже, чем при поступлении данных с вдвое более быстрого источника), после чего происходит деградация скорости записи до того же уровня (и даже сам процесс записи выглядит точно такой же "пилой").

Т.е. по факту не имеет значения, с какой скоростью вы будете записывать данные в SLC-кэш (если, конечно же, она будет превышать скорость записи за его пределами), после заполнения объёма, ограниченного в прошивке контроллера, скорость записи упадёт до опять-таки физических ограничений накопителя. Т.е. возможны ситуации, когда SLC-кэш будет исчерпан при записи со скоростью записи за его пределами и твердотельный накопитель вообще всё время записи будет вести себя как последний тормоз.

Поэтому, как ни странно, размер имеет значение: чем больше SLC-кэш, тем меньшее значение имеет скорость записи за его пределами. Фактически, исчерпание SLC-кэша резко снижает производительность накопителя, приводит к т.н. "фризам" и прочим спецэффектам; поэтому целесообразно "дозировать" нагрузку на запись на устройство, чередуя интервалы времени записи и интервалы времени для восстановления производительности.