Кросспост из
блога автора. Комментировать лучше
там, но можно и тут
Я тут интересовался
про Infiniband и FreeBSD, теперь могу и сам рассказать :)
Datagram mode
Для начала нужна FreeBSD 9. У меня - какая-то, cvsup делал где-то в январе или около того.
Далее все тривиально:
/etc/make.conf:
WITH_OFED=yes
Конфиг ядра (в GENERIC это место не включено) /sys/amd64/conf/OFED:
include GENERIC
options OFED # Infiniband protocol stack and support
options SDP # Sockets Direct Protocol for infiniband
device ipoib # IP over IB devices
device mlx4ib # ConnectX Infiniband support
device mlxen # ConnectX Ethernet support
device mthca # Infinihost cards
У меня карты mthca, остальные два драйвера в моем случае вероятно не нужны.
Далее все просто:
cd /usr/src
make buildworld && make installworld # поставит IB-шный утиль, всякие ibstat и opensm
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-ом).
Бутимся....
ib_mthca0: HCA FW version 5.1.000 is old (5.3.000 is current).
ib_mthca0: If you have problems, try updating your HCA FW.
ib0: Attached to mthca0 port 1
ib1: Attached to mthca0 port 2
Фирмварь, да, надо поапгрейдить наверное....
Ну и прочего:
$ ibstat
CA 'mthca0'
CA type: MT25208
Number of ports: 2
Firmware version: 5.1.0
Hardware version: a0
Node GUID: 0x0002c9020021f814
System image GUID: 0x0002c9020021f817
Port 1:
State: Active
Physical state: LinkUp
Rate: 10
Base lid: 1
LMC: 0
SM lid: 1
Capability mask: 0x02510a6a
Port GUID: 0x0002c9020021f815
Port 2:
State: Active
Physical state: LinkUp
Rate: 10
Base lid: 6
LMC: 0
SM lid: 3
Capability mask: 0x02510a6a
Port GUID: 0x0002c9020021f816
$ ifconfig ib0
ib0: flags=8043 metric 0 mtu 2044
options=80018
lladdr 0.0.4.4.fe.80.0.0.0.0.0.0.0.2.c9.2.0.21.f8.15
inet 10.10.10.129 netmask 0xffffff80 broadcast 10.10.10.255
inet6 fe80::e2cb:4eff:fe35:15d7%ib0 prefixlen 64 scopeid 0xe
nd6 options=29
C виндой по IPoIB работает, самба на больших файлах ложится на ту полку, какую диски могут отдать (180-250MB/sec на запись, 200-320 на чтение, как звезды лягут и фрагментация на дисках).
Всякие iperf и подобное - пока не щупал, времени не было на это. Может быть, сегодня.
Тут
спрашивали про Linux, связка FreeBSD-Linux тоже работает, никаких проблем, пинги пингают, в интернет ходит, все остальное (втч. перформанс) не успел попробовать.
Короче, в Datagam mode проблем нет.
Connected mode
А вот с Connected mode все наоборот, добиться нормальной работы не удалось.
Добавляем в ядро:
options IPOIB_CM # Use connect mode ipoib
Собираем, ставим, перегружаемся.
MTU у интерфейсов становится правильным, 65520. Но счастья это не приносит, в логах и на консоли вот такое:
Feb 26 19:57:59 home-gw kernel: ib0: packet len 6416 (> 2044) too long to send, dropping
Feb 26 19:58:00 home-gw kernel: ib0: packet len 8684 (> 2044) too long to send, dropping
Feb 26 19:58:09 home-gw last message repeated 7 times
Feb 26 19:58:18 home-gw kernel: ib0: packet len 8723 (> 2044) too long to send, dropping
Рассматривание исходников какбэ говорит нам, что Connected Mode надо еще включить. В Linux это включается вот так:
echo connected >`find /sys -name mode | grep ib0`
В FreeBSD нету /sys. Правда есть sysctl sys.class, который весь про infiniband, но мне не удалось найти там ни строчки про Connected mode. Гугление пока тоже не дало результата, буду пробовать еще, равно как и читать исходники драйверов.
Пробовал, естественно, и ifconfig link0...link2 (больше в голову ничего не пришло), тоже не помогло.