RDMA Защита от чтения для операций с локальной памятью

У меня есть следующий сценарий: мой сервер выделяет буфер размером 1 МБ, который периодически обновляется и записывается (примерно каждые 50 мс). Клиент подключается к серверу через Infiniband и периодически считывает этот буфер через RDMA Read (возможно, даже быстрее, чем он обновляется).

Мой вопрос: есть ли способ гарантировать, что локальная операция записи является атомарной, чтобы чтение RDMA могло читать только действительную и непрерывную память?

Правильно ли я понял, что области памяти защищены только от параллельных операций RDMA, но не операций с локальной памятью? Есть ли способ добиться такого поведения с помощью API ibverbs?

1 ответ

Ответ может зависеть от устройства. В RDMA Verbs есть два разных режима атомарной операции (которые можно проверить с помощьюibv_query_deviceглагол). При атомарные операции являются атомарными только по отношению к другим операциям с того же устройства, в то время как IBV_ATOMIC_GLOBозначает, что они атомарны также в отношении операций ЦП и других устройств RDMA.

Если устройство использует IBV_ATOMIC_HCA, вам необходимо синхронизировать чтение RDMA с записью ЦП, чтобы обеспечить согласованность данных.

Другие вопросы по тегам