10G дома: Infiniband + FreeBSD

Feb 27, 2012 12:54


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

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


  1. WITH_OFED=yes
Конфиг ядра (в GENERIC это место не включено ( Read more... )

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

Leave a comment

Comments 13

_slw February 27 2012, 09:17:43 UTC
первая ссылка в гугле говорит

options IPOIB_CM # Use connect mode ipoib

Reply

_slw February 27 2012, 09:18:16 UTC
а, плохо читал

Reply


_slw February 27 2012, 09:31:02 UTC
судя по сырцам CM должна включаться при ините девайса, если поддержка есть.

ключевые слова

ipoib_transport_dev_init, ipoib_cm_dev_init, IPOIB_FLAGS_RC

Reply


_slw February 27 2012, 10:14:17 UTC
я не очень внимательно сырцы посмотрел, то похоже эта ошибка исключительно от mtu.
причем в двух местах, в одном от mcast_mtu.

которое как-то сложно ставится. похоже оно после добавлерния порта не меняется.

Reply


_slw February 27 2012, 12:23:09 UTC
в /usr/src/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_main.c есть такой кусок:

if (ipoib_cm_get(path) && ipoib_cm_up(path)) {
ipoib_cm_send(priv, mb, ipoib_cm_get(path));
} else if (path->ah) {
ipoib_send(priv, mb, path->ah, IPOIB_QPN(eh->hwaddr));
} else if ((path->query || !path_rec_start(priv, path)) &&
path->queue.ifq_len < IPOIB_MAX_PATH_REC_QUEUE) {
_IF_ENQUEUE(&path->queue, mb);
} else {
++priv->dev->if_oerrors;
m_freem(mb);
}

ipoib_send проверяет по mcast_mtu, ipoib_cm_send -- по нормальному mtu, но диагностика у них одинаковая. поправь в сырцах что бы было понятно кто ругается. после этого можно попытаться понять чего не хватает -- path в cm, CM_REP_ATTR_ID от винды (если я правильно понял)

Reply

alextutubalin February 27 2012, 13:16:04 UTC
По моим ощущениям (сугубо музыкой навеяных), не хватает ему ipoib_cm_up

Проверять буду, но постепенно, сервер то боевой.

Reply

alextutubalin February 27 2012, 15:08:42 UTC
Напихал я туда отладочной печати. Вот в этом месте (ipoib_main.c)
if (ipoib_cm_get(path) && ipoib_cm_up(path)) {
ipoib_cm_send(priv, mb, ipoib_cm_get(path));
} else if (path->ah) {

ipoib_cm_up(..) возвращает 0

А дальше я там запутался. Т.е. докопался до того, что должен прийти event CM_REQ_RECEIVED, только вот кто должен бы его послать?
на винде up-down интерфейсу делал - не помогает.

Пока наплевал, в-общем.

Reply

_slw February 27 2012, 15:29:28 UTC
идиотское предположение -- а не следует ли после изменения MTU рестартовать opensm?
ну и MTU на винде не надо трогать?

Reply


Leave a comment

Up