Я недавно начал работать с картами Infiniband, в частности двумя семействами Mellanox Technologies MT27700 [ConnectX-4].В конце концов, я хочу расширить существующую платформу за счет интерфейсов, основанных на API-интерфейсе VPI Verbs API / RDMA CM.
Об исследованиях, которые я уже провел в программировании RDMA: я начал с чтения Mellanox 'RDMA Aware NetworksРуководство пользователя по программированию .Во-вторых, я прочитал довольно полный блог , написанный о возможностях глаголов VPI / RDMA.Наконец, я прочитал три статьи по программированию RDMA, опубликованные Тариком Бедейром: [1] , [2] , [3] .
Чтобы получить представление о том, что лучше всего подходит для моих нужд, я создал тестовый стенд для измерения, среди прочего, задержки, загрузки процессора и пропускной способности.Я протестировал разные операции (см. Таблицу 1 ниже), разные флаги отправки (например, IBV_SEND_INLINE
) и разные способы получения завершений работы (опрос занятых или ожидание события в канале завершения).Мой тестовый стенд частично вдохновлен результатами этого исследования производительности по программированию RDMA .
OPCODE | IBV_QPT_UD | IBV_QPT_UC | IBV_QPT_RC
----------------------------+------------+------------+-----------
IBV_WR_SEND | X | X | X
IBV_WR_SEND_WITH_IMM | X | X | X
IBV_WR_RDMA_WRITE | | X | X
IBV_WR_RDMA_WRITE_WITH_IMM | | X | X
IBV_WR_RDMA_READ | | | X
IBV_WR_ATOMIC_CMP_AND_SWP | | | X
IBV_WR_ATOMIC_FETCH_AND_ADD | | | X
[источник таблицы 1]
В настоящее времяЯ все еще выясняю все возможности.
Одна вещь, которую я заметил, это то, что мне приходится звонить ibv_post_send
каждый раз, когда я хочу записать в удаленную память или прочитать из удаленной памяти с помощью IBV_WR_RDMA_WRITE
или IBV_WR_RDMA_READ
соответственно.Итак, мой вопрос: возможно ли сопоставить адреса удаленной памяти с виртуальным адресным пространством хоста?
Конечно, вся инициализация компонентов VPI, регистрация памяти с ibv_reg_mr
и обменудаленные ключи и адреса все еще должны быть сделаны.Infiniband предлагает что-нибудь, чтобы сделать это возможным?
Спасибо!