Slide 1

Slide 1 text

Containerlabで入門Soft-RoCE nanakano ㅤ ㅤ

Slide 2

Slide 2 text

AIトレーニングの分散学習するためにGPU間の通信やストレージ通信にRDMAを使 用している RDMAにはInfinibandやRoCEなどのプロトコルに対応した専用のハードウェア (NIC)が必要になる 専用のハードウェアを用意せずに気軽にRoCEを触りたい ㅤ はじめに ㅤ 1 / 16

Slide 3

Slide 3 text

AIトレーニングの分散学習するためにGPU間の通信やストレージ通信にRDMAを使 用している RDMAにはInfinibandやRoCEなどのプロトコルに対応した専用のハードウェア (NIC)が必要になる 専用のハードウェアを用意せずに気軽にRoCEを触りたい Soft-RoCE ㅤ はじめに ㅤ 2 / 16

Slide 4

Slide 4 text

Soft-RoCE は、ソフトウェアベースで実装されたRDMAである 専用のハードウェアが不要で、通常のNICで動作する RoCEのプロトコルスタックをソフトウェアでエミュレートする ㅤ Soft-RoCEとは https://enterprise-support.nvidia.com/s/article/howto-configure-soft-roce ㅤ 3 / 16

Slide 5

Slide 5 text

NokiaによってスタートしたOSS コンテナベースのネットワークを構築するCLIツールを提供 特徴 宣言的な定義ファイル(YAML) ラボのデプロイ・削除が1コマンドで実行できる Linux, Mac, Windows(WSL)で動作する VMベースのイメージも使用できる インストールコマンド $ curl -sL https://containerlab.dev/setup | sudo -E bash -s "all" ㅤ ContainerLab https://containerlab.dev/ ㅤ 4 / 16

Slide 6

Slide 6 text

ホスト2台のシンプルな構成で動作確認する 構成: host1 - host2 必要なパッケージをインストールして動作確認 root@host1:/# rdma link add rxe0 type rxe netdev eth1 root@host1:/# rdma link show link rxe0/1 state ACTIVE physical_state LINK_UP netdev eth1 root@host1:/# rping -s No RDMA devices were detected ㅤ ContainerLabでSoft-RoCEやってみる ㅤ 5 / 16

Slide 7

Slide 7 text

ホスト2台のシンプルな構成で動作確認する 構成: host1 - host2 必要なパッケージをインストールして動作確認 root@host1:/# rdma link add rxe0 type rxe netdev eth1 root@host1:/# rdma link show link rxe0/1 state ACTIVE physical_state LINK_UP netdev eth1 root@host1:/# rping -s No RDMA devices were detected 動かない ㅤ ContainerLabでSoft-RoCEやってみる ㅤ 6 / 16

Slide 8

Slide 8 text

network namespaceでSoft-RoCEは動作しない問題のissueを発見 ㅤ ContainerLabでSoft-RoCEやってみる https://github.com/SoftRoCE/librxe-dev/issues/12 ㅤ 7 / 16

Slide 9

Slide 9 text

ホスト2台のシンプルな構成で動作確認する 構成: host1 - host2 必要なパッケージをインストールして動作確認 VM1@ubuntu:~$ rping -s -a 10.0.1.2 -C 10 -v server ping data: rdma-ping-0: ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqr server ping data: rdma-ping-1: BCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrs VM2@ubuntu:~$ rping -c -a 10.0.1.2 -C 2 -v ping data: rdma-ping-0: ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqr ping data: rdma-ping-1: BCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrs ㅤ KVMでSoft-RoCEやってみる ㅤ 8 / 16

Slide 10

Slide 10 text

ホスト2台のシンプルな構成で動作確認する 構成: host1 - host2 必要なパッケージをインストールして動作確認 VM1@ubuntu:~$ rping -s -a 10.0.1.2 -C 10 -v server ping data: rdma-ping-0: ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqr server ping data: rdma-ping-1: BCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrs VM2@ubuntu:~$ rping -c -a 10.0.1.2 -C 2 -v ping data: rdma-ping-0: ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqr ping data: rdma-ping-1: BCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrs 動いた ㅤ KVMでSoft-RoCEやってみる ㅤ 9 / 16

Slide 11

Slide 11 text

KVMではなくContainerLabで動かしたい ContainerLabは、Cisco XRvやJuniper vMXなどのVMベースのソフトウェアを動か すことができるらしい VMベースのソフトウェアを動かすためにhellt/vrnetlab projectを使用している hellt/vrnetlabは、Dockerコンテナ内でQEMUを動かしている ㅤ ContainerLabでVMイメージを扱う https://github.com/hellt/vrnetlab ㅤ 10 / 16

Slide 12

Slide 12 text

コンテナイメージをbuildする $ git clone [email protected]:nanakanok/vrnetlab.git $ cd vrnetlab/ubuntu-soft-roce/ $ make build コンテナをdeployする $ git clone https://github.com/nanakanok/soft-roce-lab.git $ cd soft-roce-lab $ sudo containerlab -t testlab.clab.yml deploy 参考: destroyする時のコマンド sudo containerlab -t testlab.clab.yml destroy ㅤ ContainerLabでSoft-RoCEやってみる(リベンジ) (1/) ㅤ 11 / 16

Slide 13

Slide 13 text

設定をする。SSHの初期パスはuser名 host1 $ docker exec -it clab-testlab-host1 /bin/bash root@host1:/# ssh sysadmin@localhost sysadmin@ubuntu:~$ sudo modprobe rdma_rxe sysadmin@ubuntu:~$ sudo rdma link add rxe0 type rxe netdev ens2 sysadmin@ubuntu:~$ sudo ip a a 10.0.1.1/24 dev ens2 sysadmin@ubuntu:~$ sudo ip link set ens2 up host2 docker exec -it clab-testlab-host2 /bin/bash root@host2:/# ssh sysadmin@localhost sysadmin@ubuntu:~$ sudo modprobe rdma_rxe sysadmin@ubuntu:~$ sudo rdma link add rxe0 type rxe netdev ens2 sysadmin@ubuntu:~$ sudo ip a a 10.0.1.2/24 dev ens2 sysadmin@ubuntu:~$ sudo ip link set ens2 up ㅤ ContainerLabでSoft-RoCEやってみる(リベンジ) (3/) ㅤ 12 / 16

Slide 14

Slide 14 text

rpingでRDMA通信できるか動作確認をする host1 sysadmin@ubuntu:~$ rping -s -a 10.0.1.1 -C 10 -v server ping data: rdma-ping-0: ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqr server ping data: rdma-ping-1: BCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrs host2 sysadmin@ubuntu:~$ rping -c -a 10.0.1.1 -C 2 -v ping data: rdma-ping-0: ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqr ping data: rdma-ping-1: BCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrs root@host1:/# tcpdump -ni eth1 -vvv tcpdump: listening on eth1, link-type EN10MB (Ethernet), snapshot length 262144 bytes 23:49:00.400271 IP (tos 0x0, ttl 64, id 31179, offset 0, flags [DF], proto UDP (17), length 308) 10.0.1.2.55410 > 10.0.1.1.4791: [no cksum] UDP, length 280 23:49:00.400673 IP (tos 0x0, ttl 64, id 50183, offset 0, flags [DF], proto UDP (17), length 308) 10.0.1.1.55410 > 10.0.1.2.4791: [no cksum] UDP, length 280 ㅤ ContainerLabでSoft-RoCEやってみる(リベンジ) (4/) ㅤ 13 / 16

Slide 15

Slide 15 text

qperfでRDMA通信の帯域測定をする host1 sysadmin@ubuntu:~$ qperf host2 (コマンド結果の抜粋) sysadmin@ubuntu:~$ qperf 10.0.1.1 -vv --use_bits_per_sec -cm1 -m 1M rc_rdma_read_bw rc_rdma_read_bw: bw = 2.57 Gb/sec ㅤ ContainerLabでSoft-RoCEやってみる(リベンジ) (5/) ㅤ 14 / 16

Slide 16

Slide 16 text

sysadmin@ubuntu:~$ qperf 10.0.1.1 -vv --use_bits_per_sec -cm1 -m 1M rc_rdma_read_bw rc_rdma_read_bw: bw = 2.57 Gb/sec msg_rate = 306 /sec msg_size = 1 MiB (1,048,576) time = 2 sec timeout = 5 sec use_cm = 1 send_cost = 93.5 ms/GB recv_cost = 764 ms/GB send_cpus_used = 3 % cpus send_cpus_intr = 2.5 % cpus send_cpus_kernel = 0.5 % cpus send_real_time = 2 sec send_cpu_time = 60 ms send_bytes = 612 MiB (641,728,512) send_msgs = 612 recv_cpus_used = 24.5 % cpus recv_cpus_user = 0.5 % cpus recv_cpus_intr = 23.5 % cpus recv_cpus_kernel = 0.5 % cpus recv_real_time = 2 sec recv_cpu_time = 490 ms recv_bytes = 612 MiB (641,728,512) recv_msgs = 612 recv_max_cqe = 1 ㅤ 参考: qperfクライアントのコマンド結果 ㅤ 15 / 16

Slide 17

Slide 17 text

ContainerLabでSoft-RoCEを動かしてみた ContainerLabはコンテナ以外にVMイメージも動かせる みんなもContainerLabで遊ぼう ㅤ まとめ ㅤ 16 / 16