各種nicで速度を確かめている
infinibandはしゃべれない Ethernet カードが2枚ある.
それを共に CPU: Gold G5400[3.7GHz,2c/4t], MEM: 32GB, MB: Gigabyte H310N 2.0 なマシンに刺した.
一応下記のように認識してくれた.
01:00.0 Ethernet controller: Mellanox Technologies MT27520 Family [ConnectX-3 Pro]
っで双方のマシンで iperf3 を使った通信テストを実施してみた. ケーブルは上限40Gbpsのケーブル. 片方はfirewallを停止して「iperf3 -s」で待機させ
[root@c1 ~]# iperf3 -c 10.10.10.2
Connecting to host 10.10.10.2, port 5201
[ 5] local 10.10.10.1 port 34698 connected to 10.10.10.2 port 5201
[ ID] Interval Transfer Bitrate Retr Cwnd
[ 5] 0.00-1.00 sec 3.85 GBytes 33.0 Gbits/sec 0 1.56 MBytes
[ 5] 1.00-2.00 sec 3.90 GBytes 33.5 Gbits/sec 0 1.66 MBytes
[ 5] 2.00-3.00 sec 3.89 GBytes 33.4 Gbits/sec 0 1.78 MBytes
[ 5] 3.00-4.00 sec 3.86 GBytes 33.1 Gbits/sec 0 1.91 MBytes
[ 5] 4.00-5.00 sec 3.92 GBytes 33.7 Gbits/sec 0 1.91 MBytes
[ 5] 5.00-6.00 sec 3.93 GBytes 33.8 Gbits/sec 0 2.15 MBytes
[ 5] 6.00-7.00 sec 3.91 GBytes 33.6 Gbits/sec 0 2.15 MBytes
[ 5] 7.00-8.00 sec 3.91 GBytes 33.6 Gbits/sec 0 2.15 MBytes
[ 5] 8.00-9.00 sec 3.89 GBytes 33.4 Gbits/sec 0 2.15 MBytes
[ 5] 9.00-10.00 sec 3.81 GBytes 32.7 Gbits/sec 0 2.26 MBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.00 sec 38.9 GBytes 33.4 Gbits/sec 0 sender
[ 5] 0.00-10.00 sec 38.9 GBytes 33.4 Gbits/sec receiver
iperf Done.
[root@c1 ~]#
「iperf3 -c 10.10.10.2 -P 2」と多重で流したら最大 37.5 Gbits/sec まで届いた.
次に片方にSSD disk(/data,CT250MX500SSD1)を載せて nfs で共有をかけて dd による書き込み、読み込み速度を調べてみた
一応まずネットワークを介さないローカルにて測定してみた
dd if=/dev/zero of=/data/testfile bs=1G count=10 oflag=direct <-- (書き込み) 11GBの空ファイルを作って 506 MB/s の値がでた
dd if=/data/testfile of=/dev/null bs=1G count=10 iflag=direct <-- (読み込み) 11GBの空ファイルを読み込み 534 MB/s の値がでた
次にnfsクライアント側にて操作.
mount -t nfs -o vers=4,hard,sync,noac,actimeo=0 10.10.10.1:/data /data <-- sync,noac,actimeoをオプションに入れてnfsクライアント側のキャッシュを無効化
dd if=/dev/zero of=/data/testfile bs=1G count=10 oflag=direct <-- (nfs経由で書き込み) 398 MB/s
dd if=/data/testfile of=/dev/null bs=1G count=10 iflag=direct <-- (nfs経由で読み込み) 555 MB/s
nfsクライアント側での読み込みテストの際は、事前にnfsサーバ側でキャッシュをクリアすることを忘れずに
systemctl restart nfs-server
echo 3 > /proc/sys/vm/drop_caches
これを実行しないとキャッシュ経由で読み込みの値が出てくる.
ddの結果からすれば、読み込みのnfs経由での速度低下はあまりない. 書き込みが若干落ちるって感じでしょうか
次にrsyncでも転送速度を図ってみた
nfsクライアント側のsystem diskは nvme(WDC WDS250G1B0C-00S6U0) だが
dd if=/dev/zero of=/tmp/testfile bs=1G count=10 oflag=direct <-- (書き込み) 484 MB/s
dd if=/tmp/testfile of=/dev/null bs=1G count=10 iflag=direct <-- (読み込み) 890 MB/s
ここを使ってrsyncしてみた
mount -t nfs -o vers=4,hard,sync,noac,actimeo=0 10.10.10.1:/data /data
rsync -avh /tmp/testfile /data/testfile 42.04 M bytes/sec (nfsサーバへの書き込み)
rsync -avh /data/testfile /tmp/testfile2 278.96M bytes/sec (nfsサーバからの読み込み)
mount -t nfs 10.10.10.1:/data /data
rsync -avh /tmp/testfile /data/testfile 352.13M bytes/sec (nfsサーバへの書き込み)
rsync -avh /data/testfile /tmp/testfile2 499.54M bytes/sec (nfsサーバからの読み込み)
nfsオプションのasyncが効いている?って感じかな.
Mellanox connectX-3のカードがある. 非常に古いinfiniband/Ethernetカード.
lspciの出力で下記のように表示される
01:00.0 InfiniBand: Mellanox Technologies MT25408A0-FCC-QI ConnectX, Dual Port 40Gb/s InfiniBand / 10GigE Adapter IC with PCIe 2.0 x8 5.0GT/s In... (rev b0)
rockylinux9で使おうとしたらドライバーが提供されていない様子. https://network.nvidia.com/products/infiniband-drivers/linux/mlnx_ofed/
なので、ELRepoリポジトリで提供している「kmod-mlx4」を使ってみた.
[root@rockylinux9 ~]# cat /etc/redhat-release
Rocky Linux release 9.5 (Blue Onyx)
[root@rockylinux9 ~]# uname -r
5.14.0-503.14.1.el9_5.x86_64
[root@rockylinux9 ~]#
っとkernel versionを確認します
っで
[root@rockylinux9 ~]# wget https://mirror.rackspace.com/elrepo/elrepo/el9/SRPMS/kmod-mlx4-4.0-9.el9_5.elrepo.src.rpm
[root@rockylinux9 ~]# rpm -i kmod-mlx4-4.0-9.el9_5.elrepo.src.rpm
[root@rockylinux9 ~]# vi rpmbuild/SPECS/kmod-mlx4.spec
%{!?kmod_kernel_version: %define kmod_kernel_version 5.14.0-503.11.1.el9_5}
↓
%{!?kmod_kernel_version: %define kmod_kernel_version 5.14.0-503.14.1.el9_5}
[root@rockylinux9 ~]# dnf install kernel-abi-stablelists kernel-rpm-macros
[root@rockylinux9 ~]# rpmbuild -bb rpmbuild/SPECS/kmod-mlx4.spec
できたカーネルモジュールをインストール
[root@rockylinux9 ~]# dnf localinstall ./rpmbuild/RPMS/x86_64/kmod-mlx4-4.0-9.el9.x86_64.rpm
そうして
[root@rockylinux9 ~]# modprobe mlx4_en
[root@rockylinux9 ~]# modprobe ib_ipoib
[root@rockylinux9 ~]# ip link
:
3: ibp1s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 4092 qdisc fq_codel state DOWN mode DEFAULT group default qlen 256
link/infiniband 80:00:02:08:fe:80:00:00:00:00:00:00:00:02:c9:03:00:5a:9e:8d brd 00:ff:ff:ff:ff:12:40:1b:ff:ff:00:00:00:00:00:00:ff:ff:ff:ff
4: ibp1s0d1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 4092 qdisc fq_codel state DOWN mode DEFAULT group default qlen 256
link/infiniband 80:00:02:09:fe:80:00:00:00:00:00:00:00:02:c9:03:00:5a:9e:8e brd 00:ff:ff:ff:ff:12:40:1b:ff:ff:00:00:00:00:00:00:ff:ff:ff:ff
[root@rockylinux9 ~]#
[root@rockylinux9 ~]# systemctl start opensm
でデバイスが認識出ました. あとはnmtiでinfinibandとして登録すれば通信できます.
iperf3で2点間の通信速度を図ってみた. 「10.10.10.2」はもう一方の MHQH29B-XTR を持つマシン(rockylinux9)
[root@rockylinux9 ~]# iperf3 -c 10.10.10.2
Connecting to host 10.10.10.2, port 5201
[ 5] local 10.10.10.1 port 45320 connected to 10.10.10.2 port 5201
[ ID] Interval Transfer Bitrate Retr Cwnd
[ 5] 0.00-1.00 sec 3.05 GBytes 26.2 Gbits/sec 589 990 KBytes
[ 5] 1.00-2.00 sec 3.07 GBytes 26.3 Gbits/sec 733 774 KBytes
[ 5] 2.00-3.00 sec 3.07 GBytes 26.3 Gbits/sec 725 1004 KBytes
[ 5] 3.00-4.00 sec 3.07 GBytes 26.3 Gbits/sec 920 1.07 MBytes
[ 5] 4.00-5.00 sec 3.07 GBytes 26.4 Gbits/sec 536 846 KBytes
[ 5] 5.00-6.00 sec 3.06 GBytes 26.3 Gbits/sec 867 770 KBytes
[ 5] 6.00-7.00 sec 3.06 GBytes 26.3 Gbits/sec 637 792 KBytes
[ 5] 7.00-8.00 sec 3.07 GBytes 26.3 Gbits/sec 680 1.08 MBytes
[ 5] 8.00-9.00 sec 3.06 GBytes 26.3 Gbits/sec 715 1.12 MBytes
[ 5] 9.00-10.00 sec 2.99 GBytes 25.7 Gbits/sec 735 679 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.00 sec 30.6 GBytes 26.3 Gbits/sec 7137 sender
[ 5] 0.00-10.00 sec 30.6 GBytes 26.3 Gbits/sec receiver
iperf Done.
[root@rockylinux9 ~]#
多重にしても40Gbpsまでは届かなかった.