Как следует из названия, я пытаюсь отправить данные клиенту (через RDMA) вместо того, чтобы клиент отправлял их на сервер. Все примеры, которые я могу найти по этой теме, относятся к клиентскому серверу. Есть ли какие-либо ресурсы/ссылки, на которые я могу ссылаться?
Как заставить сервер записывать в область памяти клиентского устройства через RDMA
Ответы (1)
При использовании библиотеки libibverbs для глаголов RDMA в большинстве случаев нет понятия клиента и сервера. Один устанавливает соединение между двумя парами очередей, используя внеполосный канал (TCP или RDMA CM), а затем конфигурирует QP с информацией о соединении, которая была обменена. После установления соединения обе стороны могут использовать одностороннюю операцию RDMA, если это позволяет конфигурация QP.
Примером такого приложения является perftest, которое обменивается информацией о соединении с TCP (или RDMA CM) и затем измеряет производительность односторонних и двусторонних операций RDMA.
В librdmacm и rsockets существует концепция сервера (идентификатора прослушивания или сокета) и клиента. Тем не менее, после установления соединения обе стороны могут использовать RDMA. Вы можете найти примеры для обоих в репозитории rdma-core. Например, rping использует RDMA CM и вызывает операции чтения и записи RDMA с сервера на клиент и riostream использует rsockets и вызывает записи RDMA как с клиента, так и с сервера.