Los motivos de la elección de Infiniband por encima de otras opciones pueden ser la alta tasa de transferencia (10, 20 o incluso más Gbps), la baja latencia, el bajo precio si nos decidimos por hardware de segunda mano (comparado p.ej. con 10GbE) y la posibilidad de hacerlo funcionar con el protocolo ip (IPoIB / IP over Infiniband). Algún que otro inconveniente puede ser que la rigidez de los cables puede complicar la instalación y que no hay instrucciones claras -o no las supe encontrar- de cómo echarlo a andar. Así pues, vamos al lio. Las tarjetas que cayeron en nuestras manos fueron unas Mellanox MT25418.
# lspci 07:00.0 InfiniBand: Mellanox Technologies MT25418 [ConnectX VPI PCIe 2.0 2.5GT/s - IB DDR / 10GigE] (rev a0) # dmesg | grep -i mlx4 [ 4.500835] mlx4_core: Mellanox ConnectX core driver v1.0 (July 14, 2011) [ 4.500839] mlx4_core: Initializing 0000:07:00.0 [ 4.500889] mlx4_core 0000:07:00.0: setting latency timer to 64 [ 6.492856] mlx4_core 0000:07:00.0: irq 84 for MSI/MSI-X [ 6.492864] mlx4_core 0000:07:00.0: irq 85 for MSI/MSI-X [ 6.492873] mlx4_core 0000:07:00.0: irq 86 for MSI/MSI-X [ 6.492879] mlx4_core 0000:07:00.0: irq 87 for MSI/MSI-X [ 6.492887] mlx4_core 0000:07:00.0: irq 88 for MSI/MSI-X [ 6.492894] mlx4_core 0000:07:00.0: irq 89 for MSI/MSI-X [ 6.492901] mlx4_core 0000:07:00.0: irq 90 for MSI/MSI-X [ 6.492907] mlx4_core 0000:07:00.0: irq 91 for MSI/MSI-X [ 6.492914] mlx4_core 0000:07:00.0: irq 92 for MSI/MSI-X [ 6.492921] mlx4_core 0000:07:00.0: irq 93 for MSI/MSI-X [ 6.492928] mlx4_core 0000:07:00.0: irq 94 for MSI/MSI-X [ 6.492935] mlx4_core 0000:07:00.0: irq 95 for MSI/MSI-X [ 6.492942] mlx4_core 0000:07:00.0: irq 96 for MSI/MSI-X [ 6.492949] mlx4_core 0000:07:00.0: irq 97 for MSI/MSI-X # lsmod | grep mlx mlx4_core 78702 0 # modprobe ib_ipoib mlx4_en mlx4_ib # aptitude install opensm # Bien consultando /sys, p.ej. consultando el modo de conexión Infiniband: # cat /sys/class/net/ib0/mode datagram # cat /sys/class/net/ib1/mode datagram # Bien instalando el siguiente paquete: # apt-get install infiniband-diags # ibstat ibwarn: [8624] umad_init: can't read ABI version from /sys/class/infiniband_mad/abi_version (No such file or directory): is ib_umad module loaded? ibpanic: [8624] main: can't init UMAD library: (No such file or directory) # En éste caso nos falta cargar otro módulo: # modprobe ib_umad # Ahora sí: # ibstat CA 'mlx4_0' CA type: MT25418 Number of ports: 2 Firmware version: 2.6.0 Hardware version: a0 Node GUID: 0x001a4bffff0cf264 System image GUID: 0x001a4bffff0cf267 Port 1: State: Active ('Initializing' si no está instalado opensm!) Physical state: LinkUp Rate: 20 Base lid: 2 ('0' si no está instalado opensm!) LMC: 0 SM lid: 1 ('0' si no está instalado opensm!) Capability mask: 0x0251086a ('0x02510868' si no está instalado opensm!) Port GUID: 0x001a4bffff0cf265 Port 2: State: Down Physical state: Polling Rate: 8 Base lid: 0 LMC: 0 SM lid: 0 Capability mask: 0x02510868 Port GUID: 0x001a4bffff0cf266 # ibhosts Ca : 0x001a4bffff0c22b8 ports 2 "MT25408 ConnectX Mellanox Technologies" Ca : 0x001a4bffff0cf264 ports 2 "MT25408 ConnectX Mellanox Technologies" # apt-get install ofed-docs # dpkg -S ofed-docs ofed-docs: /usr/share/doc/ofed-docs/DEBIAN-HOWTO/infiniband-howto.txt.gz ofed-docs: /usr/share/doc/ofed-docs/DEBIAN-HOWTO/infiniband-howto-6.html ofed-docs: /usr/share/doc/ofed-docs/mpi-selector_release_notes.txt ofed-docs: /usr/share/doc/ofed-docs/copyright (...) # zless /usr/share/doc/ofed-docs/ipoib_release_notes.txt.gz De la misma, sacamos un poco de tunning con sysctl, si bien aparentmente no marca ninguna diferencia: # sysctl -p net.ipv4.tcp_timestamps = 0 net.ipv4.tcp_sack = 0 net.core.netdev_max_backlog = 250000 net.core.rmem_max = 16777216 net.core.wmem_max = 16777216 net.core.rmem_default = 16777216 net.core.wmem_default = 16777216 net.core.optmem_max = 16777216 net.ipv4.tcp_mem = 16777216 16777216 16777216 net.ipv4.tcp_rmem = 4096 87380 16777216 net.ipv4.tcp_wmem = 4096 65536 16777216 # iperf -c 10.99.99.4 ------------------------------------------------------------ Client connecting to 10.99.99.4, TCP port 5001 TCP window size: 649 KByte (default) ------------------------------------------------------------ [ 3] local 10.99.99.3 port 55727 connected with 10.99.99.4 port 5001 [ ID] Interval Transfer Bandwidth [ 3] 0.0-10.0 sec 13.1 GBytes 11.3 Gbits/sec # iperf -c 10.99.99.4 ------------------------------------------------------------ Client connecting to 10.99.99.4, TCP port 5001 TCP window size: 649 KByte (default) ------------------------------------------------------------ [ 3] local 10.99.99.3 port 55728 connected with 10.99.99.4 port 5001 [ ID] Interval Transfer Bandwidth [ 3] 0.0-10.0 sec 13.3 GBytes 11.4 Gbits/sec # iperf -s ------------------------------------------------------------ Server listening on TCP port 5001 TCP window size: 85.3 KByte (default) ------------------------------------------------------------ [ 4] local 10.99.99.4 port 5001 connected with 10.99.99.3 port 55727 [ ID] Interval Transfer Bandwidth [ 4] 0.0-10.0 sec 13.1 GBytes 11.3 Gbits/sec [ 5] local 10.99.99.4 port 5001 connected with 10.99.99.3 port 55728 [ 5] 0.0-10.0 sec 13.3 GBytes 11.4 Gbits/sec Referencias: http://blog.maumene.com/installing-the-mlx4-ib-driver-for-infiniband-on-debian-squeezehttp://inqbus-hosting.de/support/dokumentation/docs/debian-infiniband-howto http://pkg-ofed.alioth.debian.org/howto/infiniband-howto-5.html#ss5.4 https://www.kernel.org/doc/Documentation/infiniband/ipoib.txt Comentarios (0) |