Нажмите "Enter", чтобы перейти к содержанию

Hdd ssd cache что это: Как работает SSD-кэш в системах хранения данных

Содержание

Как работает SSD-кэш в системах хранения данных

Скачать White Paper [PDF]

Что такое 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.

Как работает 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 IOps2.5K IOpsВ 34 раза
Случайная запись (100% попадание в кэш)random write 100%23K IOps500 IOpsВ 46 раз
Случайное чтение (80% попадание в кэш, 20% попадание на HDD)random read 100%16. 5K IOps2.5K IOpsВ 6.5 раз
Случайное чтение из кэша, запись на HDDrandom read 50%40K IOps180 IOpsВ 222 раза
sequential write 50%870 Mbps411 MbpsВ 2 раза
Случайное чтение и запись (100% попадание в кэш)random read 50%30K IOps224 IOpsВ 133 раза
random write 50%19K IOps800 IOpsВ 23 раза
Последовательные запросы с большим блоком, случайная нагрузка 100% попадает в SSD-кэшrandom read 25%2438 IOps56 IOpsВ 43 раза
random write 25%1918 IOps82 IOpsВ 24 раза
sequential read 25%668 Mbps120 MbpsВ 5. 5 раз
sequential write 25%382 Mbps76.7 MbpsВ 5 раз

У каждой реальной ситуации будет свой неповторимый «рисунок» нагрузки, и такое фрагментарное представление не дает однозначного ответа об эффективности SSD-кэширования на практике. Но оно помогает сориентироваться в том, где данная технология может быть наиболее полезна.

Заключение

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

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

SSD-кэш, реализованный в СХД RAIDIX, обладает особым набором свойств, который позволяет ему не только ускорять работу системы, но и продлевать срок используемых SSD-накопителей.

SSD Cache — что такое и стоит ли включать кэширование?

Опубликовано 02.09.2019, 06:53   · Комментарии:15

Сегодня мы рассмотрим еще один часто запутанный вычислительный термин, который обещает обеспечить повышенную производительность при изящном использовании компактного SSD в качестве кэша. Пустрая трата денег или стоящее приобретение? Мы углубились в эту тему, чтобы пролить свет на все, что нужно знать о кэшировании SSD.

Что такое SSD Cache?

Кэш SSD, или, как его правильно называют, SSD-кэширование, представляет собой механизм управления данными, разработанный Intel в начале 2010-х годов, который использует небольшой твердотельный накопитель в качестве кэша для жесткого диска, как правило, большего размера.

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

Таким образом, кэш позволяет системе получать доступ к данным гораздо быстрее, чем если бы они были извлечены и прочитаны из своего последнего места на жестком диске, что приводит к повышению производительности для задач, зависящих от памяти.

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

В реальном выражении кэширование SSD будет включать в себя SSD небольшого размера, скажем, 40 ГБ, в сочетании с большим традиционным жестким диском, например, с емкостью 1 ТБ.

SSD Кэширование — совместимость

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-кэша и жесткого диска заменяется более крупными бюджетными твердотельными накопителями в качестве места для ОС, в то время как больший жесткий диск используется для хранения носителей, к которому редко обращаются.

Аналогичным образом, появление гибридных твердотельных накопителей или твердотельных накопителей также оказало влияние на популярность кэширования твердотельных накопителей. SSHD — это не что иное, как обычный жесткий диск, снабженный частью флэш-памяти, известной как NAND. Эти две части интегрированы и являются частью одного решения для хранения данных. На практике флэш-память отслеживает активность пользователей, чтобы определить, к каким приложениям, данным, загрузочным элементам и т.д. Чаще всего осуществляется доступ, а затем сохраняет их, значительно повышая производительность системы.

Вывод

По нашей оценке, основная концепция кэширования SSD стоит задуматься. На практике результаты не являются достаточно явными, чтобы выбрать кэширование SSD, а не большие затраты на больший SSD и запускать все — от Windows до ваших любимых шутеров с того же самого диска и позволить ОЗУ делать свои задачи быстрее.

SSD кеширование — что это такое и стоит ли оно того? | Компьютеры и технологии

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

Что такое SSD кеширование?

Кеш 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-кеша и жесткого диска заменяется более крупными бюджетными твердотельными накопителями в качестве исходного места для ОС, в то время как больший жесткий диск используется для хранения мультимедиа, к которому редко обращаются.

Аналогичным образом, появление гибридных твердотельных накопителей или твердотельных накопителей также нанесло удар по популярности кэширования твердотельных накопителей. SSHD — это не что иное, как обычный жесткий диск, снабженный частью флэш-памяти, известной как NAND . Эти две части интегрированы и являются частью одного решения для хранения данных. На практике флэш-память отслеживает активность пользователей, чтобы определить, к каким приложениям, данным, загрузочным элементам и т. д. Чаще всего обращаются, а затем сохраняет их, значительно повышая производительность системы.

Основная концепция кэширования SSD стоит задуматься. На практике результаты не являются достаточно явными, чтобы выбрать кэширование SSD, а не большие затраты на больший SSD и запускать все — от Windows до ваших любимых шутеров с того же самого диска и позволить ОЗУ делать свое волшебство невозмутимо.
Ставьте палец вверх 👍 и подписываетесь на канал

Общие сведения о кэше локальных дисковых пространств

  • Чтение занимает 4 мин

В этой статье

Область применения: Windows Server 2022, Windows Server 2019, Windows Server 2016

Локальные дисковые пространства имеют встроенный кэш на стороне сервера для повышения производительности хранилищ. Это большой, постоянно работающий в режиме реального времени кэш чтения и записи. При включении локальных дисковых пространств кэш настраивается автоматически. В большинстве случаев никакого ручного управления не требуется. Способ работы кэша зависит от типов имеющихся накопителей.

Видео ниже рассказывает о принципах работы кэширования для локальных дисковых пространств, а также о других аспектах проектирования.

Аспекты проектирования локальных дисковых пространств
(20 минут)

Типы накопителей и варианты развертывания

дисковые пространства Direct в настоящее время работает с четырьмя типами запоминающих устройств:

Тип дискаОписание
PMem — это постоянная память, новый тип хранения с низкой задержкой и высокой производительностью.
NVMe (Non-Volatile Memory Express) — это твердотельные диски, подключенные непосредственно к шине PCIe. Распространенные форм-факторы: 2,5 дюйма U.2, плата расширения PCIe (AIC) и M.2. NVMe предлагает больше операций ввода-вывода в секунду и пропускную способность с низкой задержкой, чем любой поддерживаемый нами тип диска, за исключением PMem.
SSD относится к твердотельным накопителям, которые подключаются через стандартный интерфейс SATA или SAS.
HDD относится к ротации, магнитным жестким дискам, которые обеспечивают большой объем хранилища.

Их можно комбинировать различными способами, которые группируются по двум категориям: «все-Flash» и «гибридные».

Варианты развертывания только с флэш-накопителями

Развертывания на базе флэш-технологии ориентированны на максимальную производительность хранилища и не используют вращающиеся жесткие диски (HDD).

Варианты гибридного развертывания

Гибридные развертывания предназначены для обеспечения баланса производительности и емкости или увеличения емкости и включают в себя вращающиеся жесткие диски (HDD).

Кэш-накопители выбираются автоматически

При развертывании с несколькими типами накопителей локальные дисковые пространства автоматически используют для кэша все самые быстрые накопители. Остальные диски используются для хранения.

Скорость работы накопителя определяется согласно следующей иерархии.

Например, если у вас есть накопители NVMe и SSD, NVMe будут использоваться в качестве кэша для SSD.

Если у вас есть твердотельные накопители (SSD) и жесткие диски, SSD будут использоваться в качестве кэша для жестких дисков.

Примечание

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

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

Совет

При развертывании систем только с накопителями NVMe или SSD (особенно небольших масштабов) отсутствие кэш-накопителей может значительно повысить экономичность хранения.

Режим работы кэша задается автоматически

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

Кэширование только операций записи для развертываний только с флэш-накопителями

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

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

Это приводит к тому, что характеристики записи (например, задержка записи) определяются кэш-накопителями, а характеристики чтения — накопителями-хранилищами. И те, и другие согласованы, предсказуемы и унифицированы.

Кэширование операций чтения и записи для гибридных развертываний

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

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

Кэширование в развертываниях с накопителями всех трех типов

При наличии накопителей всех трех типов накопители NVMe обеспечивают кэширование для твердотельных накопителей (SSD) и жестких дисков. Режим работы соответствует описанному ранее: для накопителей SSD кэшируются только операции записи, для жестких дисков — операции чтения и записи. Работа по кэшированию жестких дисков равномерно распределяется среди кэш-накопителей.

Итоги

В этой таблице приведена сводная информация о том, какие накопители используются для кэширования, какие — для хранения данных и как осуществляется кэширование в каждом варианте развертывания.

РазвертываниеКэш-накопителиНакопители-хранилищаРежим кэширования (по умолчанию)
Только NVMeНет (как вариант — настройка вручную)NVMeТолько запись (если настроено)
Только SSDНет (как вариант — настройка вручную)SSDТолько запись (если настроено)
NVMe + SSDNVMeSSDТолько на запись
NVMe + жесткий дискNVMeHDDЧтение + запись
SSD + жесткий дискSSDHDDЧтение + запись
NVMe + SSD + жесткий дискNVMeSSD + жесткий дискДля жесткого диска — чтение + запись, для SSD — только запись

Серверная архитектура

Кэш реализуется на уровне накопителя: отдельные кэш-накопители на одном сервере привязаны к одному или нескольким накопителям-хранилищам на том же сервере.

Поскольку кэш находится ниже остального стека программно-определяемого хранилища Windows, он не использует такие концепции, как дисковые пространства или отказоустойчивость, и не нуждается в них. Можно считать это созданием «гибридных» накопителей (частично флэш-накопителей, частично дисковых), которые затем предоставляются операционной системе Windows. Как и в случае с реальным гибридным накопителем, перемещение в режиме реального времени «горячих» и «холодных» данных между более быстрыми и более медленными зонами физического носителя почти незаметно извне.

С учетом того, что устойчивость в локальных дисковых пространствах реализуется как минимум на уровне сервера (то есть, копии данных всегда записываются на разные сервера; не более одной копии на сервер), на данные в кэше распространяются те же преимущества устойчивости, что и на данные не в кэше.

Например, при использовании трехстороннего зеркалирования три копии любых данных записываются на разные серверы и оказываются там в кэше. Вне зависимости от того, будут ли они позднее перенесены из кэша на устройство или нет, три эти копии всегда существуют.

Привязки к накопителям являются динамическими

Привязка кэш-накопителей к накопителям-хранилищам может иметь любой коэффициент — от 1:1 до 1:12 и так далее. Он настраивается динамически всякий раз, когда добавляются или удаляются накопители, например при увеличении масштаба системы или после сбоев. Это означает, что вы можете добавлять кэш-накопители или накопители-хранилища независимо друг от друга, когда это необходимо.

Рекомендуется делать число накопителей-хранилищ кратным числу кэш-накопителей для соблюдения симметрии. Например, если у вас четыре кэш-накопителя, то при наличии восьми накопителей-хранилищ (соотношение 1:2) производительность будет более постоянной, чем при наличии семи или девяти накопителей-хранилищ.

Обработка сбоев кэш-накопителей

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

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

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

Затем можно заменить кэш-накопитель, следуя стандартной процедуре замены любых накопителей.

Примечание

Может потребоваться отключение питания для безопасной замены накопителя NVMe в виде дополнительной карты (AIC) или в форм-факторе M.2.

Связь с другими кэшами

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

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

Решайте сами, использовать кэш CSV или нет. Он не конфликтует с кэшем, описанным в этом разделе каким бы то ни было. В некоторых рабочих сценариях он может повысить производительность. Подробнее см. в разделе Включение кэша CSV.

Настройка вручную

В большинстве случаев ручная настройка не требуется. Если это необходимо, см. следующие разделы.

если после установки необходимо внести изменения в модель устройства кэширования, измените документ по компонентам поддержки служба работоспособности, как описано в разделе общие сведения о служба работоспособности.

Указание модели кэш-накопителя

В развертываниях, где все накопители одного типа (например, только NVMe или SSD), кэш не настроен, поскольку Windows не может автоматически определить у накопителей одного типа такие характеристики, как ресурс записи.

Чтобы использовать более износостойкие накопители в качестве кэша для менее износостойких накопителей того же типа, используйте для указания нужной модели накопителя параметр -CacheDeviceModel командлета Enable-ClusterS2D. После включения локальных дисковых пространств все накопители указанной модели будут использоваться для кэширования.

Совет

Убедитесь, что строка модели указана в точности так, как она отображается в выходных данных командлета Get-PhysicalDisk.

Пример

Сначала получите список физических дисков:

Get-PhysicalDisk | Group Model -NoElement

Вот пример выходных данных:

Count Name
----- ----
    8 FABRIKAM NVME-1710
   16 CONTOSO NVME-1520

Затем введите следующую команду, указав модель устройства кэша:

Enable-ClusterS2D -CacheDeviceModel "FABRIKAM NVME-1710"

Вы можете проверить, что назначенные накопители используются для кэширования, запустив командлет Get-PhysicalDisk в PowerShell и проверив свойство Usage — оно должно иметь значение «Journal».

Варианты развертывания вручную

Ручная настройка поддерживает следующие варианты развертывания:

Установка режима работы кэша

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

Чтобы переопределить поведение, используйте командлет Set-клустерсторажеспацесдирект и параметры -качемодессд и -качемодехдд . Параметр CacheModeSSD задает режим работы кэша при кэшировании твердотельных накопителей. Параметр CacheModeHDD задает режим работы кэша при кэшировании жестких дисков. Это можно сделать в любой момент после включения локальных дисковых пространств.

Чтобы проверить, задано ли поведение, можно использовать Get-клустерсторажеспацесдирект .

Пример

сначала получите параметры дисковые пространства Direct:

Get-ClusterStorageSpacesDirect

Вот пример выходных данных:

CacheModeHDD : ReadWrite
CacheModeSSD : WriteOnly

Затем сделайте следующее.

Set-ClusterStorageSpacesDirect -CacheModeSSD ReadWrite

Get-ClusterS2D

Вот пример выходных данных:

CacheModeHDD : ReadWrite
CacheModeSSD : ReadWrite

Изменение размера кэша

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

Это особенно важно в гибридных развертываниях с использованием жестких дисков. Если размер активного рабочего набора превышает размер кэша либо размер активного рабочего набора меняется слишком быстро, будет возрастать число промахов в кэше чтения и операции записи должны будут чаще переноситься из кэша на устройство, что будет негативно сказываться на общей производительности.

Для проверки показателя промахов в кэше можно использовать встроенную служебную программу Windows «Системный монитор» (PerfMon.exe). В частности, можно сравнить значение Cache Miss Reads/sec (Промахов в кэше чтения в секунду) из группы счетчиков Cluster Storage Hybrid Disk (Гибридный диск системы хранения данных кластера) с общим числом операций чтения в вашем развертывании. Каждый «гибридный диск» соответствует одному накопителю-хранилищу.

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

Универсальных правил нет, но если слишком много операций чтения не попадают в кэш, его размер может быть недостаточным. В этом случае рекомендуется добавить дополнительные кэш-накопители для увеличения размера кэша. Добавлять кэш-накопители и накопители-хранилища можно независимо друг от друга, когда это необходимо.

Дополнительные ссылки

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

Disclaimer — в материале некоторые описания процессов и их логики приведены в адаптированном виде, тогда как в жизни все несколько сложнее, но в общем примерно так, как описано.

Часть1
Часть2

В прошлых материалах мы установили, что благодаря научно-техническому прогрессу сегодня в массовом сегменте SOHO хранения данных доступны, в основном, две технологии: электромеханические или традиционные накопители на жестких магнитных дисках (они же НЖМД, HDD, винчестеры, винты и прочие вариации с производными), а также инновационные безмеханические твердотельные накопители (они же SSD, твердотельники и т.п.).

I want to believe

Заметим, что накопители в текущем их понимании (как и вся современная компьютерная индустрия), а твердотельные накопители — так тем более, своим появлением и эволюцией обязаны развитию полупроводниковых технологий как таковых. Последние показали значительный прогресс, внезапно, в 1947 году. Аккурат после события, вошедшего в популярную культуру под названием Розуэльского инцидента. По мнению конспирологов тогда, 8 июля, недалеко от одноименного населенного пункта в небе заглох и натурально упал на Землю НЛО, который был отбуксирован эвакуатором в Зону 51, где крайне засекреченные ботаны, а в последствии и полумифический Боб Лазар в их числе, под подпиской о неразглашении путем восстановительной инженерии майнили внеземные технологии под прикрытием доблестной армии США. Якобы строго после этого вся полупроводниковая промышленность и пошла на взлет.

Сюжет портят два нюанса: около 1920-х годов в последующем советский физик Олег Лосев уже закладывал первые дециметры бетона в фундамент этой темы, а на рубеже 1947–48 годов американские и немецкие физики во Франции независимо друг от друга «запилили» опытные образцы того, что потом станет транзисторами. Так что дело шло своим чередом и в меру воздействия внешних факторов, среди которых инопланетян к тому моменту не числилось.

Когда ботаны маршируют

В общем, развитие машинной обработки информации выдвигало серьёзные требования к вопросам упорядочивания этого процесса. Ручной ввод данных и фиксация результатов становился все более архаичным и реально тормозил процессы, которые вычислительная техника должна была ускорять. Известна история, что в ходе разработок первых экземпляров советского ядерного оружия, конкурирующие научные группы могли отказаться от машинного времени на тогдашних «компьютерах» в пользу включения в команду виртуозных математиков — с ними процесс сложных расчетов мог идти на практике быстрее, чем с использованием ЭВМ. Конечно, в точности расчетов и стабильности скорости их выполнения человек тягаться с машиной не мог уже тогда, но инфраструктура доступа к вычислительным мощностям была почти что в зародыше и поэтому живой математик в команде в отдельных случаях ценился выше.

Человеко-компьютерное взаимодействие

Поэтому вопросы ввода-вывода нужно было как-то не только автоматизировать, но и делать это интенсивным научным способом — ведь результат машинной обработки в одном процессе мог одновременно становиться исходными данными для следующего или быть запрошенным произвольно во времени в будущем. Уже здесь мы понимаем, что существуют некие данные, которые используются машиной чаще других, а иногда и вообще могут быть востребованным постоянно. Вводить же каждый раз одни и те же исходные данные руками с позиций дня сегодняшнего выглядит несколько диковато, но тогда иного пути не было. За словом «оператор» тогда стояла очень трудоемкая и кропотливая работа. Поэтому идея хранить наиболее популярную информацию, команды и т.п. на наиболее быстрых участках носителей была очевидной. Реализация этой идеи в будущем получит общеупотребительное название — кэширование, а сами области хранения с высокими скоростями обмена и малым временем доступа будут известны в широком смысле как кэш. Запомним — нам это знание сегодня понадобится.

Музеефикация

В таких условиях традиционные для начала компьютерной эры технологии становились уже очень не очень. Электростатические запоминающие трубки на 0,5 килобайта, перфолента, магнитные барабаны на целых 10 килобайт — все это когда-то решало поставленные задачи, но устаревало как морально, так и физически на фоне того, что все актуальней становилась задача не только надежного хранения предыдущих расчетов и прочих данных, но и удобного оперативного доступа к ним.

С магнетизмом на то время все было несколько более понятно, нежели с неведомыми еще транзисторами, и в 50-е появились прообразы жестких дисков, концептуально родственные современным. Совсем, правда, не похожие внешне на то, о чем вы читали в предыдущих обзорах, но тем не менее. Приведем пару классических картинок от JEDEC для ориентации в пространстве и времени. Слева накопитель IBM на 5 мегабайт, а справа — уже на целых 250 мегабайт. Прогресс за 20 лет в 50 раз. Правда, тележка все еще нужна.

Идея оказалась жизнеспособной, как мы можем констатировать с высоты 2019-то года, и в прямом смысле завертелось… Естественно, что такая радость на начальных этапах никак не могла стоить дешево и быть доступной даже каждому второму НИИ, не было единых подходов к использованию вне рамок конкретных вычислительных машин и т.п., но главное — концепция в материале стартовала и желающие уже могли сами определить насколько финансово и управленчески будет востребован их продукт, чтобы позволить себе такие технологии, ну или просить под них бюджетные средства. Правда, был еще имидж, когда сам факт обладания новейшими технологиями делал из держащего в руках, например, дорогущий фотоаппарат — фотографа в глазах окружающих.

Уголок состоятельных кротов

Чисто для справки можно свериться с информацией на Jcmit.net. Там указано, что стоимость 1 (одного) мегабайта в накопителе машины IBM 305 была равна 9200 USD. «Охренеть!» — заявит читатель и будет несколько не прав. Дело в том, что вечнозеленый американский доллар тоже подвержен инфляции, которая с 56-го года для него составляет где-то 824%. Т.е. в финансовых понятиях дня сегодняшнего (или статистически — на конец 2018 года), те 9200 долларов по покупательной способности соответствуют сегодняшним примерно 86 000 USD. Таким образом, весь 5-мегабайтник в 1956 стоил сегодняшних 320 000 долларов — вот теперь можно оценить стоимость инноваций тогда и сегодня. Интересующиеся могут посмотреть уровень инфляции за определенный промежуток времени.

Ну и полирнем информацию о динозавре тем, что его аренда компаниям обходилась в 3200 USD в месяц, т.е. примерно 30000 сегодняшним. Да — чуждая нам практика лизинга или аренды (хоть это немного разные вещи, но тем не мене похожие) там позволяла пользоваться дорогущими изделиями «здесь и сейчас», а не копить на них годами, выпрашивая кредиты у банкиров с консервативным, в плане инноваций, мировоззрением. Сделали таковых около 1000 штук, что намекает.

ОЗУ

Аналогом более-менее оперативной, в нашем понимании, памяти были магнитные барабаны на 3200 знаков, а совсем уж оперативная память описывалась 100 знаками по 6 бит — такой себе транзитный буфер. Барабаны крутились на 6000 оборотах в минуту — почти дизельпанк. При этом самой IBM понятие RAM — Random Access Memory — тогда виделось иначе, и RAM представлялся как сам вышеописанный жесткий диск.

К слову, формально все верно — доступ, в отличие от перфокарт, таки рандомный, т.е. случайный, но сегодня под RAM обычно понимают таки память оперативную. Однако с позиций сегодняшнего мы можем констатировать, что такое название было в некотором смысле пророческим, и мы к этому еще вернёмся. Кстати сам IBM 305 назывался RAMAC — Random Access Method of Accounting and Control. Инструкция по ссылке.

Термодинамика данных

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

Таким образом, мы подходим к мысли о разной степени востребованности и актуальности данных. Но мы также понимаем, что чем оперативнее можно работать с носителем, тем такой носитель в общем случае дороже. Как правило, чем быстрее — тем меньше объемом и дороже. И наоборот. Соответственно распределение данных имеет смысл осуществлять на типы носителей сообразно степени востребованности информации.

Конечно в идеальном, сферическивакуумном случае иметь бы возможность процессору работать с накопителем напрямую, как и проистекало из определения RAM тогда и трактовки этого понятия сегодня. Но скорости современных накопителей еще не достигли нужных высот при больших объёмах и при реализации такого подхода процессор, простаивая, будет «ждать» накопитель. Поэтому при вычислениях и работе с информацией мы до сих пор имеем посредников — ведь, как правило, в единицу времени весь массив архивной информации нам не нужен, да и процессоры не в состоянии все и разом переварить. Поэтому работа идет порционно, транзитом из менее быстрых видов памяти в более быстрые.

Соответственно по частоте востребованности в работе и частоте изменений данные условно делят на холодные/теплые/горячие. Картинку позаимствуем у господина К.Савелли.

Горячие почти постоянно крутятся посрединке межу накопителем и процессором через оперативную память. Холодные подгружаются для обработки реже. Это было особенно важно, когда каждая крупица оборачиваемой информации стоила лошадиных сумм в пересчете на оборудование.

Иерархическая система компьютерной памяти

Но дело в том, что действительно быстрые типы памяти стоят дорого и сегодня. Масштабы, конечно, несколько иные, но суть — та же. Рассмотрим картинку.

Все самое быстрое и самое дорогое, что сегодня производится по части памяти, собрано в самом процессоре. Это его внутренняя память. Не вдаваясь в суть деления внутрипроцессорных типов памяти, для удобства понимания дальнейшего материала, обращаем внимание на то, что она чаще называется кэшем и содержит служебную информацию. Это словарная калька с функционала, поскольку эта быстрейшая память используется в основном как раз таки для хранения часто требуемых данных, команд и т.п. В общем случае, чем ее больше — тем лучше. Внтурипроцессорная память — это своего рода посредник между медленной относительно него ОЗУ и ядрами.

Далее у нас идет основной посредник между быстрым процессором и тормозным хранилищем — оперативная память, оно же RAM в сегодняшней терминологии. Это быстрая, но энергозависимая память произвольного доступа. Пока энергозависимая, т.к. Intel все грозится напугать общественность энергонезависимой ОЗУ и даже объявила в этом году некие продукты. Как оно будет в жизни — посмотрим. А пока ОЗУ — это основной посредник. Организация работы с ним во времени претерпевала изменения, а поколения меняются достаточно часто. Но для наших целей последнее имеет второстепенное значение. Куда важнее, что в обычный десктоп уже можно проинсталлировать 128 гигабайт нашей прелести, хотя редкие игры используют сегодня больше 16 гигабайт. Об этом мы еще поговорим и это крайне важно. Причем важно безотносительно поколений памяти, скоростей, типов чипов, планок и т.д. Она просто очень быстрая по сравнению со всем последующим, но медленнее процессорной памяти.

Ниже по пирамиде у нас группа энергонезависимых накопителей, проранжированных по скорости. Обобщённо назовем их SSD, HDD и ленты. Существуют и иные подключаемые и роботизированные способы хранения, но в рамках этой публикации мы их выносим за скобки.

Как видим, при падении скорости доступа и цены, растут доступные объемы и сроки надежного хранения. Это приятная новость для планеты, производящей просто фантастическое количество контентна, который зачем-то хранится.

Зачем мы это рассмотрели?

Причины две:

  • Желающим похоронить жесткие диски, как отжившие свое тормоза, сначала придется выкопать стримеры и найти им замену.
  • Более широкий выбор доступных на рынке технологий, очевидно, позволяет более гибко подходить к решению конкретных задач и поэтому в процессе закапывания жесткого диска снизу могут постучать.

Итак, в общем случае некие данные будут считаны с накопителя, обработаны процессором в единстве с ОЗУ и его внутренней памятью, и возвращены для дальнейших действий, где обратная запись будет далеко не типичным событием. Т.е. оперативная память это, в некотором смысле, кэш тормозного накопителя.

Появление жестких дисков сильно способствовало ускорению этих процедур до тех пор, пока физические скорости самих жестких дисков не стали узким местом в работе с данными. Помимо скоростей важно еще понимать, что существуют задержки, обусловленные временем доступа к данным перед началом работы с ними. Т.е. для выноса килограммового ящика из хранилища стратегического запаса его там надо еще найти по карте или инструкции и физически добраться до него. Казалось бы — килограмм унести не проблема и можно быстро, но на практике есть время/задержка доступа.

Но о каких же скоростях сегодня идет речь на практике?

Начнем с самого быстрого – внутрипроцессорной памяти, она же процессорный кэш. Ввиду расположения наиболее близко к ядру/ядрам здесь имеем минимальные задержки и максимальные скорости. Внутрипроцессорный табель о рангах памяти состоит из регистров и того, что отражается в спецификациях как кэш. Последний, в зависимости от приближенности к «императору», т.е. ядру, бывает трех уровней: L1 — самый крутой, самый быстрый, но маленький, L2 — менее крутой и быстрый, но побольше, L3 — помедленней и побольше, но все равно радикально быстрее ОЗУ. В многоядерных процессорах кэш может быть как закреплённым за ядрами в конкретном объёме, так и динамически распределяемым. Ввиду размеров хранятся там всякие инструкции, служебные данные и тому подобное.

Вот тут сайт уже показывает, как модно говорить, мейнстримовые цифры Intel Core i9-9900K по этому поводу.

Это конечно не лабораторный замер и до конца непонятно как именно AIDA получает эти цифры, которые в реальности расчетно должны быть поменьше, но порядки и динамику развития технологий они в целом отражают. L1-память в данном случае, если верить тесту, способна читаться со скоростью 2,34 терабайта (!) в секунду. Т.е. если изготовить типовой накопитель в 250 ГБ из такой «нереальной» памяти, то прочитать его целиком за секунду можно будет около 10 раз без учета задержек на вынос коробки из склада, т.е. задержек доступа. Это примерно тот идеал, о котором мы и IBM писали выше, но он пока недостижим в промышленных объемах по вменяемым ценам (да и в реальности скорости лучших L1-кэшей с учетом задержек будут раза в 3–4 меньше указанных) и поэтому есть нижеописанные костыли.

Далее у нас идет оперативная память (ОЗУ, RAM). Она прошла долгий путь не в одно поколение, работает на разных частотах с различными таймингами. Конкретные изделия помогут выбрать на Overclockers.ua, мы же обратим внимание, что, согласно спецификации, примерный сегодняшний мейнстрим в виде DDR4-3200 в теории способен пропустить 25 гигабайт в секунду.

Далее следуют приснопамятные SSD, где особняком стоит Optane (о нем — отдельно). Лучшие SSD способны прочитать 3500 мегабайт в секунду последовательно и 50–60 мегабайт в секунду случайных данных. Говоря предметно, все эти тысячи последовательного чтения-записи на практике востребованы мало. Единственным действительно важным показателем твердотельных дисков является истинная скорость работы со случайными данными и малыми глубинами запросов.

Важно понимать, что внутри твердотельный диск тоже разделен на области с разными скоростями работы. Что это и зачем мы частично рассмотрели раньше и дополнительно обратим внимание чуть ниже.

Благодаря скоростям случайной работы с мелкими файлами SSD уверенно сидит на троне системного накопителя сегодня. С особенностями, но сидит. Отзывчивость системы даже при весьма среднем процессоре прямо зависит именно от скорости системного диска при работе со случайными мелкими данными при малой очереди запросов.

Цены на SSD падают, что существенно способствует их распространению, и сегодня типичный системный SSD перешагивает 250 гигабайтные модели. Более емкие позволить могут себе не все. Даже 250 гигабайтные по-хорошему не все могут позволить, но тенденция в целом очевидна и 250 гигабайт это прошлое мейнстрима (закончим с этим модным словом).

Трон SSD отобрал у HDD — т.е. у традиционных жестких дисков, которые в быту на случайных операциях были на порядки (т.е. в 10, 100 и даже 1000 раз) медленнее SSD.

Следующие далее ленточные и прочие накопители в рамках данного материала мы не относим к классу архивных и в рамках данного материала не рассматриваем по причине отсутствия актуальности.

Средняя температура по больнице в части задержек приведена ниже с данными для сравнения. Спасибо Jonas Bonér за цифры.

Таким образом, наиболее близкая к процессорным ядрам память способна гонять терабайты в секунду. С удалением от ядер показатели падают, но все равно внутри процессора — внушительны. Практической значимости в этих цифрах не так много, как хотелось бы, хотя бы по причине того, что объемы этой сверхбыстрой памяти — мизерны. Как мы упоминали — умей человечество изготавливать накопители таких скоростей, то и никакого деления на процессорный кэш, ОЗУ, SSD, HDD и т.п. не было бы нужно. Но не умеем. Пока, во всяком случае.

Что же такое кэш и как его правильно бояться

Соответственно по факту в типичном рабочем компьютере иерархия памяти насчитывает гору уровней, основная задача которых получить доступ к важнейшим данным как можно быстрее и разместить их поближе к процессору в самой быстрой из доступных типов памяти. Будет вообще здорово, если данные в задаче будут востребованы не впервые, а повторно. Собственно, для последнего само понятие кэша и придумано — наиболее быстрые участки памяти, куда помещаются наиболее часто требуемые данные. Поскольку кэш — быстрый, то и доступ к популярным данным будет быстрым, а если таких обращений будет много, то внешне это будет выглядеть как ощутимое повышение производительности, хотя по факту просто будет нивелировано узкое место в вопросе доступа к данным из более медленных источников и более широко утилизированы возможности «ожидающих» участников обработки задачи. Частота повторения запросов к имеющимся в быстрой памяти данным называется «попаданием в кэш» и чем более корректно алгоритмы оставляют там нужные в последующем данные — тем более живо откликается система на задачу и быстрее выполняет ее. Именно поэтому можно наблюдать, как повторяющееся задание выполняется быстрее случайного похожего в общем случае.

Все это прямо проецируется на ситуацию с накопителями. Современные операционные системы с разной степенью успешности кешируют данные с использованием оперативной памяти. И если таковой достаточно и алгоритмы кэширования написаны параллельными руками, то, будучи разово загруженной, условная программа второй раз запускалась почти мгновенно именно потому, что запускалась не с медленного диска, а фактически из копии основных файлов в ОЗУ. ОЗУ же, как мы помним, работает куда быстрее лучших SSD. При дальнейших запусках указанной программы система будет сначала смотреть, что там осталось в кэше, в ОЗУ и только потом пилить диск. Здесь мы видим визуализацию описанного выше кэширования данных с медленного диска в быструю оперативную память. Благодаря алгоритмам ее часть становится кэшем для накопителя. Основная проблема здесь в том, что первично данные надо медленно считать с медленного же накопителя в энергозависимую память, т.е. после перезагрузки все пройдет по этому же сценарию. Прямо как А. Блок:

Ночь, улица, фонарь, аптека,
Бессмысленный и тусклый свет.
Живи еще хоть четверть века —
Все будет так. Исхода нет.

Умрешь — начнешь опять сначала
И повторится все, как встарь:
Ночь, ледяная рябь канала,
Аптека, улица, фонарь.

Блок на «оверах» это, конечно, неэхотажно, но тем не менее.

Особым моментом в данном случае является работа с массивами мелких файлов. Если повезло и они закэшированы (т.е. ранее прочитаны и находятся в быстрой памяти), то скорость работы с ними будет крайне высокой, а для отдельных задач это основной вид нагрузки. Правда, ровно до момента, пока весь этот массив после обработки не пойдет на запись и тут уже последствия зависят от типа физического носителя. Так, например, запись в лоб массива мелких файлов на жесткий диск вызовет у последнего очередь. Запомним этот момент — мы к нему еще вернемся.

Важно отметить, что кэширование используется как при чтении данных с тормозных носителей, так и при записи на них. В первом случае, как мы отметили выше — данные читаются с медленного накопителя в более быструю память и там обрабатываются процессами. Если они не меняются, а только читаются, то при хороших алгоритмах второй, третий и n-ый раз обращение процессов к ним произойдёт уже фактически в более быстрой памяти.

В случае записи на медленный накопитель кэширование позволяет писать не в лоб, а фоново и отсрочено. Данные группируются и записываются по конечному адресу незаметно для пользователя. Внешне это выглядит как будто запись фактически завершена, но по факту до медленного диска пакет данных дойдет позднее. Если кэш, т.е. память под него — большой, то вытеснить данные на медленный накопитель можно вообще через десятки секунд, а то и минут (с минутами есть нюансы — важно чтобы операция фактически завершилась до, например, пропадания питания; именно поэтому «флэшки» в общем случае выдирать из портов произвольно нельзя, т.к. если было включено кэширование записи, то это приведет к утере недописанных данных) в моменты, когда такой медленный накопитель будет простаивать. При этом будет накоплен хороший пакет на запись и таковая будет осуществлена с… большой глубиной очереди. Хоть где-то эти цифры из тестов пригодились! Если система активно читает медленный диск и одновременно должна писать на него, то используя кэширование записи в оперативной памяти можно продолжать чтение, вытесняя данные из кэша в физическую запись в те моменты, когда это удобно. Например, чтение прекратилось и диск может полностью посвятить несколько секунд записи накопленного пакетного задания на максимальной скорости. Ранее это вызвало бы несварение у блока головок медленного диска и общее торможение системы, т.к. она бы «ждала» завершения процессов, а теперь все происходит последовательно в процедурном смысле, не мешая друг другу в общем случае. Это называется write-back политика кэширования.

Получается, если алгоритмы удачно разместят в кэше ОЗУ элементы ПО, то, по сути, мы будем работать с ОЗУ как с накопителем?

В некотором смысле да. И это совершенно не новость. Еще в MS-DOS было можно штатным ramdrive.sys отвести часть ОЗУ под логический диск с буквой, записать туда нужные данные и работать с ними на недостижимой для физических накопителей скорости. Проблемы было ровно две. Во времена DOS далеко не все располагали достаточным количеством ОЗУ для таких затей и по выключению питания фейковый «диск» обнулялся, т.к. ОЗУ-то у нас пока еще энергозависимая. В остальном можно было запустить игру и не наблюдать тормозов подгрузки уровней — лютый жир того времени. Обычно люди все же работали с RAM-диска, а не играли.

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

Итак, для среды Windows существует не менее дюжины программ, которые могут создать в ОЗУ логический диск и работать с ним внешне для пользователя как с физическим. Скорости будут соответствующие ОЗУ. Разные реализации ПО несколько по-разному в итоге работают в плане скорости, но эту разницу можно ощутить разве что в бенчмарках. Да, создаем RAM-диск и делаем замер, после — офигеваем от скоростей. Это очень круто и удобно для тех, у кого работа упирается в возможности физических дисков.

Проблему энергонезависимости решают далеко не все, но решают. Так пара программных RAM-драйвов от SuperSpeed и Romex умеют не только создавать RAM-диск с буквой типа X:, но еще и сохранять его содержимое перед перезагрузкой на реальный диск и после перезагрузки и монтирования в системе этого Х: RAM-диска восстанавливать сохраненное содержимое прошлой сессии на него. Нечто вроде гибернации, но работает вполне нормально. Если исключить из ситуации перезагрузку, которая на практике бывает нечасто, а когда бывает, то в это время люди пошли пить чай (условно), то все выглядит как наличие в системе ультрабыстрого накопителя для любых нужд в виде обычного диска с буквой в проводнике. Хорошие RAM-диски умеют и с гибернацией системы корректно работать. Поэтому если вам критична скорость работы с накопителем, а задачи позволяют приобрести нужное железо, то при учете современных типовых 128 гигабайт ОЗУ, которые можно штатно поставить на массовые материнские платы, такое решение по производительности уйдет далеко вперед от любых физических накопителей, доступных сегодня.

Но почему проблемы «почти» решены?

Дело в том, что в случае непредвиденного нештатного завершения работы системы, например, пропадания питания, критического зависания и т.п, все данные с RAM-диска пропадут безвозвратно. Сделать с этим ничего будет нельзя. Сохранение содержимого перед выключением работает только в случае штатного завершения сеанса, что, в общем-то, очевидно. В лучшем случае можно поставить интервалы создания образов RAM-диска, например, штатными средствами и тогда потеряно будет только незабекапленное, что уже лучше, чем ничего. Тем, кому это реально надо, в это умеют, но если вы не пробовали — обязательно попробуйте. Пример будет ниже.

Казалось бы — фигня все эти ваши рамдиски, ведь в эти 128 гигабайт операционная системами штатно должна закешировать многое. Но и тут есть два нюанса: должна, но не факт, что сделает это и для того, чтобы что-то закешировать это надо сначала прочитать с медленного диска. Для некоторых задач и лучшие SSD — медленные, а солидная база данных на традиционном «винте» — это печальбеда в плане случайного чтения.

Здесь надо сделать отступление и вспомнить, что и похожие цели освоить и проблемы энергонезависимости решить уже пытались в т.ч. и железно.

Их знали только в лицо

Понимая, что достичь скоростей работы с ОЗУ на физических дисках было невозможно, разработчики из Platipus (Австралия!) явили миру мутагенное чудовище Qik в 2000-м году. PCI, до 8 гигабайт SDRAM, лошадиные цены — 12 000 USD за 4 ГБ версию.

Чуть позже разработчики из Gigabyte представили свою вариацию на эту тему — i-RAM. Железка имела слоты для ОЗУ и реально батарейку для обеспечения энергонезависимости. В итоге получался физический 4 ГБ RAM-диск на базе четырех DIMM с поддержкой DDR-400, который не обесточивался при перезагрузке.

Но не i-RAM единым, как говорится. Еще более экзотический девайс выкатили хлопцы из ALLONE. Называлось это — Cloud Disk Drive 101, и сделано было по аналогичной концепции, но под ноутбучную память DDR3-1600.

Особым цинусом затеи была идея бекапа на SD-карты! В случае пропадания питания контроллер резервировал содержимое, питаясь от батарейки, на шесть SD-карт в RAID-5!

Работало примерно вот так. Нас интересует именно 4К случайная нагрузка с глубиной запроса 1, т.к. это основная практическая нагрузка в SOHO-реальности. Обратите внимание — с ростом глубины запроса производительность не росла. Видимо по причине того, что это все же DRAM.

Для любителей «50 оттенков твердотельного» я приготовил отдельный кадр на базе рассматриваемого изделия. Наслаждайтесь.

А мы продолжим.

ACard’s ANS-9010 Serial ATA RAM disk – физический RAM-драйв с двумя секциями под память, умеющий представлять их в RAID-0 для пущего профиту. Батарейка в наличии. CF для бекапа на борту. 21 минута на резервирования 32 гигабайт и 14 минут на восстановление в DIMM.

К слову, если владелец мог разжиться дорогущими модулями DDR2 на 8 ГБ, то вся конструкция давала аж 64 гигабайта почти энергонезависимого накопителя с реально неплохими для своего времени скоростями работы. Все это упаковывалось в, страшно подумать, место в системном блоке для 5,25 дисковода.

Работало как-то так. В конфигурации с 32 гигабайтами памяти стоило 1200 долларов! Детально можно почитать здесь.

А вот так аналог выглядел у Apacer.

А еще были Hyperdrive за тысячи долларов и продолжения от Allone в виде ioRAM3 и mark1.

Сама задумка была очень неплохой — получить возможность работать энергонезависимо с невиданными для традиционных «хардов» скоростями, но цены, разношерстные реализации, отсутствие распространения даже в среде энтузиастов, цены я называл? и последующее наступление ставшими отраслевым стандартом SSD вытеснили эти изделия на периферию истории.

Но были и иные причины, по которым это не взлетело — все было реализуемо и без дорогущих железок, как упоминалось выше, а энергонезависимость можно было и UPS-ом обеспечить. На эти грабли еще наступят, и мы еще вернемся за этим понаблюдать.

Переходный период

В общем, в какой-то момент в прошлом стало очевидно, что прямая работа с жесткими дисками (а иных в эти былинные времена и не было-то) стала уж очень степенным занятием и с этим надо было что-то делать, т.к. на практике не все ОС и не всегда, в принципе, умели эффективно работать с кэшированием. Было решено оснащать «винты» буферами из DRAM. Размеры были по сегодняшним меркам — смешные, поэтому и работало так себе, но лучше, чем ничего. Так, например, вся читаемая НЖМД дорожка помещалась в буфер независимо от того, какая часть реально читается — вдруг и соседние данные понадобятся. Конечно на совсем мелочи эффект был, но кто же серьезно будет смотреть на кэш-память в целых 64 мегабайта сегодня? Главный вопрос – что мешало организовать этот буфер в системном ОЗУ и побольше? Ладно, во времена, когда каждый мегабайт ОЗУ был на вес золота, но сейчас продолжают делать жесткие диски с похожими буферами. Это и кэшем-то с сегодняшними объёмами серьезно не назовешь. Да и по факту он скорее содержит адресные данные для быстрой обработки, нежели пользовательскую информацию. Поэтому при росте объемов дисков этот мизерный кэш увеличивать было жизненно необходимо, иначе тормоза только на стадии адресации были бы эпические.

Время шло, общие системные возможности росли, а НЖМД не особо ярко прогрессировали в плане скоростей. Т.е. рост, конечно, какой-то был, но такой, что его даже в рекламу было неудобно выносить. С объёмами хранения все шло сильно лучше, а вот со скоростями глобально — печалька.

Но тут на горизонте забрезжила новая надежда — придумали флэш. До вменяемых цен и приемлемых для систем размеров были еще годы, но и было очевидно, что когда-то КамАЗ с быстрыми накопителями доедет до каждого пользователя. А пока он не доехал флэш начал проникать в компьютеры в доступном виде, т.е. по чуть-чуть.

Гонки на костылях

В 2005-м году Intel представила технологию Intel Turbo Memory. Идея заключалась в том, что на мат. плату ноутбука с тормозным традиционным винчестером компания предлагала устанавливать в miniPCI-E модуль из целого гигабайта (позже — аж двух) флэш-памяти.

По сути это был аналог твердотельного накопителя. На уровне драйверов и чипсета этот модуль должен был использоваться для переноса на него части популярных данных, например, используемых в ходе загрузки ОС, с тормозного накопителя и в дальнейшем такие данные должны были в первую очередь читаться с быстрого твердотельного накопителя, а не с HDD. В итоге загрузка с использованием костыля из гигабайта флэша происходила ощутимо быстрее по причине лучших характеристик на чтение флэш-модуля. Использование технологии предполагалось не только для ускорения загрузки, но и для прочих данных. Т.е. это жизнеспособная технически реализация программно-аппаратного кэширования медленного жесткого диска в более быстрый и, главное, энергонезависимый флэш. Поэтому-то запуск и ускорялся. На практике дело было неоднозначным — у некоторых пользователей загрузка наоборот замедлялась.

Идея была не сказать, что инновационной по сути — выше вы прочитали, что концепция кэширования была известна давно. Но Intel впервые в широкой практике применила инновации в сфере накопителей и это кое-как работало. Особенно учитывая, что в ноутбуках 2005-года теоретическим потолком объема оперативной памяти были 4 гигабайта, а на практике сплошь и рядом хорошо если 1–2. В такой ситуации костыль из гигабайта флэша смотрелся совсем не как бедный родственник, но… Но это Intel, а значит были и особенности, ставшие впоследствии граблями. Дело в том, что концепция была дважды аппаратно зависимой. Во-первых, все это было завязано строго на конкретные чипсеты, начиная с 965-го в ноутбуках, а во-вторых — сам флэш-модуль был проприетарным и как гигабайтный накопитель самой системой не виделся. Да, от представления идеи до продукта прошло почти 2 года и железки были строго для внутриплатформенного использования.

Ах да, для десктопов было представлено аналогичное решение с интерфейсом PCI Express x1.

Для любителей нестандартных подходов можно было сделать даже так:

Где-то мы это еще увидим.

А пока мы вспомним, что аналогичные концепции пытались эксплуатировать в Microsoft Vista в виде технологии ReadyDrive. Идейно это мало отличалось от Intel Turbo Boost, но работало, по отзывам, кривовато. Для ускорения загрузки и восстановления после гибернации предполагалось использовать внешний флэш силами ОС.

Отдел маркетинга Microsoft тогда же продвигал отдельную технологию — ReadyBoost. Она существует по сей день и более-менее работает. Суть ее заключается в том, что если у вас есть свободное место на скоростном накопителе, например, на быстрой «флэшке» в USB 3.0, то система предложит отвести часть этого свободного места для кеширования работы ОС. Естественно такая затея будет иметь хоть какой-то смысл только в том случае, если лишнее свободное место у вас имеется на носителе, который в общем быстрее системного. Для этого при настройке работы свободного накопителя для ReadyBoost будет оценена его производительность и сделан вывод — имеет смысл его использовать в текущих условиях или нет. Так быстрая «флэшка» в системе с HDD может дать некоторый прирост отзывчивости при размещении на ней технологией ReadyBoost каких-то часто употребимых данных, но она же в системе с SSD будет бесполезной. Основной упор технологии на практике приходился на ноутбуки и нетбуки с малым количеством ОЗУ и системными жесткими дисками. Кэширование системных данных с помощью относительно быстрых «флэшек» и SD-карточек позволяло несколько сгладить нехватку оперативной памяти и соответствующую этому «пилежку» файла подкачки на и без того тормозном системном накопителе.

С ростом доступных объемов оперативной памяти и снижением цен на них, а также с расширением возможностей такие объемы в систему инсталлировать, технология утратила и без того не особую актуальность, хотя фактически доступна и в Windows 10.

Хотелось бы отметить, что это совсем не значит, что ее «потанцевал» был концептуально исчерпан. Напротив — как мы увидим в дальнейшем — пути развития были, но Microsoft по непонятным причинам их проигнорировала, несмотря на достаточно неоднозначную реализацию кеширования как такового штатными средствами своих ОС даже в случае внушительных объемов оперативной памяти.

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

Где еще можно встретить кэширование?

Здесь надо сделать небольшое отступление на тему идеи кэширования в популярном ПО. Идея эксплуатируется «аж гай шумит». Ведь если ПО оперирует какими-то повторяющимися данными, то размещение их копий в быстрой памяти будет сильно повышать отзывчивость ПО для пользователя по сравнению с «пилежкой» обычного диска любого типа. Если за дело возьмутся ОС и само ПО вместе, то эффекта можно добиться, размещая кэш (как данные) в кэше (как носителе), адресованном в ОЗУ. Такая вот тавтология — под кэшем понимают как сами популярные данные относительно какого-то приложения или процесса, задублированные в быстрой памяти, так и саму эту быструю память, как часть общей памяти. Но мы помним, что для наблюдения эффективности от этого процесса данные сначала надо прочитать с медленного источника для дублирования в быструю память. Если быстрая память при этом энергозависима, то будет как выше по Блоку — т.е. чтение каждую перезагрузку. Но если относительно быстрая память энергонезависима, то сделать это придется лишь раз и в дальнейшем только валидировать актуальность размещенного там. Медленные же источники могут быть в принципе любыми в т.ч. и сетевыми. Т.е. условное ПО может для работы тянуть что-то из сети с неизвестными пингами, т.е. задержками, а может разово сделать копию запрашиваемого и если данные в сети и локальные в кэше окажутся одинаковыми по контрольным суммам, то вполне вероятно, что прочитать их «по месту» будет надёжнее и быстрее, а что изменилось или новое — загрузить дополнительно или даже параллельно. Таким образом, задача из смеси типичных элементов и новых данных может загружаться в несколько потоков — стабильные данные из локального источника в виде кэша, а новые — из сети. Узнали? Да — типичная страница новостей, где элементы интерфейса меняются редко, а сам по себе контент не такой уж и тяжелый.

Т.е. если наш браузер умеет в кэш, то он когда-то прочитает некую страницу и запишет ее в свой локальный кэш (в оперативной памяти или накопителе). При следующем ее запросе она будет поделена на данные, которые не изменились и все остальное. В итоге повторная загрузка, если страница статична, может пройти вообще целиком из кэша, если браузер получит уведомление, что с последнего посещения изменений не было. На n-ый раз страницу можно перенести из кэша в ОЗУ в кэш на накопителе и таким образом сильно улучшить скорость ее последующего отображения даже после перезагрузки, вместо чтения из сети.

На практике все конечно несколько сложнее, есть всякие адресации, политики и прочие рацухи, но мы рассматриваем концептуально. В стратегическом планировании есть понятие «видение». Вот нечто аналогичное мы сейчас и пытаемся сформировать у читателя, не знакомого с вопросом.

Браузинг под кэшем

В реальности все браузеры умеют в кэш. Для примера рассмотрим мой случай с Opera. В разделе «меню-справка-о программе» можно найти прямую ссылку на место хранения кэша «Оперы». У всех «хромиумов» это будет аналогично, а у «нехромиумов» примерно так же с незначительными отличиями. Так вот ссылка эта для моей «Оперы» для разработчиков выглядит так C:/Users/Z/AppData/Local/Opera Software/Opera Developer/Cache (у себя поправьте название профиля). По ней можно узнать, что в кэш у меня «Опера» записала аж 400 мегабайт на сессию из 130 активных вкладок. Там конечно есть данные и из прошлых вкладок, но для общей ориентации в вопросе нам достаточно этого. Этого и осознания того, что состоит он почти из 1900 файлов.

400 мегабайт и 1900 файлов дадут нам вот примерно такой средний размер файла в сформированном кэше.

«Хромиум» пишет кэш не файлами напрямую, а разделяя данные вот таким собственным образом.

Зачем я привел эти скрины? А затем, что работа типичного браузера со своим локальным кэшем на энергозависимом накопителе это постоянная работа со случайными мелкими файлами. И нередко тормоза при открытии любимой страницы могут быть обусловлены тем, что часть ее читается из локального кэша на НЖМД, когда Windows 10 решила внепланово отстучать товарищу майору. Т.е. диск будет загружен работой полностью и весь мир подождет. Логику вопросов приоритетности чтения с кэша на HDD в век широкополосного интернета у меня не спрашивайте. Даже банальный монитор ресурсов покажет, что «Опера» постоянно что-то пишет и читает. Более глубокое изучение вопроса покажет тысячи постоянных обращений. Внезапно «Опера» оказывается неслабо зависима от дисковой подсистемы. Это то самое популярное ПО, о котором мы сейчас и поговорим — браузеры есть у всех читающих этот текст и работают они сегодня более-менее аналогично.

А кто у нас умеет хуже всех в рандомную нагрузку работой с мелкими файлами? Правильно — жесткий диск. Хуже всех, но данные могут быть таки сохранены, что, собственно, и объясняет, зачем же вообще кэш размещать на тормозном носителе. Сеть может быть и недоступна. Или плохо доступна. А местами она так вообще доступна очень и очень медленно. Это мы разбалованы 100-мегабитными и даже гигабитными каналами в каждую квартиру, а у людей все бывает гораздо хуже.

А кто умеет в радомную нагрузку с мелкими файлами лучше? Конечно же SSD. Именно потому, что практически ВСЯ офисно-домашняя нагрузка это практически аналогичная работа с мелкими файлами, SSD и показывают такие чудеса субъективного ускорения работы системы, будучи установленными в относительно старые компьютеры и ноутбуки.

А кто же умеет лучше всех? Правильно — ОЗУ, но в ОЗУ установить сам браузер, перенести туда профиль пользователя или кэш штатными средствами ОС нельзя. А нештатными — вполне можно и даже нужно для просмотра того, как это работает. Чтобы понять, как это все может шевелиться, даже на древних системах, есть три способа.

Первые два:

  • Установить железный RAM-диск в качестве накопителя, увидеть его в системе как пустой диск и проинсталлировать туда браузер целиком. Тогда он будет весь работать фактически из ОЗУ. И хорошо, надо сказать, будет работать — мгновенно запускаться и переключаться между вкладками! Все упрется в прямом смысле слова в возможности процессора. Но таких чудесатых вундервафель сегодня почти не найти, да и поустаревали они, и поэтому мы переходим к следующему пункту.
  • Имея в системе пару свободных гигабайт оперативной памяти для эксперимента скачать программный RAM-диск и провести процедуру из п.1. Программный — это ПО, которое создаст в среде Windows (в нашем случае) за счет части ОЗУ виртуальный накопитель и проассоциирует его с реальной буквой диска в списке существующих. Для системы это будет выглядеть вполне настоящим накопителем, хотя на практике это будет всего лишь хитрый драйвер со сложной логикой трансляции адресов физической памяти. Программных RAM-дисков масса, но я советовал бы ознакомиться с двумя — SuperSpeed RamDisk Plus и Primo Ramdisk. Важной особенностью этих программ является способность сохранять содержимое RAM-диска на физический накопитель при перезагрузке и дальнейшее монтирование такого образа назад при запуске системы. Т.е. для пользователя такой RAM-диск по сути выглядит обычным накопителем. Да, в дальнейшем на таком своеобразном накопителе можно запустить какой-нибудь CrystalDiskmark и сильно удивиться результату. Обе программы имеют пробные полнофункциональные версии, что позволит легально их изучить. На дату написания статьи сайт SuperSpeed почему-то недоступен, но Primo Ramdisk можно скачать по ссылке.

Устанавливается и настраивается все очень просто. Диалог настройки выглядит примерно так:

Важной особенностью программы является тот факт, что если у вас, например, 32-битная ОС, но есть возможность поставить физически больше, чем 3 ГБ оперативной памяти, то RAM-диск можно будет разместить в этой недоступной для ОС памяти. Туда, например, в таком случае можно будет подкинуть и файл подкачки Windows. Называется это невидимая память по терминологии программы.

Создав такой RAM-диск и поставив туда произвольный браузер, вы сильно удивитесь тому, как быстро он работает. Даже если у вас лучший SSD установлен системным.

Промежуточные итоги

Таким образом, мы можем констатировать, что идея размещения наиболее популярных данных в наиболее быстрые участки памяти существует давно. В общем случае это называется кешированием. Получить преимущества от его использования пытаются практически все. Особенно диковинные варианты были реализованы во времена отсутствия штатной поддержки больших объемов ОЗУ железом и отсутствия объемных и быстрых физических накопителей в «доSSDшную» эру.

Важный нюанс по данным, которые кэшируются, заключается в том, что в единицу времени необходимости кэшировать все и вся нет. Достаточно правильно сделать выборку и обойтись можно будет вполне небольшими объемами. Для этого существуют разные инструменты: правило минуты, 5 минут и т.п.

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

Продавать микроскопические твердотельники с серьезными лицами широким массам было нереально, и поэтому мир увидели интересные изделия — гибридные накопители, известные так же как SSHDD и производные.

Мгновение гибридов в истории

Примечательно, что некоторые серии этих изделий были просто физически двумя почти независимыми накопителями в одном корпусе, но с одним разъемом интерфейса. Т.е., в общем-то, их можно было смело скручивать изолентой и эффект был бы тот же. Называется это SSHD Dual Drive. В аналогии с телефонами и камерами это выглядело бы примерно так.

В качестве примера можно привести WD Black Dual Drive WD1001X06X — он реально состоит из двух фактических накопителей, скрученных винтами.

Получать все плюшки от недогибрида предлагалось с помощью дополнительного ПО своими руками. Т.е. можно было для ReadyBoost назначить отдельный накопитель в составе такого типо гибрида, т.к. все потроха виделись системой как два отдельных накопителя, но даже такое видение происходило не без танцев с бубном. Идея, прямо скажем, нишевая и для широких масс, любящих решения, работающие «из коробки» — неподходящая.

Конечно, не могли не появиться варианты, где флэш использовался для кэширования механической части более-менее по-человечески. Какие-нибудь аж 8 гигабайт флэша пользователю были не видны и утилизировались прошивкой и контроллером гибрида по понятным только им алгоритмам. Хотя общая идея была ясна — часточитаемое задублируется во флэш (а то и перенесется), а контроллер будет следить за актуальностью находящегося там. Может, что и из записи там тоже задержится.

В качестве примера приведем Seagate Desktop SSHD ST2000DX001 — два магнитных терабайта, 8 твердотельных флэш гигабайт и 64 мегабайта DRAM в одном кузове.

Работает это все несколько лучше, чем типичный жесткий диск. Как мы помним, обычные HDD уже давно оснащались DRAM-буфером. Правда его размер был обычно маленьким и на нагрузках, хоть как-то отличающихся от простоя, толку от него было немного. Вот здесь WD в 2019-м году не улыбаясь рассказывает коротко о преимуществах жестких дисков с буферами от 2 (ого!) до 64 мегабайт. Главный вывод: чем кэш-буфер больше — тем лучше. Хоть это верно, правда, чем он больше, тем мощнее надо быть контроллеру в общем случае.

На этом фоне не может не возникнуть вопрос — почему же на многотерабайтных механических «винтах» кэш-памяти кот наплакал? Ну какие же могут быть 64 мегабайта у диска с лошадиным временем отклика сегодня? Ну, даже 256?

В этом ключе твердотельная кэш-память внутри гибридов выглядела идейно неплохо, но на практике это все работало (и работает) слабенько по сравнению с чистыми твердотельниками по такими причинам: даже 8 гигабайт твердотельного кэша в гибриде — маловато будет.

Логику использования этой памяти настраивать под конкретные задачи никто не разрешает, ибо прошивка же, а обновление дело туманное (ну действительно, часто ли вы обновляете прошивку жёсткого диска?), скорость работы и ресурс твердотельного кэша неясны, какие контроллеры — не всегда понятно, расширение недоступно, т.к. платформа закрыта, т.е. только с новым накопителем, статистика для анализа недоступна, усложнение устройства ставит вопросы об отказах и надежности на длинной дистанции в целом и все такое.

В общем, чисто по Блоку — Бессмысленный и тусклый свет.

И замах, т.е. идея хорошая: вроде и концепция правильная заложена, и иерархия построена, и обслуживать пользователю никак не надо, и вникать нет необходимости в нюансы работы — поставил и забы(и)л, но удар, т.е. реализация — в штангу.

SSD без кэша не бывает

Справедливости ради надо заметить, что в чисто твердотельных накопителях внутренняя работа организована похожим образом — массив твердотельной памяти космически быстр только на последовательные операции с глубокими очередями, а все остальное закостыливается кэшем, но широкому пользователю это не всегда известно.

Случайно читать относительно быстро (50–60 мегабайт в секунду у лучших представителей SSD) можно прямо из массива с поправкой на крутость контроллера (здесь мы не останавливаемся, но тема контроллеров накопителей требует отдельного изучения — по сути, это сегодня уже многоядерные специализированные процессоры в составе «дисков», особенно твердотельных, и от их производительности и возможностей прямо зависят скорости работы накопителя) и канальность. Увеличить это можно только либо развивая твердотельные технологии, в т.ч. по части контроллеров, в сторону типа 3DXpoint, где можно читать случайно со скоростями до 300 (!) мегабайт в секунду, либо… предварительно кешируя прочитанное в более быструю память, т.е. в системную оперативную или собственный DRAM-буфер такого накопителя, которые, опять же, большими бывают нечасто и объемы DRAM-буферов обычно растут с рабочими объемами и… ценами же. Происходит так потому, что DRAM в SSD (да и в обычных HDD немного иначе, но тоже) используется в основном опять же для служебных данных типа таблиц соответствия (адресации) и т.п. Мы же помним, что логическому адресу данных, который «понимает» ОС, контроллером присвоится физический адрес внутри носителя, где движение данных происходит постоянно, но для внешнего мира адреса не меняются благодаря работе контроллера, как посредника между внутренним массивом и внешними контрагентами, которые вообще никак не подозревают, что там происходит внутри SSD в ходе TRIM и прочих процессов. Поэтому, кстати, при выходе контроллера из строя восстановить с SSD, состоящего из более чем одного чипа памяти, данные практически невозможно т.к. только контроллер «знает», опираясь на указанную таблицу, что и куда он распределял по твердотельному массиву. Т.е. рост объема DRAM-буфера — прямое следствие роста рабочего объема накопителя при заданной производительности контроллера. Нет, частично там что-то и из данных может задержаться, но это не точно. Типично сегодня можно встретить гигабайт DRAM-буфера на терабайт твердотельного накопителя. Как конкретно он используется и распределяется прошивкой — опять же широкой общественности неизвестно. Можно пытаться восстановить логику по результатам целевого тестирования, но смысл в этом будет только исследовательский, т.к. управлять ей не предлагается.

Со случайной записью картина аналогичная — быстро и случайно записать в массив не получится в общем случае. Поэтому запись тоже кэшируется — данные попадают сначала в самую быструю память, т.е. в кэш-буфер, и потом фоново переносятся в основной массив. Если DRAM-буфер задействован и заканчивается или его вообще не предусмотрели конструкцией, то в твердотельных дисках отводится часть основного массива, который, работая в быстром однобитном режиме, принимает входящий трафик сначала на себя, а потом, например, во время простоя или слабой нагрузки, фоново внутри накопителя без участия пользователя переписывает все свое содержимое в основной массив, усиливая показатели записи. Сегодня такое внутреннее кэширование осуществляется как фиксированными областями, работающими в быстром SLC-режиме, так и динамическими — вплоть до 40+ гигабайт у Samsung 860 QVO на терабайт тормозной QLC и 80 (!) гигабайт — на 2 ТБ модель. Обычные люди называют это кэшированием записи. Маркетологи Samsung преподносят это как специальную технологию TurboWrite! Видимо где-то на повороте потерялись слова мега, х1000 и прочие маркетинговые eye-стопперы. Ну, либо они оставлены на будущее.

Благодаря такому кэшированию, если базовый массив что в SDD, что тем более в HDD, относительно тормозной, то в случае объемной записи пользователь может благодаря местами огромной (до 80 гигабайт) быстрой «прокладке» вообще не ощутить медленности основной памяти накопителя. Вы часто пишите ходом более 40 гигабайт? Я — нет. И вы, уверен, в основном тоже. Поэтому все текущие операции будут происходить в быстрой памяти кэш-прокладки и лишь потом фоново переноситься на медленный массив для хранения.

Вы только что прочитали заготовку рекламной компании OLC SSD. Ой, я это вслух?

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

Именно поэтому в ряде популярных тест-утилит скоростей SSD если тестовый образец, сгенерированный программой, поместится целиком в такую прокладку и будет тут же прочитан в ходе теста, то эти самые утилиты могут показывать скорость именно быстрой прокладки, а не основного массива! Некоторые производители, зная любовь тестировщиков к таким утилитам и логику работы самих утилит, закладывают в логику работы прошивок такое обращение с типичными тестовыми зданиями, что в ходе теста исследователь видит скорость именно кэша и сильно радуется нерелевантным по сути цифрам. Такой себе аналог дизельгейта. Можно сказать — мухлюют.

Здесь появляется дилемма. С одной стороны это непоказательно по очевидным причинам — тестируется же накопитель, а не его кэш! С другой — если за пределы кэша еще надо ухитриться выйти, то какая разница, какая там скорость за его пределами, если ее мы никогда почти не увидим?

С третьей стороны — во многих накопителях есть еще и DRAM-буфер из ОЗУ-подобной памяти (на самом деле это она в виде отдельных чипов и есть) и какой вклад именно она, если в конкретном случае таки присутствует, дает в показатели тестирования — тоже отдельный вопрос методики подведения итогов.

Важное читать здесь

Главный вывод — никаких чистых жестких или твердотельных дисков не существует. Везде, абсолютно везде существует иерархические системы памяти с кешированием как записи, так и чтения. Разница лишь в том, как конкретно это реализовано. Твердотельные накопители, в общем, сильно быстрее традиционных жестких дисков, но и там и там все устроено концептуально похоже. Конкретные же решения формируются под воздействием рыночных факторов (например, размер DRAM-буфера может быть обусловлен сегодняшними ценами на чипы памяти) и доступности тех или иных технологий производителю, а так же… психологии.

Смотрите — какая разница насколько медленна базовая память с холодными данными, если они востребуются редко? Какая разница насколько медленна основная память, если текущие операции будут осуществляться преимущественно в кэш-буфере? Какая разница, что в музыкальном файле нет частот, которые вы не способны услышать? Какая разница, где фактически находятся ваши деньги с карточного счета, если по факту их востребованности они будут реально выплачены банком? Последние примеры, конечно, так себе аналогия, но, тем не менее, в части психологической подачи компромиссного решения маркетологами подойдут. Не стоит забывать, что гримирование проблемных мест не отменяет позитивных характеристик предложений.

Кстати о неслышимых частотах, если с психоаккустикой теоретически все более-менее понятно, то, например, в автомобильных моно-усилителях, заточенных на низкие частоты, нередко присутствует функция subsonic — это фильтр, отсекающий частоты ниже порога, который физически слышим и может быть воспроизведен конкретной головкой. Купирование лишней нагрузки позволит улучшить работу сабвуфера в диапазоне целевой нагрузки без ущерба для слушателя. Конечно, звукофилы возразят, что это не true и инфразвук нужно прочувствовать почками и в целом будут технически правы, но 99,(9)% слушателей разницы не ощутят ничем и ушами в первую очередь.

Теория идеального накопителя

Но вернемся к нашим накопителям и пирамиде. Идеальному накопителю бы работать со скоростью внутрипроцессорной памяти и быть большим и энергонезависимым, и тогда все остальное можно было бы просто отнести в музей, но до этого счастливого момента пройдут десятилетия, если не века. Самой же процессорной памятью мы управлять не можем снаружи никак. Оперативная память пока еще энергозависима. Intel обещает с этим что-то делать, но результаты мы пока пощупать не можем. Поэтому использовать ее мы можем и должны при сегодняшних колоссальных технически доступных объемах традиционным сегодня же способом, т.е. помимо основной функции еще и в качестве кэша накопителей. По сути, операционные системы это делать умеют, но получается не очень эффективно. Далее идут в общем виде SSD, которые пока на солидных объемах все еще недешевы (хотя цены и падают) с проблемами длительного хранения, условного износа, растущей битности и утончающихся техпроцессов — еще немного и космическое излучение начнет в прямом смысле мешать электронам правильно сидеть по дуплам твердотельной памяти. Следом видим огромные по объемам энергонезависимые магнитные жесткие диски, способные хранить данные десятилетиями, но медленные и подверженные механическому износу, боящиеся вибраций и тепла. Дальше по иерархии идти смысла нет. Идеального накопителя не существует. Его пытались сделать и пример мы видели выше, но первый блин оказался комом и дальше инженеры не пошли на фоне дешевеющих SSD. И уже, видимо, не пойдут.

А как же должен выглядеть сферический в вакууме идеальный накопитель с позиции сегодняшних технологических возможностей? Давай поконфабулируем будущее на эту тему — может нам даже удастся что-то угадать.

Как мы увидели в начале — все данные можно условно поделить на холодные, теплые и горячие по критерию востребованности пользователем. Поэтому, в первом приближении нам бы избавиться от обычного «винта», но объемные SSD – дорогие, а хранить архивы в облаках затея сомнительная, т.к. я еще не видел ни одного юридического документа, где была бы предметно описана не только ответственность облачного провайдера за потерю пользовательских данных, но и прямая обязанность обеспечить их гарантированную сохранность. Даже в странах с развитой правовой системой получить компенсацию за утерю таких данных от провайдера будет сложно, т.к. все упрется в денежную оценку пропажи, которая может иметь нематериальную ценность (например, семейный фотоархив). И все. В идеале иметь прямой контракт с провайдером с описанием условий хранения и конкретной ответственностью, но это утопия для широкого круга лиц. Конечно современные технологии хранения сводят вероятность безвозвратных потерь к низким значениям – все дублируется многократно с избыточностью, но это и стоит недешево. С другой стороны, если какие-то условные злоумышленники в ходе воображаемого террористического акта разрушат целиком недецентрализированный дата-центр провайдера облачного хранения, то с концами будут утеряны не только все данные, но и возможность компенсаций, т.к. подобного рода события в большинстве случаев являются форс-мажором. Имущество провайдера, конечно, скорее всего, будет застраховано, но клиенты — нет. Или будет предложена такая финансовая модель защиты интересов клиента, что проще и дешевле будет обставиться NAS, подкинуть их с постоянным IP в онлайн за NAT и не париться. И я это вполне серьезно на фоне того, что даже банки не несут ответственности за пропажи из ячеек.

В пересчете на гигабайт и сроки хранения традиционные жесткие диски пока недосягаемы для SSD, а на подходе 40 гигабайтные монстры в 3,5-дюймовом стандартом корпусе. Сотки тоже не за горами. В общем, отказываться от традиционного HDD для холодного хранения тем, кому это надо, смысла особого нет. У друзей-дизайнеров огромные архивы работ, которые хоть и сданы заказчикам, но удалять их мало кто решится. У кого-то семейные архивы. У кого-то видео, RAW и т.п.

Т.е. базой будет технологически традиционный жесткий диск.  Опять по Блоку:

Живи еще хоть четверть века —
Все будет так. Исхода нет.

Далее таковой бы закэшировать на чтение и запись прокладкой побыстрее. Идеально бы чем-то вроде оперативной памяти, но ее нужно будет много, а стоить она в этих объемах будет дорого. А еще энрегонезависимость. Поэтому из вменяемого сегодня доступна память твердотельная. Т.е. по иерархии выше нам бы поставить SSD, через который транзитом данные бы отсрочено оседали на холодом жестком диске и на который можно было бы автоматически дублировать популярные данные типа системных файлов ОС, браузеров и прочее, которые читаются хотя бы раз в неделю-месяц. Если данные не востребованы, то с такого SSD они удаляются, оставаясь на холодном винте. А если вы пару недель-месяц не обращались к файлу, то следующее его прочтение с медленного винта с одновременным копированием на SSD кэш проблемой быть никак не должен. Будете с ним работать — он будет читаться с быстрого SSD, измените — изменится и на HDD, не будете с ним работать — он останется на жестком диске, освободив место на SSD. Примерно так и были задуманы SSHDD, но 8 гигабайт явно мало. Да и неплохо бы иметь возможность эту кэширующую прокладку менять произвольно на лучшую из доступных пользователю.

При всех замечательных особенностях SSD они сами нуждаются в прокладке и памяти еще боле быстрой. Типичный подход решения вопроса — DRAM-буфер. Решение актуальное, но маленькое и в основном служебное. И, опять же, недоступное к расширению под конкретные нужды. Гигабайт на терабайтном SSD более-менее неплохо, но в мейнстриме-то накопители поменьше с меньшими кэш-буферами. Поэтому в идеале для нашего сферического накопителя иметь внешний буфер на основе ОЗУ-подобной памяти, доступной к произвольному конфигурированию под конкретные нужды. Тут на ум приходит рассмотренный выше аппаратный RAM-драйв — там и скорости были бы и прочее. Но для современных типов памяти таковых на рынке 0,5 штуки (да, я встречал одно решение, но именно одно и очень редкое и дорогое) да и по-хорошему — аппаратный RAM-диск уже не нужен. Его время было тогда, когда чипсеты не поддерживали много ОЗУ, а сегодня 128 гигабайт можно почти в каждую SOHO плату с 4 слотами поставить, а завтра это цифра удвоится. Серверное железо мы выносим за скобки данной статьи сознательно.

Если были и есть аппаратные RAM-драйвы, то почему бы сегодня софтверно не отвести часть ОЗУ под дисковый кэш? Технически и программно в этом нет никаких проблем, но производители последней ОС почему-то не задумываются об этом, предлагая штатное кэширование, которое нельзя конфигурировать и которое работает по нераскрытым алгоритмам.

Таким образом, теоретический и воображаемый идеал на все случаи = ОЗУ+SSD+HDD + динамическое распределение данных по актуальности.

И чем это принципиально лучше Seagate SSHD выше по тексту?

Как минимум тем, что новых SSHD уже не будет. Их жизненный цикл начался в 2007 году, когда Seagate и Samsung представили решения со 128 и 256 мегабайтами флэша. А закончился фактически в 2013-м с выпуском WD Black SSHD с 24 гигабайтами флэша. Сегодня перспектив дальнейшего их развития не видно никаких, а открытая архитектура современного компьютера позволяет реализовать описанную выше концепцию на типичных розничных компонентах в конфигурации под любой кошелек. В портативную технику городить все это вообще давно нет смысла — там SSD обеспечит и скорость, и компактность, и вибронезависимость, а в десктоп что-то плотно упаковывать тоже бессмысленно, когда везде middle-tower.

Внимательно изучив ситуацию становится очевидно, что описанное по факту уже реализовано в нескольких похожих ипостасях. Выше мы читали про Intel Turbo Boost с проприетарным кэширующим модулем. В 2011 опять же Intel представила Smart Response Technology. Опять же проприетарную технологию, привязанную к чипсетам, которая позволяла использовать для кэширования жестких дисков до 64 гигабайт подключенного SSD.

Про Microsoft ReadyDrive и ReadyBoost написано выше.

С разными особенностями, но можно констатировать, что у Apple похожая технология называется Fusion Drive. В ее рамках складываются объемы доступных накопителей, и данные динамически распределяются по ним в зависимости от востребованности. ОС и важные документы всегда закешированы на более быстром носителе. Но технология сильно закрытая и тоже проприетарная.

Следующий прорыв в области кэширования совершила опять же Intel. В 2015 она сообщила, что изобрела революционную технологию твердотельной памяти 3D Xpoint. Революционную = дорогую. Заявка была такая.

Окажись все правдой, то мы бы сильно приблизились бы к идеалу накопителя — быстрому и объемному RAM, по версии IBM из 50-х. Накопители на этой технологии вышли на рынок под торговой маркой Optane и оказались фантастически быстры. Достаточно сказать, что в основной твердотельной дисциплине — случайном чтении мелких файлов с глубиной запроса 1 — Optane способен показать скорости около 300 мегабайт в секунду. Это минимум в 5–6 лучше ближайших массовых преследователей от Samsung. Таким образом, среди твердотельных накопителей Optane оказался несомненным лидером не только по скоростям, но и, к сожалению, по ценам. В перспективе на этой технологии Intel обещала энергонезависимую оперативную память, что еще более сильно концептуально приближается к идеалу из самого начала статьи. Сегодня таковые объявлены для серверного рынка, но изучить их пока возможности не было.

В связи с тем, что Optane оказался очень быстр и очень дорог, Intel решила предлагать его на рынок в маленьких дозах — NVMe-накопителями по 16 и 32 гигабайта. Еще раз — 16 и32 гигабайта под конец второй декады 21 века. Но предлагала Intel это счастье, в первую очередь, как кэширующий модуль, привязанный к собственному железу в виде чипсетов и процессоров. Т.е. разработчик предполагал, что у клиента, купившего систему 7 поколения Intel, будет системным жесткий диск. Изначально требования были выше по процессорам, но потом были понижены вплоть до Celeron, что намекает на чисто программные ограничения.

Держателям более возрастного железа предлагалось наблюдать со стороны праздник проприетарного кэширования.

С учетом скоростей на мелких файлах Optane впору кэшировать лучшие SSD. Идеал виделся как-то так:

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

По скоростным показателям Optane — лучшая и недосягаемая на рынке кэширующая прокладка между ОЗУ и накопителем, но она, как и TurboMemory в прошлом, привязана к железу, что очень портит картину: ведь купившие новое железо вряд ли позарятся на жесткий диск, как системный.

В ответ на такой беспорядок конкуренты из AMD представили собственный аналог — StoreMi. Концептуально похоже, но тоже привязано к определенным чипсетам. Правда, в качестве кеширующего предлагается использовать любой подключенный SSD.

На фоне изложенного ожидать развития гибридных дисков не приходится точно — при возможности ситуативно жонглировать составляющими, никому не нужен будет странный комбайн.

Из совсем экзотики на эту тему приведем напоследок два полярных технологических примера.

Твердотельный накопитель из 4 гигабайт SLC NAND с кэшем из 4 гигабайт DDR для PCI Express x1 — вполне себе вариант для кеширования более медленных накопителей, правда, стоил 2000 USD в 2009 году.

И OCZ RevoDrive Hybrid — плата со 128 ГБ MLC, аж двумя контроллерами SandForce SF-2281 и 2,5″ НЖМД на борту с частотой вращения 5400 оборотов в минуту. DRAM-буфера почему-то не предусмотрено вообще никакого, флэш распаян. Системой виделась как два независимых устройства, для сочленения которых с целью кэширования, требовалось внешнее комплектное ПО Dataplex c минимумом настроек. Скручено натурально изолентой, т.е. болтами.

Примеры полярные, т.к. являются представителями хоть и похожих идейно, но разных по набору компонентов концепций. Первому не хватает холодного хранилища, второму — кэша в DRAM. Почему кто-то тогда не стал давить два окурка вместе и не сделал дрим-девайс с полным набором технологий — непонятно. Хорошо хоть накопитель во втором съемный, правда, толку от этого немного.

Но в связи с Optane и до 128 гигабайт памяти на современных материнских платах таких и подобных гибридов, мы, скорее всего, уже никогда не увидим, как и реалий из фильма, кадр из которого приведен. Музейные экспонаты. Хотя пути Господни неисповедимы, а в IT очень любят работать с оглядкой на религию, особенно в Apple, где маркетологи прямо называются евангелистами, а в свою экосистему пускают через посвящение (iTunes) с усложнением обратного выхода. Но мы отвлеклись.

Возможно, вы не полностью используете возможности своего железа

Отдельно стоит упомянуть достижения некоторых производителей SSD в сфере кэширования. Так Crucial и Samsung поставляют ПО, которое умеет кешировать их изделия за счет части свободной оперативной памяти машины, где они установлены. Происходит это совершенно незаметно для пользователя. В случае с Crucial можно кешировать и HDD SATA, подключенные к машине, где системным диском является изделие Crucial. Называется Momentum Cache. Таким образом, закостыливается маленький объем физического DRAM-кэша в накопителях или его полное отсутствие в дешевых сериях, а также нюансы внутринакопительного кэширования самого по себе. ПО бесплатное и беспроблемное.

А как вообще в миру?

Основная проблема всего вышеперечисленного зоопарка в том, что каждый производитель тянет одеяло на себя аппаратно. Оно и понятно — пользователя давно пора подсаживать на собственную экосистему. Доказано Apple.

Второй проблемой является то, что каждым решением закрыта лишь какая-то часть общей идеальной задачи по кэшированию. Системного решения вопроса именно в SOHO никто не предложил, хотя из представленных концепций прямо проистекает, что каких-то непреодолимых или железных преград в этом вопросе нет.

Для корпоративного же рынка такие решения есть, например, от Qnap. И он далеко не одинок — это обычная практика. Приведен чисто для иллюстрации понятия уровней данных в enterprise с автораспределением.

Вот логика.

А вот условный пример трехуровневой «железки».

Здесь же реализовано SSD-кэширование с сохранением наиболее актуальных данных в SSD-кэше.

Т.е. концептуально все имеет решения типа Cache Acceleration Software, но в SOHO их почему-то под открытую архитектуру комплексно и широко не продают.

Но, one more thing, как говорят любители фруктов

Чуть глубже изучив ситуацию, оказалось, что не все так проприетарно в вопросе многоуровневости и кеширования накопительной подсистемы в SOHO. По крайней мере, в среде Windows собрать в кучу кэш в ОЗУ, SSD и HDD можно попробовать.

Для этого существует платная, но с пробным периодом, программа от разработчика RAM-диска, рассмотренного выше. Это PrimoCache от Romex Software. Посмотреть можно по ссылке. Ключевой момент — никаких аппаратных привязок нет. Работает на любом компьютере, где есть ОЗУ и системный накопитель. Если системный накопитель — жесткий «винт», есть твердотельный диск и немного ОЗУ, то можно собрать это все в достаточно интересную многоуровневую систему. Это не значит, что нужно бежать и собирать, но ознакомиться для общего развития вполне стоит.

Для понимания возможностей давайте посмотрим на системный диалог — там на одном скриншоте видны основные нюансы работы.

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

Специально для этого материала я заранее установил рассматриваемую программу на домашнем ноутбуке на базе Core i3-2328M, 16 ГБ RAM, 250 ГБ HDD и 16 ГБ SSD. Характер нагрузки — офисно-домашний: несколько браузеров с десятками вкладок в каждом, мессенджеры, видео, музыка, офисные приложения. Все это загружено одновременно и почти никогда не закрывается. Нет игр, рендера, пережатия видео. Типичная SOHO-машина на старом процессоре. Старом, но не ржавом (с). С жестким диском в качестве системного он не мог даже полностью принять нагрузку на себя, т.к. скорость доступа к данным на диске была так себе. На ночь компьютер уходит в гибернацию.

В систему был добавлен SSD 16 ГБ на Phison S9 — т.е. без какого-либо DRAM-буфера — специально для целей кэширования и оценки его качества.

Аптайм приведенного скриншота составляет 100 дней. Для статистики вполне достаточно, как мне кажется. Давайте приступим к изучению.

Сверху указано текущее задание, кликнув по нему можно попасть в настройки конкретного задания. О них позже. Заданий может быть несколько.

Внизу слева в первом квадрате мы узнаем, что кэш-задание активно. Оно в конкретном случае состоит из 4 гигабайт кэша L1 — первого уровня. Это означает, что из 16 гигабайт памяти я отвел ровно четыре строго для целей кэширования. Размер можно выбрать любой. Четыре лично мне оказалось достаточно, но чем больше — тем лучше. Если в настройках выбрано кеширование как чтения, так и записи, то все, что с точки зрения ОС ходит с и на диск пройдет через эти 4 ГБ. Причем можно настроить время, через которое данные, отправленные на запись, покинут этот буфер в сторону диска. Время можно задать любое вплоть до бесконечности. Т.е. если оно будет так настроено, то данные, попавшие в буфер будут храниться там бессрочно, пока не будут замещены новыми. Если новых поступлений не будет, то у вас всегда там будет копия актуальных данных. Достаточно неплохо это все работает даже с 1–2 гигабайтами, отведенными из ОЗУ, но чем больше — тем больше данных будут доступны мгновенно. По сути, это RAM-диск, где крутятся актуальные данные.

Далее мы узнаем, что под L2-кэш отведено 13+ гигабайт. Это означает, что почти все 16 ГБ SSD я отвел под кэш жесткого диска на SSD. Оставлено немного неразмеченного места для упрощения работы контроллера при полном заполнении. В теории программа поместит в этот кэш КОПИИ популярных данных где-то на второе-третье обращение. Первично они будут прочитаны в кэш в ОЗУ с медленного «винта», но если вскоре к ним поступят новые обращения, то чтение произойдет из ОЗУ-кэша, а сами эти данные будут задублированы на SSD. Таким образом, при последующих обращениях, когда из ОЗУ-кэша данные будут вытеснены, их чтение произойдет не с медленного жесткого диска, а из копии в L2-кэше SSD. Т.е. с точки зрения системы и пользователя чтение будет проведено со скоростью SSD. Много или мало 13 гигабайт под кэш мы узнаем позже, но размер может быть любой. Его можно даже задать из системного SSD, на котором под это отвести раздел для кэширования «файлопомойки».

Storage — название конкретного кэширующего пространства. Их может быть много, например, под каждое задание отдельный кэш-раздел. Поэтому имя и прописано.

Block Size — размер блока в кэш задании. Чем меньше — тем лучше, но немного растет нагрузка на процессор (я этого не замечаю), а главное — растет нижний параметр Overhead. Это расход системной памяти на процесс кэширования. Чем меньше размер блока — тем больше расход. На 8 килобайтном блоке и 4 гигабайтах в ОЗУ это 308 мегабайт на обслуживание.

Strategy — у меня там стоит запись и чтение, но можно выбрать что-то одно и тогда только выбранная операция будет проходить через кэш в ОЗУ и SSD.

Deffer-Write — срок отложенной записи на физический диск. Если приходит запрос на запись, то таковая сначала пройдет в кэш в ОЗУ. Система будет думать, что запись произведена, но фактически данные до диска еще не дойдут. Сделано это для того, чтобы не тормозить работу системы медленным жестким диском — ведь с него в это время может что-то читаться. Отложенная запись подразумевает, что реальная запись пройдет позже и не ранее указанного времени. При этом фактически к диску пойдет обращение в момент, когда он может быть вообще в простое. Важно то, что запись пойдет пакетом с глубиной запроса более 1, т.к. задача-то сформирована. А даже тормозные жесткие диски такие задачи выполняют не на таких уж и плохих скоростях. Т.е. даже если были сгенерированы запросы на запись большого количества мелких файлов, то к моменту фактической записи это будет не рандоманя толпа, а последовательная очередь, что очень по-разному выглядит в бенчмарках. Если кэшировать так какой-нибудь Samsung Pro 970, то запись пройдет вообще почти мгновенно.

Mode — режим работы кэша. Это детали, которые рассмотрим позже.

Options — FlushSleep означает, что перед переходом в сон из кэша в ОЗУ все незаписанные данные будут фактически записаны на накопитель. При просыпании весь кэш в ОЗУ будет на месте. Это мера предосторожности на случай потери питания во сне.

Prefetch — режим сохранения кэша в ОЗУ на диск перед перезагрузкой или выключением. Если включено, то после перезапуска всё кэш-задание будет смонтировано в ОЗУ и по итогу весь набор типичных кэшированных данных будет доступен для чтения со скоростью ОЗУ. Сохраняется на жестком диске.

Правее у нас окно статистики, которая очень важна.

Итак, за 100 дней было подано запросов на чтение 754 гигабайт, при этом из кэшей прочитано 733! Т.е. в моем профиле работы попадание в кэш почти 97%. Это означает, что 97% данных были или в кэше в ОЗУ или на SSD. Всего 3% было прочитано с медленного жесткого диска или 22 гигабайта за 100 дней. Вероятно, это весь объем данных, с которыми я работал за это время, плюс надо сделать поправку на прошлые запуски кэша. Он мог подтянуть префетчем прошлую сессию, а это до 3 гигабайт, но скорее всего этого не было и 22 — это мой объем реального чтения с жесткого диска.

32,4% всего было прочитано из кэша на SSD. Я думал, будет больше. Т.е. 67,6 где-то процентов прочитано из 4 гигабайт кэша в ОЗУ.

L2-запись показывает, что за все 100 дней программа оценила как актуальные и достойные переноса на SSD около 65 гигабайт, но SSD у меня был только на 16 и поэтому со временем самое неактуальное вытеснялось из этого кэширующего тома. Т.е. будь у меня SSD на 64 гигабайта, то за это время он бы заполнился целиком, разгружая жесткий диск по и так слабенькому чтению. Естественно, что все исходные данные в целости лежат на жестком диске независимо от движения копий по L2-кэшу.

Далее видим группу важных показателей статистки о запросах записи на жесткий диск.

За 100 дней система сгенерировала запросов на запись 411 гигабайт, но до фактической записи дошло всего 61,5%. Это произошло потому, что актуальность записи части данных была утрачена по разным причинам до фактического их переноса из кэша в ОЗУ на физический жесткий диск. Экономия трети записи была бы актуальна, когда у твердотельных накопителей были проблемы с ресурсом. И, вероятно, будет актуальна для накопителей на QLC- и OLC-типах памяти, где каждая перезапись, похоже, будет на счету в случае малых объемов самих накопителей.

Deffered Blocks — текущая очередь на запись в кэше ОЗУ.

Trimmed — не дошедшие до записи.

Prefetch — наработанный кэш в ОЗУ, который был смонтирован при загрузке системы.

Общая логика работы программы выглядит так.

Ну и коротко об эффективности работы с точки зрения популярной и наглядной тестовой утилиты. Слева кэш выключен, справа — включен.

Помните наши три способа выше прочувствовать скорости RAM-диска, из которых мы озвучили лишь два? Надеюсь, вы заметили, что п.3 там не было? Это как раз третий. Браузерный кэш в этом случае будет закэширован в т.ч. в кэш в оперативной памяти, который работает аналогично RAM-диску. Сам браузер с большим количеством окон будет отлично стрелять, т.к. тоже будет закэширован префетчем в кэш в ОЗУ при загрузке ОС. В крайнем случае, он стартует из копии на SSD L2-кэше, ну и кэш самого браузера в худшем случае будет задублирован на L2, что внешне приведет к работе на скорости, идентичной чистому системному SSD. Не запутались где какой кэш?

Как вам увеличение случайной скорости чтения мелких файлов примерно в 1150 раз? Выглядит впечатляюще, но есть один нюанс. Выше в разделе «SSD без кэша не бывает» мы заметили, что «Именно поэтому в ряде популярных тест-утилит скоростей SSD если тестовый образец, сгенерированный утилитой, поместится целиком в такую прокладку и будет тут же прочитан в ходе теста, то эти самые утилиты могут показывать скорость именно быстрой кэш-прокладки, а не основного массива!» Это как раз тот случай. Утилита показывает скорости работы именно кэша, а не основного массива. Т.е. мы фактически видим результаты тестирования скорости работы DDR3, установленной в нашем ноутбуке, часть которой жестко отведена под дисковый кэш и по факту является своего рода RAM-драйвом. Если тестовый пакет данных за пределы кэша не выйдет, то все будет примерно как выше справа, но если выйдет, то показатели устремятся к левому скриншоту. В конкретном случае у меня 4 ГБ из ОЗУ выделено под кэш накопителей, а тестовый образец, как видно – всего 2 гигабайта. Такой выбор был сделан сознательно для иллюстрации ситуации. Чтобы понять, как все будет выглядеть на практике, приведем скриншот с тестовым образцом заведомо более кэша — 8 гигабайт. Замер, опять же, не лабораторный, а чисто индикаторный (точное исследование скоростей в данном материале как задача не ставится, да и сами скорости в этом случае будут сильно зависеть от конкретного железа, например поколения DDR), но по нему видно, что вклад кэша в чтение за его пределами есть, но представляет он собой чисто среднее измерений по всему тестовому заданию. А вот запись такая красивая, т.к. утилита сначала создает тестовый образец и пишет его на накопитель, т.е. к части теста «запись» он, тестовый образец, уже был на целевом накопителе почти целиком заранее, поэтому и цифры такие.

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

Как бы там ни было, но все это очень позитивно сказывается на пользовательском опыте и отзывчивости системы в целом. Т.е. вполне реально оставить системным даже жесткий диск при наличии хотя бы 16 гигабайтного твердотельного накопителя под кэш, причем совершенно любого, т.к. если у вас системным — SSD, а под файлы или игры все еще жесткий диск, то можно на системном накопителе выделить область для кеширования HDD и таким образом закэшировать его. Это удобно для игр, т.к. в кэше будет храниться текущая игра, а когда пользователь начнет играть в другую, то она заместит в кэше старую. Если же кэша будет достаточно, то там будут задублировано все, что физически поместится, ведь как видно из схемы вверху все данные по умолчанию будут проходить кэширование. Единственным нюансом будет то, что первичное чтение некоторых данных будет происходить с медленного жесткого диска. Но, как мы увидели выше, их немного в типичном пользовательском сценарии. Кэшируется даже файл подкачки Windows, он же «своп».

Кстати кэширующим накопителем PrimoCache позволяет установить и Optane, т.к. за пределами своей экосистемы он видится как обычный NVMe-накопитель в системе. Т.е. может быть назначен кэширующим со всеми «плюшками» его скорости. Intel расщедрилась и, в отличии от прошлых решений, позволила пользователю вкусить скорости Optane таким пробником, а могли бы и не оставить такой форточки.

Важный момент — чтение из кэша идет уже на стадии загрузки ОС, так что загрузка частично проходит из быстрого твердотельного накопителя даже в случае с системным SSD. Т.е., например, Optane можно ускорять даже Samsung 970 Pro в сценарии работы с мелкими файлами.

И напоследок подчеркну — никто не заставляет иметь сегодня системным жесткий диск. Но даже если он не системный, а просто есть, то его имеет смысл кэшировать и тогда на него вполне можно будет опереться в случае объемных данных для работы или игр и не считать совсем уж рудиментом в системе. Причем закэшировать можно как частью системного SSD, так и любым сторонним, установленным специально для этой цели — благо цены позволяют.

Все это приведено в строго исследовательских целях повышения отдачи от имеющегося железа. И было бы просто замечательно, если бы что-то хотя бы отдаленно подобное предлагалось как часть настроек ОС. Шаг в эту сторону сделали Samsung и Crucial, but more is needed…

Какие главные выводы из прочитанного:

  • Кэширование — актуальный процесс, встречающийся повсеместно: от процессора до самого медленного накопителя. Кэшируют все, всё и везде. Кто не кэширует — тот обманывает.
  • В современных условиях больших объемов доступной оперативной памяти и дешевых SSD можно и нужно организовывать кэширование любыми доступными средствами. Даже если у вас системным диском крутой Samsung 970 Pro и жесткий диск под хранилище — имеет смысл выделить несколько гигабайт твердотельного диска под кэш HDD. Или даже отдельный самый дешевый SSD для этих целей. Вряд ли у кого-то будет активных данных больше, чем на 100–200 гигабайт разом. А самый дешевый твердотельный диск сегодня стоит недорого и до конца года, видимо, будет дешеветь. Ну и сам 970 Pro вполне возможно закешировать чем-то более быстрым типа Optane и тогда приход позитива от обладания крутыми «железками» будет трансформирован в реальное повышение скорости работы с мелочью даже на топовых из адекватных по цене накопителях.
  • Совершенно непонятно, почему подходы PrimoCache или аналогичные не организованы хотя бы базово в части управления в Windows? Конечно, там есть базовое кэширование, но эффективность его работы разительно отличается от предлагаемого сторонним ПО. Да и логику работы настраивать никак не предлагается.
  • Аппаратные гибриды в случае открытой архитектуры и п.2 банально нужны еще меньше, чем в период их расцвета, т.е. чуть менее чем никак, т.к. все тематические задачи кэширования совершенно реально организовать прикладным ПО на уровне драйверов. Разве что какие-то ну уж очень узкоспециализированные «железки» под совсем нетипичные задачи могут быть нужны. Мы сейчас в основном о Windows, но в других ОС все это тоже давно присутствует в том или ином виде.
  • В Enterprise все уже давно реализовано.

Может я это все придумал, и концепция нежизнеспособна?

Может это самообман и CrystalDiskmark неадекватен? Может это вообще никому не нужно при текущих ценах на SSD и завтра все забудут о жестких дисках? Но вспомним Блока:

Умрешь — начнешь опять сначала
И повторится все, как встарь:
Ночь, ледяная рябь канала,
Аптека, улица, фонарь.

К чему Блок? А вот к чему — Intel совсем недавно выпустил в продажу… гибрид! Внезапненько так. h20 называется. Коротко об изделии на слайде:

Если кто не в курсе — это аппаратная склейка из специфической QLC-памяти, закешированной молниеносным Optane, на одном NVMe-накопителе. Помните же — QLC тормозная на запись и это надо как-то закостыливать. «Оптаном», например.

Ничего не напоминает? Не новые ли это технологичные проприетарные грабли, на которые уже наступали? Не похоже ли это на гибриды, которые мы уже отвидели, но на новом уровне? Почему вообще без DRAM-буфера? Не выделит ли комплектное ПО еще и кэш в ОЗУ перед Optane? Почему работает только со специфическим драйвером, на избранных системах, а не «из коробки» в любых?

Обратите внимание на соотношение «Оптана» и QLC в растворе: 16+256, 32+512, 32+1024. Т.е. в Intel посчитали, что 16 гигабайт кэша на четверть терабайта накопителя достаточно. Это сильно похоже на наш сценарий в PrimoCache, но я-то 16 гигабайтный SSD за копейки для теста брал из бомжатских соображений, а Intel что — боится итогового ценника, если цифры осовременить?

Занимательно, что в товарном образце, в отличие от маркетингового мусора выше, DRAM таки просматривается вполне определенно.

«Без одежды» выглядит так. Раздевали в Storagereview.

Неужели опомнились в последний момент? Или это был маневр по обману конкурентов отсутствием чипа буфера на ранних стадиях? Или без DRAM рулить адресацией в таких сочленениях тяжеловато?

Кстати, вполне вероятно, что конкуренты ответят лошадиными объемами DRAM-буферов в своих решениях на OLC, т.к. QLC уже более-менее оформлены в изделиях, а Optane им никто не продаст. Напомним, что все это происходит на падении рынка полупроводников и перед открытием китайскими товарищами новых мощностей.

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

В прошлый раз мы писали о пересекающихся гарантия SSD и НЖМД. Сделай Microsoft настраиваемое кэширование, то их мож(д)но было бы продавать kit-ами, но это уже фантазии и без допинга особого рода нам не попасть в фазу креативного мЫшления маркетологов.

По сути все вышеописанное не столько конкурирующие технологи, сколько взаимодополняющие, как видим. Далеко не все ресурсы традиционных технологий в полной мере освоены. Более широкий выбор позволяет более гибко подходить к конфигурированию под конкретные задачи и самые интересные решения, в т.ч. программного плана, надеюсь, еще впереди.

Титры

Спасибо дочитавшим до конца более 90000 знаков с пробелами. Теперь вы знаете больше. Свои отзывы и предложения прошу оставлять в комментариях. Возможно, я что-то не осветил или кто-то с чем-то не согласен, и мы вместе повысим образовательный уровень наш и тех, кто эту статью найдет в поиске в будущем.

P.S. В части более бытового использования рассмотренной технологической концепции заметим, что в вашем домашнем обратноосмотическом фильтре воды низкая производительность фильтрующей мембраны… закэширована накопительным баком.

Пока longread готовился к публикации, благая весть поступила от Intel в виде анонса следующего этапа продвижения кэширющих Optane — модулей М15 под PCI-E 4.0. Максимальный объем теперь составляет 64 гигабайта, что уже ближе к реальности. Но самое главное — обещают рост скорости по мелкоблочке раза в два! Т.е. мегабайт до 500–600 в секунду. Это будет очень интересно не только протестировать, но и просто  установить систему и узреть чистое сияние прогресса. Важно при этом другое — о железных изменения в части контроллера или самой памяти не сообщается, а просто за счет PCI-E 4.0 скорость мелкоблочки так возрасти не могла, разве что из-за распараллеливания нагрузки. Т.е. самое интересное по теме у нас впереди и оно уже становится более-менее доступно в ритейле.

Особенности работы SSD — что такое SLC-кэш и как он влияет на скорость | SSD-накопители | Блог

Ты купил современный SSD и довольный устанавливаешь его в свой ПК. Сразу же, на высокой скорости, начинаешь переносить на него данные с других накопителей. И вдруг в какой-то момент скорость записи на SSD падает в несколько раз. Что произошло? Почему падает скорость записи? Все дело в SLC-кэше.

Сегодня существуют твердотельные накопители на четырех типах памяти:

  1. SLC (Single Level Cell) — один бит на ячейку памяти. Самый первый тип памяти, используемый в SSD. SLC — самый быстрый, самый долговечный тип энергонезависимой NAND памяти. За счет того, что в ячейке хранится всего 1 бит данных, запись в ячейку происходит очень быстро. Ресурс жизни ячейки SLC — примерно 100 000 циклов перезаписи. Из-за высокой стоимости производства SSD накопители на основе SLC уже не встретить в продаже. Тем более SLC накопители были только с интерфейсом SATA и небольшого объема.
  2. MLC (Multi Level Cell) — несколько бит на ячейку памяти. По идее, MLC можно назвать любую память, которая хранит больше одного бита. Но обычно под MLC памятью подразумевают ячейки, которые хранят четко два бита данных. Хотя. По сравнению с SLC, доступ происходит медленнее, и в процессе работы ячейки изнашиваются быстрее. Ресурс жизни ячейки MLC — примерно 5000 циклов перезаписи. Именно с появлением накопителей на MLC чипах памяти, SSD стали доступны простым пользователям. Сегодня SSD накопителей, построенных на MLC чипах, почти не осталось из-за высокой цены, которая не может конкурировать с TLC накопителями.
    Samsung — единственная компания, которая продолжает называть всю свою память MLC, лишь добавляя количество бит на ячейку. И часто это вводит покупателей в заблуждение. Например, 3-bit MLC, хотя по факту это TLC.
  3. TLC (Triple Level Cell) — три бита на ячейку памяти. Втрое увеличенная плотность ячейки по сравнению с SLC позволила вмещать еще больше данных, но при этом значительно снизила скорость записи в такую ячейку. Из-за большей плотности данных значительно уменьшился и ресурс циклов записи на ячейку — примерно 1000–3000. На момент написания статьи это самый распространенный типа NAND памяти в SSD-накопителях.
  4. QLC (Quad Level Cell) — четыре бита на ячейку памяти. Продолжение увеличения плотности записи в ячейку NAND памяти позволило произвести новый тип памяти. Но при этом скорость записи в ячейку QLC стала самой низкой среди всех типов NAND памяти. Следом уменьшился и ресурс циклов перезаписи ячейки, QLC которой меньше 1000.

Сегодня самыми распространенным типом памяти в твердотельных накопителях является усовершенствованный 3D NAND TLC. Невысокая цена производства, высокая плотность данных, современные контроллеры и использование технологий SLC-кэширования позволили производителям значительно повысить скорость и ресурс TLC накопителей. Но все ли так хорошо, как кажется на первый взгляд?

Что такое SLC-кэш, и как он реализован

Чтение и запись данных на SSD-накопитель происходит по битам. Запись в ячейки SLC памяти самая быстрая, так как одна ячейка содержит лишь один бит. С TLC-накопителями сложнее. Чтобы записать одну ячейку, необходимо несколько раз считать с нее данные, для того чтобы далее их правильно записать. А дополнительные операции чтения с ячейкой значительно увеличивают время.

И для того, чтобы повысить скорость записи в TLC ячейки, производители прибегли к простой хитрости. В начале записи контроллер сохраняет данные по одному биту на ячейку, что называется режимом SLC. Это значительно увеличивает скорость записи. Продолжая запись, контроллер в фоновом режим уплотняет записанные данные в ячейку, преобразуя ее в трехбитную. Но такая быстрая запись не может быть постоянной. Объем накопителя все же рассчитывается из трех бит на ячейку. Следовательно, после заполнения SLC-кэша, скорость падает и достаточно сильно. SLC-кэш бывает реализован разными способами:

  1. Ограниченная выделенная область SSD-диска.
    На SSD с контроллером Phison PS3111-S11 выделяется небольшой объем диска (SLC-кэш) — как правило, это 4–6 ГБ, куда данные пишутся с максимальной скоростью. Если вы решите разом записать данные, объем которых больше, чем эта область, то вы увидите сильное падение скорости после переполнения SLC-кэша. Пример ограниченного SLC-кэша на Patriot P210 256GB (P210S256G25).

  2. Часть свободного объема накопителя.
    В таком режиме накопитель переводит все доступные ячейки памяти в однобитовый режим (SLC-кэш) и записывает данные до тех пор, пока каждая ячейка не будет записана. Так как ячейка TLC NAND памяти имеет трехбитовый режим, то максимальная скорость в режиме SLC-кэша будет на протяжении одной третьей от свободного объема накопителя. После того, как накопитель заполнил все ячейки, происходит перевод ячеек в TLC (трехбитовый) режим. За счет перевода ячеек в медленный режим и дополнительного контроля записи, скорость сильно снижается. Но, после записи в SLC, накопитель может перейти в MLC режим и только после этого — в TLC. Это можно увидеть по нескольким ступеням снижения скорости. Пример такого SLC-кэша на Goodram CL100 gen.2 120GB (SSDPR-CL100-120-G2)

    Следовательно, на QLC накопителях в таком режиме максимальная скорость будет на четверть свободного объема накопителя или меньше — все зависит от реализации SLC-кэша. Пример SLC-кэша на Smartbuy Nitro 480GB (SBSSD-480GQ-MX902-25S3). Объем SLC-кэша на QLC накопителе составил всего 23 % от общего свободного объема SSD.

Большинство пользователей не столкнутся с заполнением SLC-кэша при работе с SSD накопителем и вот почему:

  • Для того чтобы заполнить SLC-кэш накопителя, необходимо записывать на него большой объем данных с другого SSD-накопителя. А пока у большинства пользователей в ПК используется всего один SSD и запись больших объемов данных бывает редко.
  • При скачивании данных из интернета, пропускная способность канала 100 Мбит не позволит SLC-кэшу переполнится.
  • При установке и распаковке игр на накопитель, больше задействован процессор и оперативная память, запись на накопитель происходит нелинейно.
  • При скачивании данных с жесткого диска, скорость которых меньше SSD в несколько раз, SLC-кэш в большинстве случаев не успеет заполниться, чтобы снизить скорость записи
  • Просмотр видео высокой четкости тоже никак не скажется на скорости вашего накопителя, несмотря на кэширование браузера.

Как определить объем 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-кэша?

Ответить на это вопрос однозначно для всех накопителей не получится. И тому есть несколько причин:

  • Контроллер SSD-накопителя. Чем производительнее контроллер, тем выше будет скорость как до заполнения SLC-кэша, так и после.
  • Наличие DRAM-буфера на накопителе. В этом буфере находится таблица с адресами данных в ячейках NAND памяти SSD. А это позволяет не считывать данные лишний раз для проверки. Поэтому при наличии DRAM-буфера скорости накопителя выше как до заполнения SLC-кэша, так и после.
  • Тип NAND памяти, структура ячеек и количество слоев также влияют на скорость.
  • Файлы разного объема и их количество влияют на скорость записи, а следовательно — скорость заполнения SLC-кэша. Копируя на SSD много мелких файлов, скорость записи будет низкая, и заполняться SLC-кэш будет медленнее.
  • Перегрев и последующий троттлинг контроллера может снизить скорость NVMe 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-кэш так и останется чем-то неизвестным.

Storage Executive — Ответы на часто задаваемые вопросы

Следующая статья содержит ответы на некоторые часто задаваемые вопросы о Crucial® Storage Executive, его общем использовании и некоторых его специфических функциях. Дополнительную основную информацию можно найти в нашей статье Обзор Crucial Storage Executive. 

Нет, в настоящее время поддерживается только Windows®. При этом некоторые функции Storage Executive могут поддерживать другие сторонние инструменты или инструменты операционной системы.

Технология самоконтроля и самоанализа (Self-Monitoring, Analysis and Reporting). Это данные накопителя, касающиеся производительности и работоспособности. Эти значения хранятся в контроллере SSD-накопителя, они могут быть полезны для определения причины неисправностей системы или SSD-накопителя.

Momentum Cache — это функция Storage Executive, которая позволяет вам использовать некоторый объем DRAM для кэширования команд записи в SSD Crucial, если SSD-накопитель установлен в качестве загрузочного диска.

Когда вы включите эту функцию, Storage Executive выделит часть DRAM для Momentum Cache. Всякий раз, когда ОС требуется записать данные на загрузочный диск (SSD-накопитель Crucial), данные вместо этого фактически записываются в эту часть DRAM (что гораздо быстрее). Затем данные «сбрасываются» в SSD для постоянного хранения.

Мой SSD-накопитель сконфигурирован так, что на нем есть и раздел ОС, и раздел хранилища. Увеличит ли Momentum Cache производительность в обоих разделах?

Да, Momentum Cache активируется на уровне диска, что обеспечивает дополнительный рост производительности для всех разделов, расположенных на загрузочном диске ОС Windows.

Momentum Cache использует до 25 % доступной системной памяти, но не более 4 ГБ.

Storage Executive всегда выдает это сообщение при использовании на ПК. Это происходит потому, что программа ищет батарею для ноутбука и, если не может ее найти (что логично для любого ПК), выдает такое сообщение.

Внезапная потеря питания во время использования Momentum Cache несет в себе определенный риск потери данных и повреждения файлов. Для того чтобы предотвратить это, в ноутбуке Momentum Cache автоматически отключается, когда уровень заряда батареи ноутбука падает до 25 %. В настольном компьютере аналогичная функция отсутствует, поэтому рекомендуется использовать источник бесперебойного питания, когда вы используете функцию Momentum Cache.

Я добавил(а) второй SSD-накопитель Crucial в мою систему для расширения пространства хранилища. Могу ли я также включить Momentum Cache на этом SSD-накопителе?

Активация Momentum Cache в настоящее время поддерживается только на диске ОС.

Momentum Cache влияет только на операции записи, а не на операции чтения. Momentum Cache не должен влиять на скорость чтения. То же относится и к другим системным ресурсам, таким как доступная память и скорость ЦП (которая часто изменяется динамически), режимы энергосбережения и драйвер SATA. Влияние Momentum Cache может отображаться не во всех тестах. Momentum Cache может не оказывать заметного влияния на системы, в ОЗУ которых доступно менее 6 ГБ. Выполнение программного шифрования, например с помощью BitLocker в Windows® 7, заметно снизит влияние Momentum Cache на производительность. Наконец, SSD-накопители c большей емкостью записывают быстрее, одновременно обращаясь к большему количеству элементов SSD, что приводит к сокращению улучшений, наблюдаемых функцией кэширования.

В моей системе установлено два SSD-накопителя Crucial в массиве RAID. Могу ли я включить Momentum Cache?

В настоящее время Momentum Cache не поддерживается на конфигурациях оборудования с RAID. На странице Momentum Cache в Storage Executive появится сообщение «Неподдерживаемый диск» с примечанием о том, что вы можете включить Momentum Cache только на загрузочном устройстве, поскольку это единственный поддерживаемый диск.

Увеличение резервной области твердотельного накопителя (Over Provisioning (OP)) — это функция Storage Executive, которая позволяет выделить на SSD дополнительное пространство для использования контроллером.

Предоставление дополнительного пространства для контроллера означает, что такие функции, как выравнивание нагрузки и чистка памяти, могут работать более плавно, и что есть меньше шансов, что при большой нагрузке SSD замедлится.

Твердотельные накопители Crucial уже имеют функцию увеличения резервных областей твердотельного накопителя и предназначены для идеальной работы в качестве потребительских накопителей без необходимости выделять для этого дополнительное пространство. Однако в некоторых средах с более интенсивным чтением/записью увеличение резервных областей позволит SSD «»дышать»» свободнее и обеспечит его бесперебойную работу при тяжелых нагрузках.

Когда вы выделяете дополнительное пространство для увеличения резервных областей, часть диска разделяется, и контроллер может использовать это дополнительное пространство. После этого вы, скорее всего, увидите, что Windows соответствует размеру вашего диска C и сократился на объем, выделенный для увеличения резервных областей.

Эта операция приводит к полному удалению всех данных с диска. Обратите внимание, что она работает только на дисках, не использующих аппаратное шифрование. В случае такого шифрования (TCG включено/защита паролем) для удаления данных вам, скорее всего, потребуется использовать функцию PSID Revert.

Операция PSID Revert приводит к удалению всех данных с зашифрованного диска (со включенным TCG). Ее также можно использовать для возвращения диска в заводское состояние в том случае, если диск зашифрован, а код аутентификации утерян.

Код PSID находится на этикетке SSD.

Оптимизация вашего NAS с помощью SSD-кеша

Устранение узких мест ввода / вывода

HDD против SSD: почему разница имеет значение

Идет борьба между жесткими дисками и твердотельными дисками, у каждого из которых есть свои плюсы и минусы. Жесткий диск состоит из привода, рычага чтения / записи, шпинделя и пластин, на которых хранятся данные. При большом трафике запросов чтения / записи (особенно для большого количества файлов небольшого размера) пластина вращается, а головка чтения / записи продолжает перемещаться для поиска данных, разбросанных по диску несмежным образом.Вот тут и начинается задержка. Однако SDD не имеет движущихся частей и использует флэш-память для хранения данных, которая потребляет меньше энергии, почти не вызывает шума, вибрации и нагрева и работает на более высоких скоростях по сравнению с традиционным жестким диском.

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

При запуске приложений, требующих более высоких случайных операций ввода-вывода в секунду или когда большие объемы данных записываются в несмежные блоки (например, базы данных OLTP и почтовые службы), создание системы, полностью состоящей из SSD, может прожечь дыру в вашем кармане. Но не бойтесь, выход есть — SSD-кеш. Вы можете подключить кэш SSD к отдельному тому хранилища или iSCSI LUN на уровне блоков, чтобы создать буфер чтения / записи, увеличивая производительность произвольного доступа. Обратите внимание, что, поскольку для больших операций последовательного чтения / записи, таких как потоковая передача видео высокой четкости, отсутствуют шаблоны повторного чтения, такие шаблоны рабочих нагрузок не могут получить большую пользу от кэширования SSD.

Кэш SSD можно разделить на следующие два режима:

  1. Кэш только для чтения : Когда вы устанавливаете твердотельный накопитель в качестве кэша только для чтения, в кэше сохраняются только часто используемые данные для ускорения произвольной скорости чтения. Поскольку он не участвует в записи данных, данные останутся в целости и сохранности даже при выходе из строя SSD.
  2. Кэш чтения-записи : По сравнению с кешем только для чтения, кэш чтения-записи синхронно записывает данные на SSD.Чтобы обеспечить безопасность данных, вам понадобится как минимум два SSD для настройки RAID 1, чтобы обеспечить отказоустойчивость одного SSD. Но все же существует риск потери данных, если количество изношенных твердотельных накопителей превышает отказоустойчивость в конфигурации RAID.
Правильный выбор

Чем чаще SSD записывает данные, тем короче срок его службы. Поиск подходящего твердотельного накопителя, который соответствует вашим требованиям к вводу-выводу, имеет первостепенное значение, поскольку вы не хотите, чтобы ваш кэш-диск изнашивался слишком быстро. Выбирая правильные твердотельные накопители для настройки кеш-памяти SSD для вашего NAS, вы должны оценить долговечность SSD, внимательно изучив две спецификации: TBW (количество записанных терабайт) и DWPD (число операций записи на диск в день).TBW означает совокупный объем данных, который может быть записан на SSD за весь срок его службы, а DWPD означает, сколько раз вы можете перезаписывать весь SSD каждый день в течение гарантийного периода. Если вы знаете емкость накопителя и его гарантийный срок, вы можете просто преобразовать TBW в DWPD или наоборот с помощью следующего уравнения:

  • TBW = DWPD X 365 X Гарантия (год) X Емкость (ТБ)
  • DWPD = TBW / (365 X Гарантия (год) X Емкость (TB))

Допустим, у вашего SSD 2 ТБ с 5-летней гарантией.Если DWPD имеет рейтинг 1, это означает, что вы можете ежедневно записывать в него 2 ТБ данных в течение следующих 5 лет. Исходя из приведенного выше уравнения, TBW будет составлять 1 * 365 * 5 * 2 = 3650 ТБ. Вам лучше заменить его, пока он не достиг 3650 ТБ. Следите за ежедневным использованием NAS, чтобы оценить объем записываемых данных и посмотреть, соответствует ли рейтинг TBW вашим потребностям.

Если ваше повседневное использование NAS связано с приложениями, интенсивно использующими запись, рекомендуется использовать корпоративные твердотельные накопители, чтобы убедиться, что они могут выдерживать интенсивную запись.У потребительских твердотельных накопителей DWPD обычно ниже 1. Его можно использовать в качестве загрузочного диска, но он не выдерживает постоянных рабочих нагрузок чтения / записи. Напротив, большинство корпоративных твердотельных накопителей имеют более высокий DWPD в диапазоне от 1 до 10 и, следовательно, обеспечивают лучшую долговечность.

Старт по правильному пути

Помимо выносливости SSD, вы также должны учитывать требования к памяти для кэширования SSD. Поскольку для кэша SSD требуется определенный объем системной памяти в зависимости от размера кеша, вам может потребоваться обновить память, если вы хотите смонтировать кеш SSD большего размера.Для поддержания стабильности системы только 1/4 предустановленной системной памяти выделяется для кэширования SSD.

Поскольку твердотельный накопитель емкостью 1 ГБ занимает примерно 416 КБ системной памяти (включая расширяемую память), для кэша только для чтения 2 x 128 ГБ SSD (всего 256 ГБ) требуется не менее 104 МБ памяти, а для кэша чтения-записи 2 x 128 ГБ SSD (всего 128 ГБ) потребляет 52 МБ памяти. Следует отметить, что нехватка памяти ограничивает размер кэша SSD.

Оптимизация эффективности хранения

Если в вашем NAS есть слот PCIe, вы можете рассмотреть возможность установки двойного M.2, которая поддерживает твердотельные накопители SATA и NVMe для повышения производительности кэш-памяти. С Synology M2D18 вы можете не только зарезервировать больше отсеков для накопителей для хранения данных, но и получить гибкие варианты SSD, поскольку он поддерживает модули M.2 в формате 2280/2260/2242.

При рассмотрении вопроса о добавлении кэша SSD для оптимизации производительности, помимо обращения к списку совместимости для определения совместимых твердотельных накопителей, мы также настоятельно рекомендуем вам просмотреть рейтинги TBW и DWPD в спецификациях дисков, чтобы убедиться, что долговечность SSD соответствует вашим требованиям к рабочей нагрузке.

Посмотрите, какие модели Synology NAS поддерживают кэш SSD, и поделитесь с нами списком желаний вашего NAS в Сообществе.

SSD-кэш | Увеличьте скорость ввода-вывода хранилища

SSD Cache | Увеличьте скорость ввода-вывода хранилища | QNAP

Присоединяйтесь к программе бета-тестирования QuTS hero h5.0 прямо сейчас и оцените ее интеллектуальные возможности! »Go

Добавление кэш-памяти SSD к вашему QNAP NAS и выбор правильного режима кеширования в соответствии с вашими требованиями может улучшить общую производительность системы, максимально увеличить пространство для хранения и минимизировать связанные с этим расходы.

Быстрый NAS с поддержкой SSD в пределах вашей досягаемости

SSD полностью меняет правила игры по сравнению с традиционными жесткими дисками. Поскольку стоимость твердотельных накопителей на 1 ГБ снижается, а емкость хранилища увеличивается, сейчас самое лучшее время для создания гибридной структуры хранения SSD / жестких дисков, чтобы максимально использовать преимущества оптимизированной эффективности данных и затрат на хранение.

Что такое ускорение кеш-памяти SSD?

Кэш SSD — это способ получить более быстрое хранилище, уменьшить задержку и улучшить общую производительность NAS и скорость доступа за счет хранения часто используемых данных на SSD.Это очень полезно для приложений, требующих IOPS, таких как базы данных (обработка онлайн-транзакций, почтовые серверы), виртуальные машины и инфраструктура виртуальных рабочих столов (VDI).

Преимущества SSD

перед традиционными жесткими дисками

  • Более высокая производительность операций ввода-вывода в секунду и время отклика
  • Нет головок диска — меньше вероятность отказа диска
  • Физически меньше и тише
  • Пониженное энергопотребление

Герой QuTS или QTS?


Сделайте свой выбор на основании этой информации.
Герой QuTS QTS
Файловая система ZFS доб.4
Кэш SSD Кэш чтения Кэш чтения / записи
Кэш чтения
Кэш записи
Встроенное сжатие Да
(сжатие LZ4, идеально для файлов RAW и файлов документов)
Встроенная дедупликация Да
(требуется как минимум 16 ГБ ОЗУ)
HBS с QuDedup для удаленного резервного копирования Есть Есть
Защита от сбоя питания (Аппаратная) Источник бесперебойного питания (ИБП) Источник бесперебойного питания (ИБП)
Защита от сбоев питания (программное обеспечение) ЗИЛ
Copy-On-Write
(Обслуживание продолжается после восстановления питания)

(Риск повреждения на уровне файловой системы из-за отключения питания и простоя системы, необходимого для «Проверить файловую систему»)
Управление разрешениями Rich ACL (14 типов) ACL POSIX (3 типа) + определенные специальные разрешения
Увеличение мощности Увеличьте емкость RAID
Замените диски большей емкости
Присоедините полки расширения / JBOD
Добавить диск в группу RAID
Увеличить емкость RAID
Изменить диски большей емкости
Присоединить полки расширения / JBOD
Безопасность данных Лучшее
(Самовосстановление и копирование при записи)
Стандартный
Общая производительность Требуется более производительный ЦП и больше памяти Лучше
Рекомендация Конфигурация SSD для приложений редактирования видео Используйте пулы SSD

Примечание. Установите размер блока 128 КБ при создании папок / LUN

Редактирование (из исходных файлов / файлов RAW): использовать пулы SSD.
Пост-продакшн: включить кэш чтения / записи

Примечание. Установите размер блока 32 КБ или 64 КБ при создании томов и выберите «Все операции ввода-вывода» для режима кэширования.

NAS

QTS поддерживает технологию Qtier для максимального использования преимуществ SSD

Технология

Qtier автоматически перемещает данные между твердотельными накопителями и жесткими дисками в зависимости от их частоты доступа, обеспечивая приоритет доступа к часто используемым «горячим» данным. Qtier IO-осведомленность резервирует пространство, подобное кешу, для повышения производительности IOPS, когда требуются временные приложения с высоким числом случайных операций чтения / записи.

Подробнее: QNAP NAS поддерживает кэширование SSD и автоматическое многоуровневое хранение

* Qtier поддерживается только NAS на базе x86 (Intel или AMD) и 64-битным NAS на базе ARM с 2 ГБ ОЗУ и QTS 4.4.1 (или новее).

Объем кеш-памяти QNAP NAS и требования к ОЗУ

QTS NAS QuTS Hero NAS
Емкость кэш-памяти SSD Требования к ОЗУ
512 ГБ ≧ 1 ГБ ≧ 16 ГБ
1 ТБ ≧ 4 ГБ ≧ 32 ГБ
2 ТБ ≧ 8 ГБ ≧ 64 ГБ
4 ТБ ≧ 16 ГБ ≧ 128 ГБ
16 ТБ ≧ 512 ГБ
30 ТБ ≧ 1 ТБ
120 ТБ ≧ 4 ТБ

* Объем кэша SSD зависит от размера ОЗУ

Проверить совместимость SSD-кэша

* В некоторых моделях есть специальные лотки, оптимизированные для кэширования SSD.Отмеченные лотки SSD оптимизированы для кэширования SSD.

* Примечание. Для моделей NAS с процессором ARM максимальный размер кэша SSD составляет 1 ТБ. В противном случае максимальный размер кэша SSD для QTS составляет 4 ТБ.

* Если вы собираетесь использовать SSD в качестве места для хранения, а не для кэширования, то SSD можно установить в любой лоток.

Добавить кэш SSD M.2 с картами расширения QM2 PCIe

Инновационные карты PCIe серии QM2 от QNAP позволяют использовать M.2 SSD * для установки в NAS для кэширования SSD или пулов кэширования. Поскольку QM2 использует PCIe, они не занимают 3,5-дюймовые отсеки для дисков, что позволяет максимально увеличить как емкость хранилища, так и производительность.

Подробнее: карты QM2 PCIe

* SSD M.2 продаются отдельно

SSD Cache: что это такое и стоит ли?

Сегодня мы рассмотрим еще один часто сбивающий с толку термин в области вычислений, который обещает повысить производительность за счет разумного использования небольшого твердотельного накопителя в качестве кэша.Рука помощи или выгодное вложение? Мы углубились в эту тему, чтобы пролить свет на все, что нужно знать о кэшировании SSD.

Что такое кэширование SSD?

SSD-кэширование, или, как его правильно называют, SSD-кэширование, — это механизм управления данными, разработанный Intel в начале 2010-х годов, который использует небольшой жесткий диск в качестве кэша для обычно более крупного жесткого диска.

Кэш — это аппаратная или программная память, предназначенная для хранения часто используемых данных для легкого и быстрого доступа.В случае процессоров кеш-память состоит из флэш-памяти, доступ к которой возможен быстрее, чем к стандартной системной ОЗУ, в то время как кеш-память браузера хранит компоненты часто посещаемых сайтов, чтобы к ним можно было получить доступ. загружаются быстрее, избавляя от необходимости извлекать интернет-данные с хост-сервера.

Таким образом, кэш-память позволяет системе получать доступ к данным намного быстрее, чем если бы они были извлечены и прочитаны из места последнего упокоения на жестком диске, улучшая производительность задач, зависящих от памяти.

Для кэширования SSD основная концепция заключается в предоставлении гораздо более быстрого и более отзывчивого SSD в качестве временного хранилища для часто запрашиваемых данных, таких как базовые операционные сценарии операционной системы и файлы, которые хранятся. на более медленном обычном жестком диске.

Скорость SSD примерно в десять раз выше, чем у жесткого диска для большинства задач, при этом SSD по своей сути лучше работает при чтении небольших дисков с произвольным доступом, которые определяют большую часть повседневных задач на компьютере.‘Операционная система, такая как Windows.

В реальном выражении, для кэширования SSD потребуется SSD небольшого размера, скажем 40 ГБ, в тандеме с более крупным традиционным жестким диском, скажем, с объемом памяти 1 ТБ.

Совместимость с кэшированием SSD

Intel изобрела технологию кэширования SSD, технологию Smart Response (SRT), и патентованная версия этого механизма доступна только на готовых материнских платах SRT с наборами микросхем Intel.

Что еще хуже, Intel не использует технологию во всех своих наборах микросхем, что ограничивает аппаратные конфигурации, которые пользователь может ожидать при сохранении возможности кэширования SSD.

Системы

с наборами микросхем AMD требуют, чтобы пользователь использовал стороннее программное обеспечение для эмуляции кэширования SSD, поскольку AMD еще не разработала и не интегрировала конкурирующие технологии в свои наборы микросхем.

К счастью, существует множество программных решений, таких как FancyCache и PrimoCache. Однако они заведомо ненадежны и создают множество проблем.

Ограничения кэширования SSD Кэширование SSD

дает ощутимые преимущества только тогда, когда система находится в состоянии, которое мы называем «чистым», например, при запуске ПК после его выключения, перезапуске Windows или выполнении начальной операции.приложение после перезапуска или выключения.

Существует иерархия памяти, которая идет от кеш-памяти ЦП до ОЗУ, кеш-памяти SSD и затем на жесткий диск. Перезагрузка очищает кэш ЦП и ОЗУ, делая кеш SSD начальным местом для данных.

Причина этого заключается в том, что во всех других случаях высока вероятность того, что важные и часто используемые данные уже хранятся в системной оперативной памяти, и поскольку оперативная память невероятно быстрее, чем любое хранилище на жестком диске, будь то SSD или жесткий диск, кэширование SSD делает нет ничего, что могло бы улучшить скорость, поскольку данные уже доступны намного быстрее из ОЗУ.

Как видите, основное преимущество кэширования SSD наиболее очевидно при запуске Windows: операционная система находится в рабочем состоянии намного раньше, чем в кэшированной системе без SSD.

Точно так же запуск Steam и вашей любимой игры после перезапуска будет намного быстрее с кэшированием SSD.

Если вы работали без перезапуска в течение нескольких часов и открывали, а затем закрывали различные программы и решили открыть их снова, SSD не будет делать ничего для ускорения процесса.

Продолжая тему ограничивающих факторов, внутренняя работа SRT является тщательно охраняемым секретом, и Intel не предоставляет никаких подробностей о том, как технология проверяет, какие данные стоит кэшировать, хотя заметные тенденции предполагают, что существует установленный предел для размер данных, которые можно кэшировать, не более нескольких МБ.

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

Если вы запускаете множество приложений одновременно, преимущества будут очевидны, а если вы будете запускать одну и ту же программу изо дня в день при обработке файлов большого формата, преимущества будут незначительными.

Стоит ли кэширование SSD?

После того, как кэширование SSD запущено, оно само о себе позаботится практически без вмешательства пользователя. Преимущества, если таковые имеются, производятся пассивно, что делает решение беспроблемным.

Однако настройка кэширования даже с использованием набора микросхем Intel SRT — непростая задача, которая включает в себя использование правильных драйверов, правильную настройку BIOS и его запуск в качестве конфигурации RAID, установку Windows и драйверов технологии быстрого хранения, управление режимами и т. Д.

В конце концов, это гораздо более сложная задача, чем использование SSD большой емкости и простая установка Windows.

Исторически сложилось так, что кэширование SSD стоило намного меньше, чем установка SSD разумного размера, но по мере того, как технология становится все более распространенной, цена SSD, даже 100 ГБ или более, экспоненциально растет. со временем станет более доступным.

Таким образом, комбинация кэша и жесткого диска SSD заменяется более крупными и более экономичными SSD для размещения операционной системы, в то время как жесткий диск большего размера используется для хранения редко используемых носителей.

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

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

Заключение

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

Как использовать технологию кэширования SSD

Последнее обновление , автор: Aoife McCambridge .

В настоящее время вы можете использовать SSD в качестве кэша (макс. 64 ГБ), чтобы повысить скорость передачи данных обычного жесткого диска (Sata II или Sata III). Эта функция может повысить производительность дисков большой емкости. Мы проведем вас через все шаги в этой статье.

Как использовать технологию кэширования SSD

Некоторые предварительные условия перед началом:

SSD

Вам потребуется SSD с минимальной емкостью 64 ГБ (оптимальный размер).

Жесткий диск

Используйте диск большой емкости — 2 ТБ.

Материнская плата

Ваша материнская плата должна поддерживать технологию кэширования SSD (Asus, MSI, ASRock, Gigabyte).

Программное обеспечение

В зависимости от используемой материнской платы и SSD:
Intel Smart Response:

Dataplex:

ExpressCache:

Реализация

Подключите два жестких диска

  • Предупреждение: оба жестких диска должны быть подключены к одному контроллеру, например.g Marvel или Intel …

Настройка кэша

Параметр по умолчанию, названный «Расширенный», менее эффективен, но более безопасен, чем вариант «Максимальный» (риск потери данных). Драйвер Intel позволяет переключаться с одной конфигурации на другую в любой момент.

  • Минимальный кэш: 19 ГБ
  • Максимальный кэш: 64 ГБ

Если вы используете твердотельный накопитель емкостью более 64 ГБ, остальное доступное пространство будет потрачено впустую.

Производительность

Скорость передачи жесткого диска

  • Для жесткого диска емкостью 2 ТБ со скоростью 140 МБ / с кэширование SSD на контроллере Marvell достигнет 250 МБ / с.Зная, что только SSD по умолчанию имеет скорость 550 МБ / с.
  • Согласно тестам, похоже, что при работе с небольшими файлами кэш SSD особенно эффективен.

Что касается оставшегося места в SSD Cache

Мы замечаем более низкую скорость передачи:

Заключение

Преимущество

Оптимизация производительности диска хранения большой емкости.

Неудобства

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

Изображение: © 123RF.com

[решено] Solid State Caching / SSD Caching — Стоит ли? — Хранение данных

Мне интересно узнать ваше мнение и опыт?

Меня больше всего беспокоит следующее, но, пожалуйста, не стесняйтесь упоминать все, что я пропустил или упустил.

Какие плюсы и минусы. (Скорость — это профи, потенциальная меньшая продолжительность жизни — недостаток?)

С какими проблемами я могу столкнуться?

Можно ли это настроить в сочетании с конфигурацией RAID 1 (или другого RAID) в отношении жесткого диска?

Заранее спасибо и сохраните Spicy !

Кэширование твердого тела / SSD-кеширование — стоит ли оно того? Закрыто | 19 голосов от 16 пользователей

Будет работать с HDD RAID 1 Config (или другим RAID) 16% 3 Голоса Не будет работать с HDD RAID 1 Config (или другим RAID) 0% 0 голосов

Пользователи, проголосовавшие за этот вариант


Datil

OP

MCEStaff

Этот человек — проверенный профессионал.

подтвердите ваш аккаунт чтобы ИТ-специалисты увидели, что вы профессионал. 10 декабря 2016 г., 16:34 UTC

McMurray Computer Experts — поставщик ИТ-услуг.

Jaynewmz написал:

обычный диск в ОС (AKA C: Drive), НО он объединит все пространство для хранения вместе.

Таким образом, в основном у вас будет диск C: емкостью 1100 ГБ, который работает на скоростях SSD, но дискретно передает данные после

.

Неправильно.Вы не увидите объединенного пространства. Кеш будет «прозрачным». У вас будет 1000 ГБ полезного пространства. В остальном ваше описание примерно верно.

При кэше 100 ГБ простая математика будет заключаться в том, что 10% операций чтения будут попадать в кэш. На самом деле, вероятность успеха часто была бы намного выше, чем это, поэтому с таким большим кешем много, много операций чтения будет происходить из кеша, и большая часть операций записи должна быть ускорена кешем.

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

.

SSD-кэш (QCache 2.0)

Кэш SSD

— это вторичный кэш большой емкости, в котором используются корпоративные SSD-диски, расположенные между основным кешем памяти DRAM RAID-контроллера и жесткими дисками (HDD). Кэш чтения SSD расширяет емкость и функциональность существующей кэш-памяти RAID-контроллера за счет копирования часто используемых данных на SSD-диски, которые работают быстрее, чем жесткие диски, что повышает производительность всей системы.Однако буферы кэша записи SSD записывают операции ввода-вывода для повышения общего числа операций ввода-вывода в секунду. Благодаря этой технологии QCache 2.0 может улучшить производительность произвольного чтения до 92 раз и произвольной записи до 171 раз. SSD-накопители также предоставляют масштабируемый кэш гораздо большего размера, чем память. Кэш SSD — это лицензионная функция, доступная в серии JetStor X.

Загрузить официальный документ SSD Cache 2.0>

Как правило, кэш чтения SSD особенно эффективен, когда:

• Чтение гораздо более распространено, чем запись в производственной среде, обычно в работающих приложениях баз данных или веб-служб.

• Низкая скорость чтения с жесткого диска приводит к снижению производительности.

• Объем повторно используемых данных меньше, чем емкость кэша SSD.

Кэш чтения-записи SSD особенно эффективен, когда:

• Считывает и записывает смесь в производственной среде, что является обычным явлением для приложений файловых служб.

• Низкая скорость чтения и записи жесткого диска приводит к снижению производительности.

• То же, что и корпус кэш-памяти чтения SSD; размер повторно используемых данных меньше, чем емкость кэша SSD.

• Готов пойти на небольшой риск, чтобы увеличить производительность записи, потому что это буферизация кэша записи в пуле кэша SSD. Конечно, эти данные записи в кэш SSD можно использовать для следующего чтения.

Функция кеширования SSD требует системной памяти для хранения метаданных. Полезная емкость кэша SSD пропорциональна размеру системной памяти контроллера. Таблица представляет собой соотношение между системной памятью на контроллер и максимальной емкостью кэш-памяти SSD.

1 Имейте в виду, что для включения QCache требуется 8 ГБ памяти.

• QCache 2.0 поддерживает кэш чтения и записи, который составляет до четырех пулов кеш-памяти SSD на систему. Каждый пул кеш-памяти SSD может использоваться одним выделенным пулом хранения, а несколько его томов могут использоваться совместно для эффективного использования ресурсов.

• Пул кэша SSD сгруппирован для обеспечения емкости для использования кэша SSD в выделенном пуле хранения.

• Поддерживает кэш для чтения и записи, который составляет до четырех пулов кеш-памяти SSD на систему.

• Пул кэша чтения поддерживает добавление / удаление SSD для увеличения / уменьшения емкости кэша SSD.

• Пул кэша чтения-записи поддерживает добавление 2 SSD за раз для увеличения емкости кэша SSD

• Тома в пуле могут быть выбраны для включения / выключения функции кеширования SSD. Тома с включенным кешем SSD с горячими данными будут использовать емкость пула кэша SSD.

• В пуле можно включить до 32 томов кэш-памяти SSD.

QCache 2.0 поддерживает кэш чтения и записи, который составляет до четырех пулов кеш-памяти SSD на систему. Каждый пул кеш-памяти SSD может использоваться одним выделенным пулом хранения, а несколько его томов могут использоваться совместно для эффективного использования ресурсов.

• Технология SSD Read Cache использует NRAID +, который является параллельным NRAID без чередования.

• По сравнению с NRAID или RAID 0, NRAID + распределяет данные кэша по всем твердотельным накопителям.

• Эта технология NRAID + сочетается с преимуществами NRAID и имеет лучший случайный ввод / вывод, чем NRAID.Он также имеет то преимущество, что легко добавлять / удалять твердотельные накопители из пула кеш-памяти SSD для увеличения / уменьшения емкости.

QCache 2.0 поддерживает кэш чтения и записи, который составляет до четырех пулов кеш-памяти SSD на систему. Каждый пул кеш-памяти SSD может использоваться одним выделенным пулом хранения, а несколько его томов могут использоваться совместно для эффективного использования ресурсов.

• Технология SSD Read Cache использует NRAID +, который является параллельным NRAID без чередования.

• По сравнению с NRAID или RAID 0, NRAID + распределяет данные кэша по всем твердотельным накопителям.

• Эта технология NRAID + сочетается с преимуществами NRAID и имеет лучший случайный ввод / вывод, чем NRAID. Он также имеет то преимущество, что легко добавлять / удалять твердотельные накопители из пула кеш-памяти SSD для увеличения / уменьшения емкости.

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

Этот тест подтверждает резкий прирост производительности, обеспечиваемый кэш-памятью чтения SSD. Мы тестируем кэш чтения SSD с твердотельными накопителями 1/2/4/8. Согласно проектной структуре уровня RAID в пуле кэш-памяти чтения SSD, теоретически, чем больше используется SSD, тем лучше кэш чтения SSD. Мы также устанавливаем порог заполнения при чтении равным 1, что означает, что данные попадают один раз и заполняются на SSD.

Сводка

• Без кэша SSD среднее значение IOPS составляет 4 512 операций.Включите кэш SSD с 8 SSD, количество операций ввода-вывода в секунду увеличится до 216434. Он улучшается (216434 — 4512) / 4512 = 46,968 == 4697%. А время разогрева около 7 минут.

• SSD Cache 2.0 может повысить производительность произвольного чтения до 47 раз.

• Чем больше используется SSD, тем лучше кэш чтения SSD.

Испытательное оборудование и конфигурации
2
Кэш SSD
• Тип ввода-вывода: настройка
• Размер блока кэша: 4 МБ
Порог заполнения при чтении: 1
• Порог заполнения при записи: 0
Шаблон ввода / вывода
• Шаблон ввода / вывода
• Рабочие: 1
• Выдающиеся (глубина очереди): 128
Характеристики доступа: 4 КБ, 100% чтение, 100% случайное

В этом тесте мы планируем протестировать кэш чтения-записи SSD с 2/4/8 SSD.Точно так же мы устанавливаем порог заполнения при записи равным 1, что означает, что данные попадают один раз и заполняются на SSD.

Сводка

• Без кэша SSD среднее значение IOPS составляет 1660. Включите кэш SSD с 8 твердотельными накопителями, количество операций ввода-вывода в секунду увеличится до 143 898. Он улучшается (143 898 — 1660) / 1660 = 85,685 == 8 569%. А время разогрева около 6,5 минут.

• SSD Cache 2.0 может повысить производительность произвольной записи до 86 раз.

• Чем больше используется SSD, тем лучше кэш записи SSD.

Испытательное оборудование и конфигурации
2
Кэш SSD
• Тип ввода-вывода: настройка
• Размер блока кэша: 4 МБ
• Порог заполнения при чтении: 1
Порог заполнения при записи: 1

Шаблон ввода-вывода
• Шаблон ввода-вывода
• Рабочие: 1
• Выдающиеся (глубина очереди): 128
Характеристики доступа: 4 КБ, 100% запись, 100% случайное

Этот тест моделирует приложение базы данных.Мы используем тип ввода-вывода базы данных в конфигурации пула кэша SSD и используем шаблон доступа к базе данных (8 КБ, 67% чтение, 100% случайный) для тестирования.

Сводка

• Результат очень хороший, когда объем горячих данных меньше емкости кэш-пула SSD.

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

Испытательное оборудование и конфигурации
2
Кэш SSD
• Тип ввода-вывода: База данных
• Размер блока кэша: 1 МБ
• Порог заполнения при чтении: 2
• Порог заполнения при записи: 1
Шаблон ввода-вывода
• Шаблон ввода-вывода
• Рабочие: 1
• Выдающиеся (глубина очереди): 128
• Характеристики доступа: 8 КБ, 67% чтения, 100% случайное

Вышеуказанные случаи протестированы на одном контроллере.Этот тест представляет собой лучшую практику кеширования чтения SSD на двойном контроллере. Мы предполагаем, что производительность может быть вдвое выше, чем тест на одном контроллере.

Сводка

• Без кэша SSD среднее значение IOPS составляет 4986. После включения SSD-кеша с 8 SSD-дисками количество операций ввода-вывода в секунду увеличивается до 461 037. Он улучшается (461 037 — 4986) / 4986 = 91,466 == 9 147%. А время разогрева около 13,5 минут.

• SSD Cache 2.0 может повысить производительность произвольного чтения до 92 раз.

• Тест показывает наивысшую производительность кэш-памяти SSD в системе.

Испытательное оборудование и конфигурации
3
Кэш SSD
• Тип ввода-вывода: настройка
• Размер блока кэша: 4 МБ
Порог заполнения при чтении: 1
• Порог заполнения при записи: 0
Шаблон ввода / вывода
• Шаблон ввода / вывода
• Рабочие: 1
• Выдающиеся (глубина очереди): 128
Характеристики доступа: 4 КБ, 100% чтение, 100% случайное

Этот тест представляет собой лучшую практику кэширования записи SSD на двойном контроллере.Так же мы предполагаем, что производительность может быть вдвое выше, чем тест на одном контроллере.

Сводка

• Без кэша SSD среднее значение IOPS составляет 1268 операций. После включения кеш-памяти SSD с 8 SSD количество операций ввода-вывода в секунду увеличивается до 217 495. Он улучшается (217 495 — 1268) / 1268 = 170,526 == 17 053%. А время разогрева около 18 минут.

• SSD Cache 2.0 может повысить производительность произвольной записи до 171 раз.

• Тест показывает самую высокую скорость увеличения кеш-памяти SSD в системе.

Испытательное оборудование и конфигурации
3
Кэш SSD
• Тип ввода-вывода: настройка
• Размер блока кэша: 4 МБ
• Порог заполнения при чтении: 1
Порог заполнения при записи: 1
Шаблон ввода-вывода
• Шаблон ввода-вывода
• Рабочие: 1
• Выдающиеся (глубина очереди): 128
Характеристики доступа: 4 КБ, 100% запись, 100% случайное

Испытательное оборудование и конфигурации

2.Испытательное оборудование и конфигурации — один контроллер

Сервер

• Модель: HP Z840 (ЦП: 2 x Xeon E5-2620v3 2,4 Гц / ОЗУ: 32 ГБ)

· FC HBA: QLogic QLE2694-SR
· ОС: Windows Server 2012 R2

• Модель: Dell E25S (CPUx2: Xeon E5-2620v3 2,4 Гц / ОЗУ: 32 ГБ)

· FC HBA: QLogic QLE2694-SR
· ОС: Windows Server 2012 R2

Хранилище

• Модель: JetStor 824FXD

· Память: 16 ГБ (2 x 8 ГБ в банках 1 и 3) на контроллер
· Прошивка 1.1,2
· Жесткий диск: 16 x Seagate Constellation ES, ST500NM0001, 500 ГБ, SAS 6 ГБ / с
· SSD: 8 x HGST Ultrastar SSD800MH.B, HUSMH8010BSS200, 100 ГБ, SAS 12 ГБ / с
· Пул жестких дисков: 1 пул RAID 5 с 16 жестких дисков NL-SAS в контроллере 1

• Том HDD: 2 x 45 ГБ в пуле
• Сеанс FC: 2 на том

3.Испытательное оборудование и конфигурации — сдвоенные контроллеры

Сервер

• Модель: HP Z840 (ЦП: 2 x Xeon E5-2620v3 2,4 Гц / ОЗУ: 32 ГБ)

· FC HBA: QLogic QLE2694-SR
· ОС: Windows Server 2012 R2


• Модель: Dell E25S (CPUx2: Xeon E5-2620v3 2,4 Гц / ОЗУ: 32 ГБ)

· FC HBA: QLogic QLE2694-SR
· ОС: Windows Server 2012 R2

Хранилище

• Модель: JetStor 824FXD

· Память: 16 ГБ (2 x 8 ГБ в банках 1 и 3) на контроллер
· Прошивка 1.1.2
· Жесткий диск: 16 x Seagate Constellation ES, ST500NM0001, 500 ГБ, SAS 6 ГБ / с
· SSD: 8 x HGST Ultrastar SSD800MH.B, HUSMH8010BSS200, 100 ГБ, SAS 12 ГБ / с

• Пул жестких дисков: 1 пул RAID 5 с 16 жесткими дисками NL-SAS в контроллере 1

1 x RAID 5, пул 2 с 16 жесткими дисками NL-SAS в контроллере 2

• Объем жесткого диска: 2 x 45 ГБ в пуле

2 x 45 ГБ в пуле 2

• Сессия FC: 1 в томе

Кэширование

и многоуровневое хранение — Архитектура ИТ

В центрах хранения и обработки данных появляются новые технологии, которые расширяют иерархию вариантов, доступных архитекторам систем и решений.Новые носители расширяют портфель технологий жестких дисков и твердотельных накопителей, которые составляют основную часть постоянных хранилищ, используемых на предприятии. Эти решения могут использоваться либо в качестве кеша, либо в качестве уровня хранения. Мы смотрим на оба, чтобы определить плюсы и минусы каждого подхода.

Что такое кеширование?

Кэширование — это метод, используемый для ускорения относительно небольшого времени доступа к внешним постоянным носителям. В типичной компьютерной системе с жесткими дисками и без кэширования каждое событие ввода-вывода может происходить в лучшем случае за десять миллисекунд и может длиться дольше при высокой степени случайных данных.Если мы сравним скорость системной памяти и жестких дисков, жесткий диск примерно в 100 000 раз медленнее, чем DRAM (10 миллисекунд по сравнению со 100 наносекундами). Если бы задержка DRAM составляла один запрос ввода / вывода в секунду, жестким дискам потребовалось бы 11,5 дней для ответа на каждый ввод / вывод.

Caching использует более быстрые носители (обычно системную DRAM) для хранения копии данных, которые обычно находятся на диске или SSD. Благодаря доступу к данным из кеша значительно улучшается общее время доступа, что напрямую влияет на производительность приложений и меньшее время отклика.

Кэшировать все данные?

Почему бы просто не поместить все данные в DRAM? Что ж, DRAM дорогая и непостоянная. Количество DRAM, которое можно развернуть на одном сервере, также ограничено, обычно несколько терабайт. Даже масштабирование до терабайтного уровня может потребовать использования многопроцессорных процессоров, что влечет за собой дополнительные расходы и возможность потери ресурсов. К счастью, нам не нужно помещать все данные в DRAM. Вместо этого методы кэширования могут полагаться на характеристику активных рабочих нагрузок, известную как рабочий набор.

Рабочий набор

Приложения читают и записывают данные как из структурированного содержимого, так и из неструктурированных файлов и объектов. В обоих случаях в любой момент времени обычно будет активна только часть данных. Эта функция известна как рабочий набор. В базе данных рабочим набором могут быть последние созданные транзакции или индексы таблиц. В неструктурированных данных рабочий набор может быть часто используемым набором файлов. Эффективный кеш будет хранить весь рабочий набор на быстрых носителях.

Характеристики кэша

Мы можем резюмировать характеристики кеша следующим образом:

  • Подмножество данных исходной копии, хранящихся в другом месте на постоянном носителе.
  • Быстрый тип носителя, обычно DRAM (или, как мы увидим, постоянная память).
  • Временная копия данных, которая изменяется по мере изменения рабочего набора с течением времени.

Обычно в приложениях, операционных системах и системах хранения используются кэш-память трех типов.

  • Кэш чтения — кэш обслуживает запросы только на чтение ввода-вывода. Если данных нет в кеше, они считываются из постоянного хранилища (также известного как резервное хранилище).
  • Запись в кэш — все новые данные записываются в кэш перед последующей выгрузкой на постоянный носитель. Конструкции кэша записи включают сквозную запись, обратную запись и обратную запись.
  • Кэш чтения / записи — кэш, обслуживающий запросы на чтение и запись.

Кэшами необходимо эффективно управлять, чтобы гарантировать целостность и согласованность данных.Например, кэш чтения должен аннулировать записи для данных, которые были изменены или обновлены. Кэш-память записи требует дополнительной защиты от потери данных до того, как данные будут записаны на постоянный носитель. В горизонтально масштабируемых решениях управление кешем становится еще более сложным, поскольку данные на каждом узле в кластере серверов должны учитывать содержимое кеша и обновления данных других членов кластера. Кеши могут привести к непредсказуемой производительности ввода-вывода, если кеш заполнен или если рабочий набор не точно выровнен в самом кэше.

Что такое многоуровневое хранение?

Tiering — это процесс использования нескольких решений для постоянных носителей для оптимизации затрат на оборудование на основе требований к производительности приложения и связанных данных. Распределение по уровням предлагает возможность размещать данные на наиболее подходящих носителях, которые обеспечивают правильный профиль стоимости / производительности.

Если бы у нас был выбор, мы бы хранили все наши данные на самом быстром доступном носителе. Однако, как гласит старая пословица о хранении, емкость — это бесплатно, но вы платите за производительность.Например, твердотельные диски предлагают гораздо большую производительность, чем жесткие диски, но стоят дороже в долларах за гигабайт. Если цена носителя не принимается во внимание, то размещение всех данных на твердотельных накопителях обеспечивает наилучший и наиболее стабильный уровень производительности. К сожалению, по мере увеличения объемов хранения данных необходимо многоуровневое хранение, чтобы неактивные данные находились на более дешевых носителях, таких как жесткие диски.

Алгоритмы многоуровневого распределения

На протяжении многих лет мы видели множество алгоритмов многоуровневого хранения, используемых для активного размещения данных на наиболее оптимальных носителях.В системах хранения автоматическое многоуровневое перемещение данных перемещает данные вверх или вниз между твердотельными и жесткими дисками. Этот процесс, как правило, является реактивным, выбор места размещения осуществляется на основе исторических данных.

Результаты этих традиционных многоуровневых процессов менее чем желательны. Данные могут внезапно стать активными и оказаться на неправильном уровне хранения, в то время как другие данные могут стать неактивными и использовать драгоценные ресурсы. Для перемещения данных между уровнями обычно требуется некоторое буферное пространство для работы, а также потребляются циклы ввода-вывода носителя, которые могут быть переданы приложению.

Уровневые характеристики

Характеристики уровней можно описать следующим образом:

  • Многоуровневое хранение хранит полный набор данных на нескольких типах носителей.
  • Медиа предлагает различные варианты производительности (пропускная способность / пропускная способность) и задержки.
  • Алгоритмы многоуровневого хранения пытаются разместить данные на наиболее подходящих носителях в соответствии с требованиями ввода-вывода.

Краткое введение здесь знакомит с основами многоуровневого хранения и кэширования. Конечно, мы могли бы написать целую книгу по темам кэширования / многоуровневого дизайна.Тем не менее, стоит помнить, что и кеширование, и многоуровневое хранение представляют некоторую степень компромисса в разных архитектурах. Эти компромиссы обычно связаны с стабильной производительностью, стоимостью и сложностью.

Выбор

В системах хранения поставщики обычно используют кэширование для повышения производительности ввода-вывода, встраивая функции кэширования чтения и записи. Кэширование может сгладить производительность операций ввода-вывода дисковых систем и эффективно справляться с пиковыми нагрузками. На рынке решений для хранения данных существует многоуровневое распределение, что позволяет поставщикам предлагать клиентам экономичные продукты.

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

Постоянная память

Постоянная память, иногда называемая памятью класса хранилищ, представляет собой новый класс устройств, обеспечивающих высокую производительность с протоколами доступа, аналогичными памяти. Например, 3D-XPoint от Intel и Micron доступен в виде твердотельного диска или модуля памяти DIMM. Формат SSD обеспечивает меньшую задержку, чем твердотельные накопители на основе NAND, с гораздо более высокой стойкостью к записи и большей пропускной способностью.Вы можете узнать больше о новых технологиях хранения и их характеристиках в следующей серии статей по теме.

Обратите внимание, что в настоящее время существует также множество вариантов твердотельных накопителей на основе NAND, включая диски TLC / QLC большей емкости и высокопроизводительные модели, такие как Samsung Z-NAND.

PM в массивах хранения

Поставщики массивов хранения

теперь используют 3D-XPoint (в форме Intel Optane) как в качестве кэша, так и в качестве уровня хранения. Optane особенно полезен в качестве кэша записи из-за повышенной надежности, которую он обеспечивает по сравнению с твердотельными накопителями NAND (использование Optane в качестве кеша чтения на самом деле не отражает преимуществ этой технологии).

Optane в качестве уровня кэша обеспечивает высокопроизводительный уровень хранения с малой задержкой для наиболее требовательных приложений, возможно, где размер рабочего набора представляет собой большую часть данных и где кеш будет неэффективным. В качестве примера можно привести рабочие нагрузки AI / аналитики, в которых осуществляется активный доступ к большей части данных и преимущества низкой задержки.

Повторяющаяся история

Во многих отношениях внедрение постоянной памяти аналогично появлению твердотельных накопителей десять лет назад.Многие поставщики просто заменили один или все жесткие диски в системе твердотельными накопителями и, естественно, заметили повышение производительности. К сожалению, в этом процессе не всегда полностью использовались новые медиа. Вместо этого поставщики перешли к созданию систем хранения специально для использования характеристик твердотельных накопителей, что привело к созданию решений, которые были намного более эффективными и предсказуемыми, чем их аналоги. Сегодня мы снова находимся в этой точке с текущими реализациями технологий постоянной памяти.

Кэширование и многоуровневое хранение

Характеристики новых носителей означают, что традиционные процессы кэширования и многоуровневого хранения должны быть пересмотрены.Например, Optane может одновременно выступать как кэш записи, так и как уровень. Поставщики, включая StorONE и VAST Data, используют комбинацию Optane и QLC NAND для обеспечения уровней производительности и емкости, передавая данные непосредственно в постоянную память Optane. Дополнительные сведения об архитектуре данных VAST можно найти в этой серии подкастов и в блоге. Мы обсуждали StorONE в недавнем подкасте, и скоро у нас будет больше контента.

Общей чертой обоих этих решений является использование технологий новыми способами, которые изменяют традиционные представления о многоуровневом распределении и кэшировании.Например, от кэширования можно отказаться в пользу прямого доступа к быстрым носителям, устраняя сложность управления кешем.

Вид архитектора

Новые носители с новыми характеристиками дают возможность просматривать и пересматривать архитектурные проекты хранилищ. Как я уже говорил в статье «20-летние архитектуры», мы не можем просто продолжать внедрять новое оборудование. В какой-то момент необходим полный редизайн.

Я ожидаю, что мы увидим внедрение таких технологий, как спрос на приводы Optane, снизим затраты и, в свою очередь, сделаем носители более привлекательными для разработчиков систем хранения.Наиболее эффективные решения будут использовать уникальные характеристики новых носителей, оправдывая дальнейшее использование специализированных запоминающих устройств в течение многих лет.

Ваш комментарий будет первым

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *