Комментарии 3
Специфические нагрузки (БД, 1С, OLTP)
Тут не раскрыта тема RDMA и в целом гиперконвергентные хранилища как класс.
Но да, выбор небольшой, DPDK или rdma-core. Огромные требования к ПО как к клиенту, так и хранилищу.
Я к тому, что за отказ от привязки к железу, мы должны заплатить огромной стоимостью софта. Но в целом, современное железо способно выжать больше, чем классические СХД. При этом обеспечить масштабируемость и гибкость.
Даже если учитывать, что техногиганты пошли в сторону дорогих проприетарных решений и специфичных асиков. Можно сделать тоже самое на обычном серверном железе, Mellanox и без проприетарных либ и коммутаторов. И я сейчас не про Ceph.
Но парадокс в том, что всем такое решение нужно, но те кто мог бы сделать, уже завязались на асики. А остальные пошли в сторону универсальности, где скоростью и не пахнет. Особенно от этого страдают ИИ фабрики.
Я грешным делом даже попытался хотя бы на уровне архитектуры представить такое решение, посчитать на TLA, прикинуть стек. По факту выходит, что там без kernel bypass, RDMA(DPDK или rdma-core) там не вырулить. А чтобы обойти или приблизится по скорости к проприетарным решениям, там придется использовать Rust + assembly. Причем использовать максимум новых инструкций которые приехали в zen 4 и 5. Использовать возможности сетевой карты хранить карту распределения блоков(там с кучей обходных маневров), писать данные через AMD Cache Allocation сразу в L3 кэш процессора.
Выделять отдельные ядра под обработку пакетов, с условием так называемого numa=4. Когда мы ставим сразу 4 сетевые карты на каждую из шин, чтобы не мучать шину Infinity fabric. И обеспечить работу так, чтобы путь чтения/записи блоков шел мимо этой шины. Как если бы сервер был чем-то вроде 4 отдельных серверов, объединенных одной шиной. То есть данные идут сразу в L3 кэш, потом в hugepage(своего ядра), оттуда уже контроллер NVME с помощью SPDK забирает к себе блоки из Hugepage. При чем тот контроллер, который на одной шине с сетевой картой.
Конечно эти танцы применительно только к AMD Epyc, но будем честными. Они дешевле и они хороши. Нужно только подстроиться под них, в том числе на уровне расчета того же Рида Соломона на ассемблере чисто под архитектуру Zen.
Извиняюсь за этот поток сознания, просто тема для меня болезненная. И это еще без описания Contol Plane. Потому что это отдельный ад для системного программирования.
это вы как-то глубоко очень копнули, эта статья написана на два или три уровня выше этой проблематики. Хотя мне интересно, каждый ли вендор HCI может в принципе внедрить в своём решении поддержку RDMA - был небольшой опыт с Nutanix (2015-2017), у него control plane вынесен на ВМ, которая локально раздавала nfs-mount для гипера и обеспечения репликации хранимых данных (и кучи остального), а сетевой стек был поднят на OpenVSwitch на самом хосте (из-за чего тамошние ВМ не могли принимать мультикаст, отчего полный переезд оказался отменен) - если я правильно понимаю принципы, RDMA в такой конфигурации недоступен для управляющей ВМ.
HCI против классической виртуализации: архитектурный выбор для современного ЦОД