Para ambas as máquinas:
- Ubuntu 20.04
- Placas Mellanox MT28908 ConnectX-6 em modo ethernet
- Módulo do kernel: mlx5_core (de MLNX_OFED_LINUX-24.04-0.6.6.0-ubuntu20.04-x86_64)
As placas ConnectX-6 são conectadas diretamente umas às outras usando um DAC Nvidia usando endereços RFC1918; ou seja, uma pequena rede de 2 nós. As máquinas são sistemas de montagem em rack de nível de servidor, com uma tendo uma CPU Intel Xeon Gold 5318Y e a outra 2 CPUs Intel Xeon Platinum 8358. Essas placas devem fornecer conectividade de 100 Gb/s. No entanto
root@zakynthos:~# iperf3 -c 192.168.101.1
Connecting to host 192.168.101.1, port 5201
[ 5] local 192.168.101.2 port 45974 connected to 192.168.101.1 port 5201
[ ID] Interval Transfer Bitrate Retr Cwnd
[ 5] 0.00-1.00 sec 3.17 GBytes 27.2 Gbits/sec 227 912 KBytes
[ 5] 1.00-2.00 sec 2.58 GBytes 22.1 Gbits/sec 1382 755 KBytes
[ 5] 2.00-3.00 sec 2.36 GBytes 20.3 Gbits/sec 2459 1.08 MBytes
[ 5] 3.00-4.00 sec 3.07 GBytes 26.4 Gbits/sec 3433 723 KBytes
[ 5] 4.00-5.00 sec 3.36 GBytes 28.9 Gbits/sec 3004 1.05 MBytes
[ 5] 5.00-6.00 sec 2.83 GBytes 24.3 Gbits/sec 1692 942 KBytes
[ 5] 6.00-7.00 sec 2.47 GBytes 21.2 Gbits/sec 1819 1022 KBytes
[ 5] 7.00-8.00 sec 3.03 GBytes 26.0 Gbits/sec 1578 841 KBytes
[ 5] 8.00-9.00 sec 3.37 GBytes 28.9 Gbits/sec 1920 1024 KBytes
[ 5] 9.00-10.00 sec 2.91 GBytes 25.0 Gbits/sec 1239 1.06 MBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.00 sec 29.1 GBytes 25.0 Gbits/sec 18753 sender
[ 5] 0.00-10.04 sec 29.1 GBytes 24.9 Gbits/sec receiver
Estou acostumado a ver o iperf3 entregar cerca de 90% da largura de banda nominal para uma placa, então para mim isso parece terrível e inaceitável. Alguém tem alguma ideia de por que não estou vendo pelo menos 80-90 Gb/s de desempenho aqui?
sistemas de montagem em rack de nível de servidor - o que são esses sistemas e especificamente em qual slot você conectou a NIC?
O MT28908 ConnectX-6 suporta PCIe 4.0 x16 com uma largura de banda teórica de até 252 Gbit/s - suficiente para 2x 100 GbE. No entanto, se esse slot suporta apenas, por exemplo, PCIe 3.0 x4 eletricamente ("x16 @ x4"), então a largura de banda cai para 31 Gbit/s com praticamente o resultado que você está vendo.
Outra possibilidade é uma configuração de memória ruim com apenas um canal (reconhecidamente improvável).
Verifique as especificações do seu servidor.
O problema era que a versão do iperf3 que vem com o Ubuntu 20.04 é incapaz de lidar com larguras de banda maiores que cerca de 25 Gb/s. Eu baixei e compilei a versão mais recente do iperf3 (que suporta a execução de fluxos paralelos) e a execução de 16 fluxos de cliente paralelos:
Consegui obter cerca de 98-99 Gb/s, o que é próximo o suficiente do máximo teórico para o cartão.