RoCE: различия между версиями

Материал из ALT Linux Wiki
Нет описания правки
Нет описания правки
 
(не показано 7 промежуточных версий 1 участника)
Строка 1: Строка 1:
В данной статье описывается настройка RoCE (RDMA over Converged Ethernet) для c7 и адаптеров ConnectX-3. Но основная последовательность действий в другой среде будет такой же, различия могут быть в именах пакетов и особенностях драйверов.
В данной статье описывается настройка RoCE (RDMA over Converged Ethernet) для [[c7]] и адаптеров ConnectX-3. Но основная последовательность действий в другой среде будет такой же, различия могут быть в именах пакетов и особенностях драйверов.


= Подготовка =
= Подготовка =
Базовая подготовка такая же, как для Infiniband и повторяет пункты 1-3([https://www.altlinux.org/Infiniband#.D0.A1.D0.BF.D0.B8.D1.81.D0.BE.D0.BA_.D0.BF.D0.B0.D0.BA.D0.B5.D1.82.D0.BE.D0.B2_.D0.B4.D0.BB.D1.8F_.D1.83.D1.81.D1.82.D0.B0.D0.BD.D0.BE.D0.B2.D0.BA.D0.B8][https://www.altlinux.org/Infiniband#.D0.A0.D0.B0.D0.B7.D0.BC.D0.B5.D1.80_MTT_.D1.82.D0.B0.D0.B1.D0.BB.D0.B8.D1.86.D1.8B][https://www.altlinux.org/Infiniband#.D0.97.D0.B0.D0.B3.D1.80.D1.83.D0.B7.D0.BA.D0.B0_.D0.BC.D0.BE.D0.B4.D1.83.D0.BB.D0.B5.D0.B9_.D1.8F.D0.B4.D1.80.D0.B0]) руководства по [[Infiniband]] . Некоторые модули, например, ib_ipoib можно не загружать, но большинство лучше оставить, чтоб работали все утилиты.
Базовая подготовка такая же, как для Infiniband и повторяет пункты 1-3([[Infiniband#.D0.A1.D0.BF.D0.B8.D1.81.D0.BE.D0.BA_.D0.BF.D0.B0.D0.BA.D0.B5.D1.82.D0.BE.D0.B2_.D0.B4.D0.BB.D1.8F_.D1.83.D1.81.D1.82.D0.B0.D0.BD.D0.BE.D0.B2.D0.BA.D0.B8|1]], [[Infiniband#.D0.A0.D0.B0.D0.B7.D0.BC.D0.B5.D1.80_MTT_.D1.82.D0.B0.D0.B1.D0.BB.D0.B8.D1.86.D1.8B|2]], [[Infiniband#.D0.97.D0.B0.D0.B3.D1.80.D1.83.D0.B7.D0.BA.D0.B0_.D0.BC.D0.BE.D0.B4.D1.83.D0.BB.D0.B5.D0.B9_.D1.8F.D0.B4.D1.80.D0.B0|3]]) руководства по [[Infiniband]] . Некоторые модули, например, ib_ipoib можно не загружать, но большинство лучше оставить, чтоб работали все утилиты.


= Настройка адаптера =
= Настройка адаптера =
Строка 51: Строка 51:


</pre>
</pre>
Подключенный и активированный порт должен иметь статус PORT_ACTIVE.
Подключенный и активированный порт должен иметь статус '''PORT_ACTIVE''' и link_layer: Ethernet.


= Настройка IP сети =
= Настройка IP сети =
Строка 61: Строка 61:
Имена интерфейсов могут отличаться, ip можно выбирать любые из допустимых диапазонов для внутренних сетей.
Имена интерфейсов могут отличаться, ip можно выбирать любые из допустимых диапазонов для внутренних сетей.
Настройки сети можно по желанию сохранить с помощью [https://www.altlinux.org/Etcnet#.D0.9D.D0.B0.D1.81.D1.82.D1.80.D0.BE.D0.B9.D0.BA.D0.B0_Infiniband etcnet].
Настройки сети можно по желанию сохранить с помощью [https://www.altlinux.org/Etcnet#.D0.9D.D0.B0.D1.81.D1.82.D1.80.D0.BE.D0.B9.D0.BA.D0.B0_Infiniband etcnet].
= Проверка работы RDMA =
== Проверка отправки потока данных через RDMA ==
На первой машине (сервер):
rping -s -a 192.168.21.1 -v
На второй машине (клиент):
rping -c -a 192.168.21.1 -v
Будет большое число строк данных вида ротации строк:
<pre>
ping data: rdma-ping-11278: [\]^_`abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMN
ping data: rdma-ping-11279: \]^_`abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNO
ping data: rdma-ping-11280: ]^_`abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOP
ping data: rdma-ping-11281: ^_`abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQ
ping data: rdma-ping-11282: _`abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQR
</pre>
убивается по ctrl-c.
Один и тот же ip выше — не ошибка, так и должно быть: для сервера — где слушать, для клиента — куда стучаться.
== Тестирование RDMA CM ==
Тестирование RDMA Communication Manager:
На первой машине (сервер):
<pre>
# ucmatose -c 10 -C 1000 -S 10000
cmatose: starting server
initiating data transfers
completing sends
receiving data transfers
data transfers complete
cmatose: disconnecting
disconnected
test complete
return status 0
</pre>
На второй машине (клиент):
<pre>
# ucmatose -c 10 -C 1000 -S 10000 -s 192.168.21.1
cmatose: starting client
cmatose: connecting
receiving data transfers
sending replies
data transfers complete
test complete
return status 0
</pre>
== Тестирование RDMA latency ==
Сервер:
<pre>
rdma_lat -c
3452: Local address:  LID 0000, QPN 000000, PSN 0xbaafb4 RKey 0x28010704 VAddr 0x0000000060d001
3452: Remote address: LID 0000, QPN 000000, PSN 0x52545e, RKey 0xf0010703 VAddr 0x0000000060d001
Conflicting CPU frequency values detected: 1201.429000 != 1200.199000
Latency typical: inf usec
Latency best  : inf usec
Latency worst  : inf usec
</pre>
Клиент:
<pre>
rdma_lat -c 192.168.21.1
11505: Local address:  LID 0000, QPN 000000, PSN 0x52545e RKey 0xf0010703 VAddr 0x0000000060d001
11505: Remote address: LID 0000, QPN 000000, PSN 0xbaafb4, RKey 0x28010704 VAddr 0x0000000060d001
Conflicting CPU frequency values detected: 1199.085000 != 1200.117000
Latency typical: inf usec
Latency best  : inf usec
Latency worst  : inf usec
</pre>
На имеющемся оборудовании разные CPU, поэтому не удалось точно выровнять их частоту и провести тест до конца. Но важно обратить вниманием на опцию '''-c''': она указывает на необходимость использования RDMA CM, без него настройка QP (queue pair) на RoCE невозможна.
== Тестирование базового клиент-серверного приложения ==
Сервер:
<pre>
rdma_server
rdma_server: start
rdma_server: end 0
</pre>
Клиент:
<pre>
rdma_client -s 192.168.21.1
rdma_client: start
rdma_client: end 0
</pre>
= Ограничения RoCE =
Важно понимать, что RoCE (RDMA over Converged Ethernet) — это не Infiniband поверх Ethernet, а RDMA поверх Ethernet и есть отличия в работе RoCE от классического RDMA поверх Infiniband.
В частности, вся настройка QP (queue pair) должна выполняться только через CM (communication manager), иные способы работать не будет. Кроме того, не все возможности RDMA+IB поддерживаются в RoCE, в частности, нет поддержки APM (automatic path migration).
Это следует учитывать при использовании RDMA-приложений, которые может понадобится перенастроить или переписать.
Также следует понимать, что latency RoCE будет в несколько раз хуже latency IB при прочих равных условиях.
= Настройка оборудования RoCE узлов =
Применимы все [[Infiniband#.D0.9D.D0.B0.D1.81.D1.82.D1.80.D0.BE.D0.B9.D0.BA.D0.B0_.D0.BE.D0.B1.D0.BE.D1.80.D1.83.D0.B4.D0.BE.D0.B2.D0.B0.D0.BD.D0.B8.D1.8F_IB_.D1.83.D0.B7.D0.BB.D0.BE.D0.B2|рекомендации для Infiniband]].


[[Категория:Admin]]
[[Категория:Admin]]

Текущая версия от 12:48, 26 июля 2018

В данной статье описывается настройка RoCE (RDMA over Converged Ethernet) для c7 и адаптеров ConnectX-3. Но основная последовательность действий в другой среде будет такой же, различия могут быть в именах пакетов и особенностях драйверов.

Подготовка

Базовая подготовка такая же, как для Infiniband и повторяет пункты 1-3(1, 2, 3) руководства по Infiniband . Некоторые модули, например, ib_ipoib можно не загружать, но большинство лучше оставить, чтоб работали все утилиты.

Настройка адаптера

Для использования Converged Ethernet если карта VPI и может работать как в режиме ib, так и в режиме eth, может понадобится вручную переключить её в режим eth:

echo eth > /sys/class/infiniband/mlx4_0/device/driver/0000:81:00.0/mlx4_port1

PCI id устройства скорее всего будет другим, но он там должен быть один, всегда можно проверить по lspci. Портов может быть несколько, в режим eth нужно перевести все, что предполагается использовать перед выполнением дальнейших дествий. При использовании etcnet такие команды можно прописать в /etc/net/netup-pre.

Имя интерфейса можно получить из вывода ip link:

ip link | grep portid

в нашем случае это ens3 и ens3d1.

Поднять интерфейс можно стандартным:

ip link set ens3 up

Успешную конфигурацию интерфейса можно с помощью ibv_devinfo:

# ibv_devinfo
hca_id: mlx4_0
        transport:                      InfiniBand (0)
        fw_ver:                         2.42.5000
        node_guid:                      248a:0703:0069:dfa0
        sys_image_guid:                 248a:0703:0069:dfa3
        vendor_id:                      0x02c9
        vendor_part_id:                 4103
        hw_ver:                         0x0
        board_id:                       MT_1090111019
        phys_port_cnt:                  2
                port:   1
                        state:                  PORT_ACTIVE (4)
                        max_mtu:                4096 (5)
                        active_mtu:             1024 (3)
                        sm_lid:                 0
                        port_lid:               0
                        port_lmc:               0x00
                        link_layer:             Ethernet

                port:   2
                        state:                  PORT_DOWN (1)
                        max_mtu:                4096 (5)
                        active_mtu:             1024 (3)
                        sm_lid:                 0
                        port_lid:               0
                        port_lmc:               0x00
                        link_layer:             Ethernet

Подключенный и активированный порт должен иметь статус PORT_ACTIVE и link_layer: Ethernet.

Настройка IP сети

Нужно настроить обычную IP сеть между eth-интерфейсами ConnectX-3 со своей подсетью: на первой машине:

ip addr add 192.168.21.1/24 dev enp131s0

и на второй:

ip addr add 192.168.21.2/24 dev ens3

Имена интерфейсов могут отличаться, ip можно выбирать любые из допустимых диапазонов для внутренних сетей. Настройки сети можно по желанию сохранить с помощью etcnet.

Проверка работы RDMA

Проверка отправки потока данных через RDMA

На первой машине (сервер):

rping -s -a 192.168.21.1 -v

На второй машине (клиент):

rping -c -a 192.168.21.1 -v

Будет большое число строк данных вида ротации строк:

ping data: rdma-ping-11278: [\]^_`abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMN
ping data: rdma-ping-11279: \]^_`abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNO
ping data: rdma-ping-11280: ]^_`abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOP
ping data: rdma-ping-11281: ^_`abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQ
ping data: rdma-ping-11282: _`abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQR

убивается по ctrl-c.

Один и тот же ip выше — не ошибка, так и должно быть: для сервера — где слушать, для клиента — куда стучаться.

Тестирование RDMA CM

Тестирование RDMA Communication Manager:

На первой машине (сервер):

# ucmatose -c 10 -C 1000 -S 10000
cmatose: starting server
initiating data transfers
completing sends
receiving data transfers
data transfers complete
cmatose: disconnecting
disconnected
test complete
return status 0

На второй машине (клиент):

# ucmatose -c 10 -C 1000 -S 10000 -s 192.168.21.1
cmatose: starting client
cmatose: connecting
receiving data transfers
sending replies
data transfers complete
test complete
return status 0

Тестирование RDMA latency

Сервер:

rdma_lat -c
3452: Local address:  LID 0000, QPN 000000, PSN 0xbaafb4 RKey 0x28010704 VAddr 0x0000000060d001
3452: Remote address: LID 0000, QPN 000000, PSN 0x52545e, RKey 0xf0010703 VAddr 0x0000000060d001

Conflicting CPU frequency values detected: 1201.429000 != 1200.199000
Latency typical: inf usec
Latency best   : inf usec
Latency worst  : inf usec

Клиент:

rdma_lat -c 192.168.21.1
11505: Local address:  LID 0000, QPN 000000, PSN 0x52545e RKey 0xf0010703 VAddr 0x0000000060d001
11505: Remote address: LID 0000, QPN 000000, PSN 0xbaafb4, RKey 0x28010704 VAddr 0x0000000060d001

Conflicting CPU frequency values detected: 1199.085000 != 1200.117000
Latency typical: inf usec
Latency best   : inf usec
Latency worst  : inf usec

На имеющемся оборудовании разные CPU, поэтому не удалось точно выровнять их частоту и провести тест до конца. Но важно обратить вниманием на опцию -c: она указывает на необходимость использования RDMA CM, без него настройка QP (queue pair) на RoCE невозможна.

Тестирование базового клиент-серверного приложения

Сервер:

rdma_server
rdma_server: start
rdma_server: end 0

Клиент:

rdma_client -s 192.168.21.1
rdma_client: start
rdma_client: end 0

Ограничения RoCE

Важно понимать, что RoCE (RDMA over Converged Ethernet) — это не Infiniband поверх Ethernet, а RDMA поверх Ethernet и есть отличия в работе RoCE от классического RDMA поверх Infiniband.

В частности, вся настройка QP (queue pair) должна выполняться только через CM (communication manager), иные способы работать не будет. Кроме того, не все возможности RDMA+IB поддерживаются в RoCE, в частности, нет поддержки APM (automatic path migration).

Это следует учитывать при использовании RDMA-приложений, которые может понадобится перенастроить или переписать.

Также следует понимать, что latency RoCE будет в несколько раз хуже latency IB при прочих равных условиях.

Настройка оборудования RoCE узлов

Применимы все рекомендации для Infiniband.