Отображение удаленной памяти в адресное пространство хоста с использованием Inifiniband - PullRequest
0 голосов
/ 11 июня 2018

Я недавно начал работать с картами 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 предлагает что-нибудь, чтобы сделать это возможным?

Спасибо!

1 Ответ

0 голосов
/ 12 июня 2018

Нет собственного способа обеспечить функциональность, которую вы ищете с RDMA.RDMA разработан как сетевой протокол, который использует пользовательские приложения для отправки запросов на работу в формах, определенных выше.Однако, хотя это и не является частью исходного протокола, я считаю, что не совсем возможно реализовать уровень, который обеспечит удаленный доступ к памяти через локальное пространство памяти, - но я не знаю ни о какой такой системе.

Самое близкое, что приходит на ум, - это решение для дезагрегации памяти, которое в основном позволяет вам использовать удаленную память, когда локальная память используется полностью.Вот пример для такой системы: https://github.com/SymbioticLab/infiniswap

...