Infiniband

Q: Mellanox Infinihost + Windows 8 + SRP?

Граждане читатели!

Вот у меня задуман переход на Win 8.1 (в процессе задуманного апгрейда монитора). А дисковая полка то у меня - по Infiniband+SRP подключена.

Про..этосамое сегодня полдня, вот на таких граблях:

  • WinOFED 4.x (от которого опенсорса не могу найти, брал с сайта Mellanox) - совместим с Win8, но не содержит драйверов Mellanox Infinihost. Только ConnectiX.
  • WinOFED 3.2, который у меня на Win7 работает: не ставится на Win8, там проверка версии во встроенном скрипте (а не в параметрах MSI, их я умею снять)
  • WinOFED 2.1 - ставится на Win8 (проверки в скрипте нет), с виду работает, но там нету SRP (точнее, в релнотесах написано что есть бета, но следов этой беты не видно)
И как жить? Все бросить и собрать WinOFED3 самому? Я даже начал, но он захотел WIX, потом Windows DDK (WDK), потом Windows SDK6.1 и вот на стадии SDK я сломался (у меня его нету из принципа, чтобы с SDK от Win8 не дрался).

Может кто решал проблему и решил?

Аналогичная проблема должна быть на Windows Server 2012, если вдруг у вас есть для нее драйвера Infinihost+SRP - поделитесь пожалуйста!

P.S. Я могу и на IPoOB + iSCSI пожить, но SRP сильно веселее....

О новых технологиях

Со страху заменил оставшиеся в сторадж-боксе старые сигейтовские SAS-овские терабайтники (2008-го года) на терабайтные же WD RE4 (SATA). Старые - пусть дискетками поработают.

Результат:

  • +10% к трансфер рейту, было ~630-650Mb/sec на чтение-запись, стало 720-730.
  • Минус 10 градусов к температуре, старые диски грелись до ~42C, нагревая соседей до 35, а теперь 30 градусов, при том что в комнате 22, а ящик стоит в шкафу, который висит на теплой стене).

Чтобы два раза не вставать: в этом же ящике с середины сентября живет 400-ваттный безвентиляторный БП Seasonic. Впечатления самые благоприятные: хрен с ним с шумом, этот питальник холодный. Понятно что гружу я его отсилы ватт на 200 (8x10вт диски, 65вт. CPU, карточки тоже теплые, а значит жрут, вентиляторы крутятся), но 500-вт Thermaltake, который там стоял до того, грелся при такой нагрузке вполне самостоятельно.

Стоит этот питальник неприлично, но если бороться за тишину или температуру, то он - хороший. Во второй сервер купил такой же, потому что тамошний Zalman тоже противно греется.

Домашний стораджбокс: производительность iSCSI/SRP, FreeBSD/Linux

Как и обещал, привожу результаты тестирования перформанса нового дискового ящика.

Помня о весенних результатах (когда тестировался доступ по Infiniband к RAM-диску), я не стал тратить много времени на Samba (хотя и померял, см. ниже) и вдумчиво тестировал только iSCSI/SRP варианты.

Hardware

Клиент: Intel i7-2600K без оверклока, 16Gb RAM (DDR3-1600), Windows7. Файрволл выключен, антивирус деинсталлирован (с антивирусом получается весело, но результаты невоспроизводимы).

Сервер: Intel i5-2400 без оверклока, 8GB RAM, Adaptec ASR-5805, 6x Seagate Barracuda ES.2 SAS 1Tb + 2 WD RE4 SATA 1Tb, объединены в RAID-6 (контроллер ругается, что SAS и SATA смешаны в одном томе, а мне плевать).

Сеть: Mellanox Infinihost Ex III (MHEA28-XTC), 10(8) Gbit/s, две карты соединены кабелем.

Сетевые протоколы: iSCSI (по IPoIB), SRP (SCSI RDMA Protocol).

Серверный софт:

  1. Ubuntu Server 12.04, драйвера Infiniband и iscsitarget из поставки, scst из гнезда (trunk), при установке scst ядро патчилось согласно инструкции.
  2. FreeBSD 9.1 Prerelease (свежий cvsup), istgt из портов.
SRP поддерживается только scst, остальные два варианта работали по iscsi.

Клиентский софт: iSCSI initiator из комплекта Win7. Infiniband SRP Initiator из комплекта Infiniband-драйверов openfabrics.org (OFED 3.1).

IPoIB Connected Mode у OFED 3.1 работает только Windows-Windows (в 3.0 работало Windows-Linux). Возможно, причина не в Windows-стороне, а в других драйверах с Linux-стороны, детально не разбирался, жил с MTU 2044.

Про Infiniband и FreeBSD (again)

Все-таки Infiniband на линке FreeBSD-FreeBSD получается какой-то очень мучительный:

  • Datagam Mode - устойчиво теряет несколько процентов пакетов на ping -f (icmplim, естественно, задран до небес, разрешающее правило в ipfw - первое). Ну и всякие iperf работают в лучшем случае на гигабит, а обычно и меньше.
  • Connected Mode на первый взгляд лучше: packet loss 0%, гигабитов эффективных примерно 5, но:
    • Установить эту самую Connected Mode между двумя машинами получается не с первого раза. Иногда надо ifconfig down сказать, иногда хватает с одной стороны, иногда надо с двух.
    • Могучий tcp-поток с одной из моих машин на вторую (ftp get /dev/zero /dev/null) может отправить ее в ребут или просто в транс. При этом в другую - все в порядке и я даже zfs send/zfs receive на 6Tb в середине недели успешно исполнил.
При этом на тех же картах, портах, кабелях связка FreeBSD - Windows работает отлично и tcp-потоки никого никуда не отправляют. Но только в Datagram Mode. С нулем потеряных пакетов. Я уже вторую неделю так живу на своей WS, ни одного Ethernet, только IB (только хардкор!).

Да, попытка поднять Connected Mode между FreeBSD и Windows один раз таки удалась. После каких-то перезагрузок, подниманий-опусканий интерфейса и т.п. При этом отвалились пинги с Windows, а вся конструкция прожила минут 20, а потом FreeBSD-шная сторона перезагрузилась.

Не исключено, конечно, что какое-то железо где-то как-то криво, но с Windows все, повторяю, работает.

Такие вот вести с полей.

Про Infiniband FreeBSD-FreeBSD

Тут спрашивали, как работает IB с FreeBSD на FreeBSD.

Вкратце: очень странно работает. Но байты ходят, достаточно быстро, пользоваться можно.

Сначала мне не удалось ЭТО завести (при том, что линк FreeBSD-Windows7 на тех же картах, портах и драйверах работает прекрасно). Но тут удачно подсказали в комментариях, что это место обновилось.

Ну значит csup && make buldworld && make buildkernel, перезагружаемся и оно работает. При этом

  • При неудачном стечении светил, оно может работать в одну сторону (в одну сторону пинги ходят, в другую - нет), лечится down/up интерфейса. Это у меня было в Datagram mode, пару раз.
  • Connected Mode между двумя FreeBSD - поднялась. Пинги ходят, байты тоже, о производительности ниже. MTU работает и 16k (как уже обсуждали) и 65520 - тоже.
  • Connected Mode между FreeBSD и Windows так и не починилась. Возможно, надо перегрузить (в каком-то порядке) обе машины и я еще буду пробовать, но пока симптомы те же, что и в прошлый раз (слишком большой пакет, не будем слать). Лечится установкой mtu 2044 на FreeBSD-шной стороне.
Производительность:

10G дома: Infiniband + FreeBSD

Я тут интересовался про 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-ом).

Бутимся....

10G дома: Infiniband, Linux, Samba, iSCSI, SRP

Для начала картинка. Это SRP (SCSI RDMA Protocol), поднятый на Linux, клиент - Windows 7.

Если сравнивать с картинкой для iSCSI поверх Myricom (вторая картинка в этом посте), то выросла скорость на мелких блоках и нет падения на блоках больше 256к.

Но по порядку.

10G дома: Infiniband, Windows-SMB

Продолжаю потихоньку упражняться с 10G, вынул Myricom, вставил IB. Все под виндой, до Linux+IB руки только на выходных дойдут.

Для начала - завлекательная картинка:

На самом деле, я и слегка за 1Gb/sec видел, чего не должно бы быть (реальных гигабит данных 8 ровно), спишем на точность подсчета виндой.

Под катом: как оно было получено и что было получено еще.

10G дома: IB performance

На всплывавший ранее вопрос "а потянет ли PCIe 1.0 8x два порта Infiniband" ответить не могу, ибо кабель на руках пока один. Один порт тянет:

                    RDMA_Read Bidirectional BW Test
Connection type : RC
  local address:  LID 0x200, QPN 0x8042600, PSN 0xd0710000, RKey 0x3100f6 VAddr 0x00000000f60040
  remote address: LID 0x100, QPN 0x8041c00, PSN 0x982e0000, RKey 0x3100b6 VAddr 0x00000001060040
Mtu : 2048
------------------------------------------------------------------
 #bytes #iterations    BW peak[MB/sec]    BW average[MB/sec]  
      2        1000               0.79                  0.75
      4        1000               1.81                  1.51
      8        1000               3.38                  3.00
     16        1000               8.44                  6.02
     32        1000              12.67                 12.02
     64        1000              25.33                 23.41
    128        1000              67.55                 44.28
    256        1000             108.09                 81.34
    512        1000             170.66                164.09
   1024        1000             432.35                323.87
   2048        1000             720.58                660.57
   4096        1000            1127.86               1107.30
   8192        1000            1572.17               1485.81
  16384        1000            1729.38               1712.38
  32768        1000            1804.58               1797.25
  65536        1000            1844.68               1836.56
 131072        1000            1857.06               1856.84
 262144        1000            1867.50               1866.47
 524288        1000            1872.77               1871.86
1048576        1000            1874.88               1874.69
2097152        1000            1876.21               1876.13
4194304        1000            1876.87               1876.80
8388608        1000            1877.20               1877.18
------------------------------------------------------------------

Это двунаправленный BW, один поток туда, другой - обратно, одновременно. Я щетаю, 7.5Gbit/s payload в одну сторону (из теоретических 8.0) - это вполне нормально.

Заодно понятна польза Jumbo Frames на Ether, особливо на 10G.

Под катом Latency:

10G дома: первые успехи

Как я и предполагал в предыдущем посте на тему, дело было в бобине кривом кабеле (а чего я хотел за $16 без доставки...).

Не сдержался, купил 3-метровый D-Link в московской рознице, руки то чешутся.

Все практически мгновенно завелось, с одной тонкостью, результат вполне бодрый:

ttcp PID=0x1e20 TID=0xd60
ttcp -t: buflen=65000, nbuf=10000, align=16384/0, port=5001  tcp  -> 10.1.1.2
ttcp -t: 650000000 bytes in 718.00 real MilliSeconds = 863.35 MByte/sec +++
ttcp -t: 10000 I/O calls, msec/call = 0.07, calls/sec = 13927.58

Это Connected Mode, MTU 65520, размер пакета - 65000 для ровного счета. Windows - Windows.

А помянутая выше тонкость простая: если нет свитча, то Subnet Manager надо запускать до того, как воткнута карта. Без этого оно о скорости договаривается не всякий раз правильно, бывают и те 1x, которые меня мучали в прошлый раз.

И, сюрприз, IPoIB прекрасно работает при 4x, но не работает на 1x. Хотя Infiniband-пакеты успешно ходят на обеих скоростях.

Плотно займусь рассмотрением скоростей (самба, iscsi, SRP) - не раньше выходных, пока RawDigger не дает отвлечься. C FreeBSD, вероятно, тоже будут приключения.

10G дома: 6 букв, вторая "и"

Приехали первые (короткие) CX4-кабели и я начал поднимать Infiniband прямо на столе (до сервера эти кабели не дотянутся).

Собственно, исходно я клюнул на IB из соображений поразвлечься. Имею сказать, что развлекся я уже по полной программе, эти $69 себя уже окупили полностью.

Две машины, Win 7 x64 и Ubuntu 11.10.

Ставим драйвера (OFED 3.0 под Windows, драйвера из поставки в Убунте, кажется это Linux OFED 1.4.x), всовываем кабель, запускаем opensm, имеем в первом приближении счастье: PORT_ACTIVE

Во втором приближении - тоже счастье, ibping работает.

В третьем приближении - несчастье. IPoIB - не работает. И Win-Win и Win-Linux ситуация одинаковая, под Win-Win пробовал кроме OFED 3.0, еще и 2.3 и родной Mellanox-овский стек 2.1.2. Во всех случаях ping не пингает, причем из порта (по данным tcpdump) ничего не вылезает.

Присматриваюсь повнимательнее, вижу что вместо LinkWidth 4X имею 1X.

Q: Infiniband timeout

А вот, я извиняюсь, вопрос (на мое предложение никто толком не откликнулся, приходится зарабатывать эти деньги самому). Дано:

  • Infiniband-switch (на шасси Blade-сервера), Mellanox-какой-то там, OEM (SuperMicro, если это существенно).
  • 12 blade-серверов, воткнутых в этот свитч каким-то внутренним коннектом. На серверах карты Mellanox ConnectX-какой-то, по одной штуке на сервер.
  • И еще один внешний сервер, с двухпортовой IB-картой, тоже Mellanox.
  • На всем этом стоит CentOS 5.4 с OFED-1.5.3
IB используется только для (Open)MPI, никакого IPoverIB нету, для IP - отдельная 10G/1G-сеть.

Все включилось и заработало как-то само, ну вот только OpenSM запустили, так и завелось. И, в-общем, работает, НО:

Периодически, собственно при запуске HPL на всех узлах кластера, узлы отваливаются. Не каждый раз, не один и тот же узел, но все-равно раздражает ужасно. Сообщение всегда одно и то же: The InfiniBand retry count between two MPI processes has been exceeded (и далее - длинный рассказ где чинить). Значения таймаута - стандартные.

Вопрос, собственно, простой: это обычное поведение при default-таймаутах и маленьком кластере или мне надо, вместо увеличения таймаута, искать проблемы (обновлять драйвера, тыкать блейды в другие слоты и т.п.)? Update: после перетыкания проблемных блейдов местами - проблема ушла. Наука о контактах!

Q: Infiniband и FreeBSD

Читаю тут Гугл про Infiniband (по случаю вчерашнего поста) и внезапно выяснил, что 2-портовые карты на eBay продаются вообще по $22 (+ доставка, две карты получаются чуть меньше $100)

Так как я давно вынашиваю мысль поднять дома линк быстрее 1Gbit/s на небольшом пятачке вокруг рабочего стола, я сильно возбудился. Но есть вопросы:

  1. Верно ли я понимаю, что CX4-кабель для Ethernet и Infiniband MicroGigaCN (как его называет Mellanox) и просто банальный 4xSAS (SFF-8470) - это все одно и то же?
  2. Есть ли драйвера для Mellanox Infiniband под FreeBSD9? Или таки светит мне Linux на NAS?
  3. Верно ли я понимаю, что взяв три 2-портовые карты (1-портовых нету) я могу 3 машины соединить в P2P-сеть и внутри каждой пары будут искомые 10G (после вычета оверхеда - 8G data)? В каждой паре заведу свою IP-подсеть, роутинга не надо. Что в такой конструкции будет с subnet manager, можно ли OpenSM-у сказать "этот интерфейс не твой"?

А вот кто хочет кластер понастраивать?

Граждане читатели!

У дружественной мне компании-интегратора есть задача: они поставили заказчику железо в виде blade-сервера, в каждом блейде есть infiniband, на шасси - infiniband-свитч. Все вместе - маленький вычислительный кластер, я так понял что 12 блейдов, наверное 24 процессора, всего ядер получается пара-тройка сотен. Никаких GPU нету, чистый CPU-кластер.

Нужно: провести какую-то настройку этого дела, взгромоздить туда MPI (не знаю какой), запустить HPL и продемонстрировать, что все работает и с какой-то разумной скоростью считает. Получать безумную эффективность не надо, работает, масштабируется как-то - и прекрасно.

Естественно, не бесплатно.

Если вы на практике имели дело с (начальной) настройкой чего-то подобного и имеете желание подработать день-другой (ну я не знаю сколько там надо на самом деле), пишите мне на lexa@lexa.ru и я вас дальше сконнекчу.

По датам это, ориентировочно, нужно в середине следующей недели, вторник-четверг.

P.S. Дефолт-сити.

P.P.S. Обратились, собственно, ко мне, но я не настоящий сварщик и вот прямо в данное время не хочу/не могу учиться за счет заказчика, не до того.

P.P.P.S. Спасибо за советы "какой готовый дистрибутив взять", но я пытаюсь решить другую задачу: не найти удочку, а нанять умелого рыбака.

Subscribe to Infiniband