Введение
Спецификация TP4146 (NVM Express® Flexible Data Placement – FDP, https://nvmexpress.org/wp–content/uploads/NVM–Express-2.0-Ratified–TPs_12122022.zip) была полностью согласована и одобрена еще в конце 2022 г., однако продвижение использования ее преимуществ уже в составе готовых решений началось лишь с июня 2023 г. Среди компаний, принимавших активное участие в ее разработке: Samsung, Meta, Google, KIOXIA, Micron, SK hynix / Solidigm, Microchip, Marvell, FADU, WDC.
Расширенное использование SSD повысило производительность и качество обслуживания на рынках гипермасштабируемых центров обработки данных и облачной виртуализации. Однако различные проблемы не позволяют SSD достичь оптимальной производительности, в том числе усиление записи (WA, Write Amplification), что снижает общую производительность системы и увеличивает износ носителя на устройстве.
WA — это дополнительные данные, записываемые на носитель, когда хост отправляет данные на устройство. Эти случайные записи замедляют работу всей архитектуры и занимают ненужное место на устройстве. Коэффициент усиления записи (WAF, Write Amplification Factor) — это соотношение дополнительных данных, записанных на носитель во время этого процесса, по сравнению с объемом данных, которые хост первоначально запросил для записи. Например, если в системе WAF равен двум, то на каждые 4 КБ данных, записываемые хостом, в конечном итоге на носитель записывается 8 КБ. Эти дополнительные данные создают системную проблему, особенно при рассмотрении более крупных операций записи [1].
Исторически сложилось так, что методом сокращения WAF было избыточное выделение ресурсов или процесс поддержания дополнительного NAND в системе для обработки этих дополнительных записей. Избыточное выделение ресурсов успешно снижает потребность в сборе мусора, поскольку создает дополнительное место для записи этих дополнительных данных. Однако это создает дополнительную проблему, когда клиенты вынуждены приобретать и обслуживать ненужную и часто неиспользуемую память NAND, тратя ресурсы и мощность и одновременно неся дополнительные расходы. Вместо избыточного выделения ресурсов система может напрямую обмениваться информацией с хостом о том, как лучше всего разместить данные на устройстве, что помогает как преодолеть WA, так и напрямую повысить производительность системы. История улучшения показателя WA представлена на рис. 1.
Рис. 1. История улучшения показателя WA [10].
Усиление записи происходит из-за разрыва связи между хостом и устройством, поскольку хост не имеет достаточной информации для понимания физического расположения самого устройства и не знает о данных, которые имеют тенденцию использоваться вместе. Спецификация гибкого размещения данных (FDP) решает проблему WA, позволяя хосту предоставлять подсказки устройству при возникновении таких запросов на запись. Эти подсказки передают хосту достаточно информации, как об устройстве, так и о самих данных, чтобы установить оптимальную физическую структуру устройства, специально размещая данные, которые обычно используются вместе, в физической близости. Этот процесс уменьшает как сбор мусора, так и WA, а также устраняет необходимость в избыточной подготовке.
Благодаря сотрудничеству компаний членов NVM Express удалось разработать важное, многофункциональное и обратно совместимое решение. Обратная совместимость необходима, поскольку, если хост и приложение(я) поддерживают FDP, реализуются преимущества как уменьшения усиления записи, так и повышения производительности.
FDP определяет подсказки, которые указывает хост на основе записываемых адресов логических блоков, которые устройство затем использует для оптимального размещения физического носителя. FDP также предоставляет хосту информацию о конфигурации, которая позволяет ему понять физическую структуру устройства, включая количество логических блоков в каждом физическом блоке. Эта информация позволяет хосту предоставлять соответствующие подсказки и достигать WAF почти 1,0.
FDP жизненно важен для рынков гипермасштабируемых и корпоративных центров обработки данных, поскольку он не только повышает производительность за счет поддержания оптимального физического расположения данных, но также снижает потребности в усилении записи и сборе мусора. Кроме того, в любом контексте, где есть несколько пользователей одного устройства, например, в виртуальных машинах, использование устройства NVMe с FDP даст значительные преимущества, включая как улучшенное качество обслуживания, так и более длительный срок службы устройств.
FDP для гиперскейлеров повышает производительность и снижает ТСО [3]
Спецификация FDP стала результатом сотрудничества Meta и Google, которые независимо работали над решением одной и той же проблемы: уменьшение или устранение усиление записи (WA) и устранение избыточного выделения SSD. Совместная разработка FDP была стратегическим шагом, поскольку гиперскейлерам, OEM производителям и производителям SSD (включая Samsung) требуется общий стандарт для дальнейшего развития. С момента ратификации NVMe Express® FDP стал горячей темой на саммите Flash Memory Summit (FMS) и саммите Open Compute Project Summit (OCP, https://www.opencompute.org/summit/global-summit).
На выставке FMS 2023 компания Samsung продемонстрировала SSD с FDP, а FMS наградила NVM Express® Technical Work Group (в категории Industry Standards) за лучшую на выставке самую инновационную технологию памяти для FDP (Most Innovative Memory Technology).
Целью FDP является решение очень дорогостоящей проблемы верхнего уровня: сокращение CapEx and OpEx и улучшение QoS для развертываний SSD в гипермасштабируемых центрах обработки данных. Это становится особенно актуально с развитием искусственного интеллекта, облачных приложений и мультимедийного контента. В настоящее время человечество производит зеттабайты данных каждую неделю, в то время как наши технологии хранения данных с трудом справляются с этой задачей [9]. Дезагрегированные инфраструктуры хранения данных разделяют серверное хранилище и вычислительные ресурсы. Это позволяет независимо масштабировать и оптимизировать емкость и производительность хранилища в зависимости от требований рабочей нагрузки. Однако стандартная модель дезагрегированного хранилища не оптимизирована для одновременной работы нескольких приложений и совершенно разных рабочих нагрузок, которые «приходят и уходят» и меняются со временем. В результате производительность устройства остается нестабильной, что неэффективно и дорого.
Для понимания чем SSD с FDP превосходит обычный SSD, рассмотрим, как происходит усиление записи (WA) в стандартной дезагрегированной среде хранения. WA — это дополнительная запись данных хоста на носитель после первоначальной записи этих данных хостом на носитель. Такая дополнительная запись данных хоста нежелательна по нескольким причинам: требуется дополнительная емкость хранилища, вызывается износ, не связанный с хостом, а дополнительные операции чтения и записи требуют больше энергии и снижают общую производительность системы. Гиперскейлерам приходится размещать эти дополнительные данные путем избыточного выделения ресурсов. Коэффициент усиления записи (WAF) — это соотношение дополнительных данных, которые записываются каждый раз, когда хост отправляет данные на устройство хранения. В типичном примере WAF ~2,5 означает, что на каждый КБ данных, записываемых на устройство, записываются еще дополнительные 1,5 КБ данных.
Система с включенным FDP позволяет обойти эту проблему, обмениваясь с хостом информацией о том, где разместить данные на носителе, и хост может перезаписать эти данные или отменить распределение этих данных до того, как SSD потребуется для их перемещения, что снижает потребность в избыточных ресурсах.
Благодаря FDP теперь возможен WAF ~1, и последствия для гиперскейлеров, проще говоря, огромны.
Среди основных особенностей FDP следующие [12]:
- возможность хосту предоставлять подсказку, где разместить данные, с помощью виртуального дескриптора/указателя;
- изменения, затронувшие SSD:
- FDP помещает данные в суперблок на основе подсказки, а не на выбор собственного суперблока;
- FDP объявляет размер суперблока;
- функциональность, которая не изменилась:
- команда Read;
- команда Write (добавлен дополнительный дескриптор записи);
- Deallocate/TRIM;
- Security;
- обратная совместимость:
- FDP можно включить/отключить на стандартных устройствах;
- приложениям не требуется понимать FDP, чтобы получить преимущества;
- приложения, понимающие FDP, имеют больше преимуществ.
Вариант использования гибкого размещения данных (FDP)
Сравним, как FDP и типичная модель дезагрегированного хранилища обрабатывают распределение данных по носителям для нескольких приложений. В этом примере смешанные данные из приложений A, B и C записываются в доступные «суперблоки» на носителе. Затем приложение A освобождает все свои данные, которые необходимо удалить. После завершения WAF измеряется для обеих моделей (рис. 1а).
Рис. 1а. Размещение блоков данных на SSD.
Без FDP (рис. 2) данные записываются для последовательного открытия суперблоков (время определяет расположение):
- данные из приложений A, B и C смешиваются внутри каждого суперблока;
- производительность устройства нестабильна и никогда не достигает «стабильного состояния» из-за смешанных рабочих нагрузок;
- избыточное выделение ресурсов увеличивается до тех пор, пока WA не станет достаточно низким и производительность не ста нет стабильной;
- когда приложение А освобождает свои данные, остаются дыры (т.е. недействительные данные), которые необходимо «очистить»;
- изменение рабочих нагрузок приводит к повторению описанного выше процесса.
Рис.2. Размещение блоков данных на SSD без FDP [3].
В стандартной модели дезагрегированного хранилища хост не имеет возможности определить, что и где записывается на устройстве. Для размещения WA требуется избыточное выделение ресурсов, часто более 25%, а “сбор мусора” требует больше ресурсов.
С FDP (рис. 3) хост может помечать записи и помещать данные в определенные медиаблоки:
- данные из приложений A, B и C организованы в отдельные суперблоки;
- производительность устройства может достичь «стабильного состояния»;
- избыточное выделение ресурсов больше не требуется;
- изменение рабочих нагрузок выполняется с использованием значительно меньших ресурсов.
Рис. 3. Размещение блоков данных на SSD c FDP [3].
При включенном FDP хост предоставляет «подсказки» по размещению данных, которые позволяют записывать аналогичные данные в один и тот же суперблок. Когда данные из приложения освобождаются, необходимо стереть только один блок и никакой GC (garbage collected, т.е. увеличения WA) не требуется.
Согласно OCP презентации (https://www.youtube.com/watch?v=obNIOqWhxY) Росса Стенфорта (Ross Stenfort) из Meta, «FDP значительно улучшает усиление записи, снижает износ устройств, а также повышает производительность и качество обслуживания».
Пример использования Google Write Amplification (WA)
Крупнейшие в мире гиперскейлеры серьезно относятся к производительности, энергосбережению и совокупной стоимости владения. В октябре прошлого года на OCP Global Summit 2022, Крис Сабол (Chris Sabol, Google) представил тематическое исследование инфраструктуры центров обработки данных Google, чтобы продемонстрировать влияние сокращения WA на CapEx и OpEx [10]. В этом примере при выполнении операции случайной записи 4 КБ с хоста с OP (Over Provisioning) 28% и “жадным” алгоритмом GC WAF составляет ~ 2,5. Исследование показывает потенциальные преимущества снижения WAF при использовании FDP до ~1,25.
Исследование Google говорит нам о том, что потенциал повышения экономичности и производительности от внедрения FDP вполне реален: удвоение размера диска с той же интенсивностью записи приложений, двойным сроком службы диска и двойной скоростью записи приложений (рис. 4). В настоящее время на горизонте нет ничего другого (на момент написания поста [2]), что могло бы оказать столь существенное влияние на TCO гипермасштабируемыми технологиями.
Рис. 4. Результативность FPD [10]
Перспективы системных архитектур с поддержкой FDP, где WAF ~1 станет новой нормой, должно быть достаточно, чтобы привлечь внимание любого гиперскейлера. Более того, FDP очень легко реализовать. Он обратно совместим с устаревшими хостами, поэтому нет необходимости обновлять инфраструктуру. Чтение устройства и другое поведение не меняются, а FDP — это дополнительная функция в NVMe, ее можно просто включить или отключить.
SSD с поддержкой FDP станут доступны в ближайшем будущем. Компания Samsung будет поддерживать FDP в последнем поколении SSD для центров обработки данных.
Имплементация FDP [2]
За последнее десятилетие индустрия хранения данных осваивала новые технологии размещения данных. Эта тема представляет особый интерес для центров обработки данных и гиперскейлеров из-за потенциального влияния на ТСО при развертывании SSD. И хотя основные технологии хранения данных, такие как Open Channel SSD, NVMe Streams (Directives) и Zoned Named Spaces (ZNS) имеют допустимые варианты использования и широкую базу заинтересованных клиентов, эти решения могут вызвать фрагментацию экосистемы ПО, что приведет к раздуванию кодовых баз и отказу от основных проектов.
Целью FDP является упрощение интеграции экосистемы. FDP обратно совместим с устаревшими системами и требует гораздо меньше инженерных ресурсов, обеспечивая при этом впечатляющую оптимизацию. FDP достигает этого, ориентируясь на первые 80% взаимодействия хоста и устройства для лучшего размещения данных, где любые необходимые изменения в существующих стеках программного обеспечения не являются слишком навязчивыми. Для Meta и Google, двух крупнейших в мире гиперскейлеров, FDP решает проблему сложности экосистемы с помощью существующих технологий хранения данных, таких как ZNS.
Размещение данных на SSD с поддержкой FDP улучшает модель дезагрегированного хранения, позволяя разделять данные посредством «подсказок», предоставляемых хосту о том, где разместить данные на SSD. SSD с поддержкой FDP достигают этого, предоставляя информацию о суперблоке, которая позволяет хосту помечать записи в определенные единицы восстановления (RU, Reclaim Units), чтобы устройство могло согласовывать данные из нескольких приложений. Такое взаимодействие хоста и устройства снижает усиление записи (WA, write amplification), за счет уменьшения данных, когда данные записываются хостом на носитель, и обеспечивает гарантии освобождения RU, что дает хосту возможность организовывать сборку мусора (GC, garbage collection). FDP также поддерживает обратную связь с хостом, чтобы оценить, на сколько хорошо работает согласование данных между RU и группами возврата (RG).
Конфигурация FDP состоит из одного или нескольких RU, организованных в одну или несколько RG с одним или несколькими дескрипторами единиц возврата (RUH, Reclaim Unit Handles). Каждый RUH ссылается на RU в пределах RG.
Поддержка FDP уже доступна в операционных системах, библиотеках, инструментах и приложениях, поэтому гиперскейлеры и центры обработки данных могут рассчитывать на относительно легкое внедрение твердотельных накопителей с поддержкой FDP, когда они станут доступны.
Linux Kernel I/O
В операционных системах Linux 6.2 FDP реализуется с использованием I/O Passthru, не требуя каких-либо изменений в ядре. Linux 6.2 предлагает асинхронный путь к устройству NVMe, который позволяет приложениям пользовательского пространства напрямую обращаться к драйверу ядра NVMe, минуя блочный уровень. Это означает, что приложения могут использовать сквозную архитектуру, аналогичную SPDK, но вместо этого используют встроенный в ядро драйвер NVMe. Более ранние версии Linux (5.17 6.1) также поддерживают FDP с использованием I/O Passthru, поддерживаемого io_uring (рис. 4а).
- Enable any NVMe device to be available in Linux (Remove limitation of block layer);
- Implemented in io_uring (Same scalability and performance);
- Support endtoend innovation for new interfaces though inkernel I/O;
- Support I/O stacks both in Cloud and Enterprise environments (I/O Passthru in SPDKthough xNVMe)
- Upstream since 5.19.
Рис. 4а. Имплементация FDP в Linux Kernel [12].
В ОС Linux подсистема ввода-вывода ядра занимается кэшированием, планированием, буферизацией, резервированием устройств, обработкой ошибок, а также обеспечивает независимость устройств, управление ресурсами и управление параллелизмом для устройств ввода-вывода.
Библиотеки и инструменты
И xNVMe [5], и SPDK [6] обеспечивают полную поддержку FDP. xNVMe обеспечивает FDP в различных путях хранения данных за счет использования драйвера SPDK NVMe и прохода ввода-вывода io_uring. Возможность подключения SSD с поддержкой FDP к стандартным интерфейсам хранения упрощает внедрение для разработчиков приложений и архитекторов инфраструктуры хранения данных.
xNVMe предоставляет средства для программирования и взаимодействия с устройствами NVMe из пользовательского пространства. Основой xNVMe является libxnvme, библиотека пользовательского пространства для работы с устройствами NVMe. Она предоставляет API C для управления памятью, то есть для выделения физической памяти или передаваемой по DMA памяти, когда это необходимо. Комплект средств разработки производительности хранилища (SPDK) предоставляет набор инструментов и библиотек для написания высокопроизводительных масштабируемых приложений хранения данных пользовательского режима.
Приложения
В настоящее время реализуется общеотраслевая инициатива по добавлению поддержки FDP в Cachelib [7]. Тестирование уже показало, что FDP помогает Cachelib снизить коэффициент усиления записи (WAF) за счет разделения данных из двух пулов объектов: BigHash и BlockCache [8] без серьезной оптимизации. Основываясь на экспериментальных результатах, в которых используются реальные рабочие нагрузки гипермасштабирования, можно добиться значительного снижения WAF при одновременном увеличении использования SSD без влияния на скорость попадания в кэш.
В дальнейшем необходимо полностью разработать поддержку восходящего потока Cachelib, продолжить оптимизацию для лучшего разделения данных, а клиентам необходимо указать допустимые уровни WAF.
CacheLib — это механизм кэширования общего назначения, который упрощает разработку, масштабирование и обслуживание высокопроизводительных кэшей.
Эмуляция QEMU
FDP полностью поддерживается начиная с версии QEMU 8.0. Используя QEMU, разработчики операционных систем и приложений могут свободно разрабатывать твердотельные накопители с поддержкой FDP до того, как они станут широко доступными. Недавние изменения в устройстве NVMe позволяют оценивать производительность хоста с помощью эмуляции QEMU.
QEMU — это эмулятор и виртуализатор компьютеров с открытым исходным кодом, который позволяет разработчикам запускать полную немодифицированную операционную систему поверх существующей системы. Версия 8.0 была выпущена в апреле 2023 г.
С появлением FDP гиперскейлеры будут лучше оснащены для обработки все более тяжелых рабочих нагрузок, связанных с искусственным интеллектом, облаком и мультимедийным контентом. Интеграция в существующие экосистемы потребует минимального проектирования для использования оптимизаций благодаря обратной совместимости FDP и поддержке FDP в Linux Kernel I/O, xNVMe и SPDK, а вскоре и в Cachelib. Преимущества FDP уже были наглядно продемонстрированы Meta, Google и Samsung, и теперь остается, чтобы SSD с поддержкой SSD стали широко доступными.
Направления развития OCP Datacenter NVMe® SSD
Основные этапы развития OCP Datacenter NVMe® SSD (начиная с 2018 г.) представлены на рис. 5 [11].
Рис. 5. Этапы развития OCP Datacenter NVMe® SSD [11].
В настоящее время SSD PCIe 5.0 NVMe от FADU, предназначенные для удовлетворения растущих требований, предъявляемых к центрам обработки данных нового поколения с гипермасштабированием, гиперконвергентными, корпоративными и периферийными системами, уже поддерживают FDP (https://www.fadu.io//wp–content/uploads/2023/07/4.FADU_PCIe5.0_SSD_Brochure_2023_webpage-1.pdf).
В основе SSD FADU лежит инновационная архитектура контроллера твердотельных накопителей, которая обеспечивает сверхнизкую и стабильную задержку и практически устраняет проблемы теплового регулирования. В результате твердотельные накопители FADU обеспечивают лучшую в отрасли производительность в тысячах операций в секунду на ватт, обеспечивая при этом высокое качество обслуживания.
Контроллер FC5161 делает платформу SSD FADU PCIe 5.0 первым SSD OCP, поддерживающим FDP, предлагающим 64 физические функции, сокращающим WAF и улучшающим качество обслуживания. FDP обеспечивает полный произвольный доступ, а FC5161 обратно совместим с интерфейсом сильных блоков. Его спецификация является лидером в отрасли по более низкому энергопотреблению и производительности, а также готовности к развертыванию в центрах обработки данных в 2023 году.
Твердотельные накопители поддерживают множество функций для современных центров обработки данных, включая аппаратную безопасность, расширенную телеметрию, функции визуализации, путь передачи данных и защиту от потери питания. Платформа твердотельных накопителей PCIe 5.0 от FADU основана на спецификациях отраслевых стандартов, включая PCIe 5.0 x 4, NVMe 2.0 и OCP Datacenter NVMe SSD 2.0 (рис. 6, 7).
Рис. 6. Характеристики SSD FADU с контроллером FADU FC5161 (https://www.fadu.io//wp–content/uploads/2023/07/4.FADU_PCIe5.0_SSD_Brochure_2023_webpage-1.pdf).
Рис. 7. Характеристики SSD FADU с и без FDP (https://www.fadu.io//wp-content/uploads/2023/07/4.FADU_PCIe5.0_SSD_Brochure_2023_webpage-1.pdf).
Заключение
Индустрия хранения данных стоит на пороге единой стандартизированной технологии размещения данных, которую можно будет относительно легко внедрить, и которая принесет большие выгоды, такие как увеличение использования SSD, повышение энергоэффективности и снижение совокупной стоимости владения.
Источники, доп. ресурсы
[1] Overcoming the Write Amplification Problem with NVM Express® Flexible Data Placement. POSTED ON: JUNE 8, 2023 – https://nvmexpress.org/nvmeflexible-data-placement-fdp-blog/.
[2] What Hyperscalers Need to Know About Flexible Data Placement (FDP). By Javier Gonzales. Sep 13, 2023 – https://semiconductor.samsung.com/us/news-events/tech-blog/what-hyperscalers-need-to-know-about-flexible-data-placement-fdp/.
[3] Hyperscalers Embrace Flexible Data Placement (FDP) to Increase Performance and Lower TCO, by Michael Allison, Senior Director, Samsung Device Solutions America. Sep 06, 2023 – https://semiconductor.samsung.com/us/news-events/tech-blog/hyperscalers-embrace-flexible-data-placement-fdp-to-increase-performance-and-lower-tco/.
[4] Hyperscale Storage Perspective. Ross Stenfort, Meta, May 2023. 37th International Conference on Massive Storage Systems and Technology (MSST 2023) May 22th — 24th, 2023 – https://storageconference.us/2023/StenfortPresentation.pdf.
[5] “xNVMe: CrossPlatform Libraries and Tools for NVMe De vices.” GitHub, 29 Aug. 2023 – https://github.com/OpenMPDK/xNVMe.
[6] “Storage Performance Development Kit.” GitHub, 29 Aug. 2023 – https://github.com/spdk/spdk.
[7] “CacheLib.” GitHub, 29 Aug. 2023 – https://github.com/facebook/CacheLib.
[8] The CacheLib Caching Engine: Design and Experiences at Scale. Berg, Benjamin, et al. Proceedings of the 14th USENIX Symposium on Operating Systems Design and Implementation (OSDI’20). November 46, 2020 – https://www.usenix.org/sites/default/files/osdi20-full_proceedings.pdf.
[9] Statista (2022, November 30). Use of big data analytics in market research worldwide 2014-2021 – https://www.statista.com/statistics/966892/market-research-industry-big-data-analytics/.
[10] Flash Innovation: Flexible Data Placement. Ross Stenfort (Meta) | Chris Sabol (Google). OCP Global Summit (October 18-20, 2022) – https://www.youtube.com/watch?v=obNIOqWhxY, https://www.opencompute.org/events/pastevents/2022-ocp-global-summit.
[11] SSD innovation to navigate the time of turbulence. FADU. FMS2023 – https://www.flashmemorysummit.com/English/Conference/Keynotes_2023.html.
[12] 2023 OCP Storage Tech Talks. May 16, 2023 – https://www.youtube.com/watch?v=ENp6zlMI3g.
Авторы: Гантимуров А.П., Калашник А.Г.
![Favorite Favorite](/portal/wp-content/uploads/2023/08/visibility.png)
![Loading Loading](https://baum.ru/portal/wp-content/plugins/wp-favorite-posts/img/loading.gif)