10G дома: Infiniband + FreeBSD

Feb 27, 2012 12:54


Кросспост из блога автора. Комментировать лучше там, но можно и тут

Я тут интересовался про Infiniband и FreeBSD, теперь могу и сам рассказать :) Datagram mode
Для начала нужна FreeBSD 9. У меня - какая-то, cvsup делал где-то в январе или около того.
Далее все тривиально:
/etc/make.conf:


  1. WITH_OFED=yes
Конфиг ядра (в GENERIC это место не включено) /sys/amd64/conf/OFED:


  1. include GENERIC

  2. options OFED # Infiniband protocol stack and support

  3. options SDP # Sockets Direct Protocol for infiniband

  4. device ipoib # IP over IB devices

  5. device mlx4ib # ConnectX Infiniband support

  6. device mlxen # ConnectX Ethernet support

  7. device mthca # Infinihost cards
У меня карты mthca, остальные два драйвера в моем случае вероятно не нужны.
Далее все просто:


  1. cd /usr/src

  2. make buildworld && make installworld # поставит IB-шный утиль, всякие ibstat и opensm

  3. make buildkernel KERNCONF=OFED && make installkernel KERNCONF=OFED

Что-то из этого добра (то ли userland IB-шный, то ли ядро) не собирается clang-ом, поэтому про CC=clang стоит забыть.
Если нужен Subnet manager (на другом конце линка/свитче его нет), то opensm_enable=YES в rc.conf (а если нету /etc/rc.d/opensm, то накатить его mergemaster-ом).
Бутимся....


  1. ib_mthca0: HCA FW version 5.1.000 is old (5.3.000 is current).

  2. ib_mthca0: If you have problems, try updating your HCA FW.

  3. ib0: Attached to mthca0 port 1

  4. ib1: Attached to mthca0 port 2
Фирмварь, да, надо поапгрейдить наверное....
Ну и прочего:


  1. $ ibstat

  2. CA 'mthca0'

  3.         CA type: MT25208

  4.         Number of ports: 2

  5.         Firmware version: 5.1.0

  6.         Hardware version: a0

  7.         Node GUID: 0x0002c9020021f814

  8.         System image GUID: 0x0002c9020021f817

  9.         Port 1:

  10.                 State: Active

  11.                 Physical state: LinkUp

  12.                 Rate: 10

  13.                 Base lid: 1

  14.                 LMC: 0

  15.                 SM lid: 1

  16.                 Capability mask: 0x02510a6a

  17.                 Port GUID: 0x0002c9020021f815

  18.         Port 2:

  19.                 State: Active

  20.                 Physical state: LinkUp

  21.                 Rate: 10

  22.                 Base lid: 6

  23.                 LMC: 0

  24.                 SM lid: 3

  25.                 Capability mask: 0x02510a6a

  26.                 Port GUID: 0x0002c9020021f816

  27. $ ifconfig ib0

  28. ib0: flags=8043 metric 0 mtu 2044

  29.         options=80018

  30.         lladdr 0.0.4.4.fe.80.0.0.0.0.0.0.0.2.c9.2.0.21.f8.15

  31.         inet 10.10.10.129 netmask 0xffffff80 broadcast 10.10.10.255

  32.         inet6 fe80::e2cb:4eff:fe35:15d7%ib0 prefixlen 64 scopeid 0xe

  33.         nd6 options=29
C виндой по IPoIB работает, самба на больших файлах ложится на ту полку, какую диски могут отдать (180-250MB/sec на запись, 200-320 на чтение, как звезды лягут и фрагментация на дисках).
Всякие iperf и подобное - пока не щупал, времени не было на это. Может быть, сегодня.
Тут спрашивали про Linux, связка FreeBSD-Linux тоже работает, никаких проблем, пинги пингают, в интернет ходит, все остальное (втч. перформанс) не успел попробовать.
Короче, в Datagam mode проблем нет. Connected mode
А вот с Connected mode все наоборот, добиться нормальной работы не удалось.
Добавляем в ядро:


  1. options IPOIB_CM # Use connect mode ipoib
Собираем, ставим, перегружаемся.
MTU у интерфейсов становится правильным, 65520. Но счастья это не приносит, в логах и на консоли вот такое:


  1. Feb 26 19:57:59 home-gw kernel: ib0: packet len 6416 (> 2044) too long to send, dropping

  2. Feb 26 19:58:00 home-gw kernel: ib0: packet len 8684 (> 2044) too long to send, dropping

  3. Feb 26 19:58:09 home-gw last message repeated 7 times

  4. Feb 26 19:58:18 home-gw kernel: ib0: packet len 8723 (> 2044) too long to send, dropping
Рассматривание исходников какбэ говорит нам, что Connected Mode надо еще включить. В Linux это включается вот так:


  1. echo connected >`find /sys -name mode | grep ib0`
В FreeBSD нету /sys. Правда есть sysctl sys.class, который весь про infiniband, но мне не удалось найти там ни строчки про Connected mode. Гугление пока тоже не дало результата, буду пробовать еще, равно как и читать исходники драйверов.
Пробовал, естественно, и ifconfig link0...link2 (больше в голову ничего не пришло), тоже не помогло.

10G и Infiniband, linux, infiniband, Разное, freebsd

Previous post Next post
Up