@ Карта сайта News Автора!

Bog BOS: hardware:  InfiniBand

Последнее изменение файла: 2018.01.20
Скопировано с www.bog.pp.ru: 2024.11.23

Bog BOS: hardware: InfiniBand

InfiniBand Architecture (IBA) - это стандарт (версия 1.0 принята в октябре 2000, версия 1.0a - в июне 2001, версия 1.2 - в сентябре 2004), определяющий архитектуру и спецификации на передачу данных между процессорами и интеллектуальными устройствами ввода/вывода с помощью соединений точка-точка и коммутаторов на небольших расстояниях (до 300 метров). Продвигается InfiniBand Trade Association (объединение Future I/O (IBM) и Next Generation I/O (Intel)). Предполагался в 2000 году для замены шины PCI, Ethernet, FC, SCSI и межпроцессорных каналов (Myrinet, SCI), однако не получилось: на замену PCI/PCI-X пришла PCI Express (3GIO), Ethernet ускорился до 10Gbps, к FC присоединились SAS и iSCSI, а процессоры теперь соединяются с помощью HyperTransport и QPI. Intel отказался встраивать InfiniBand в ЦП, а IBM прекратила разработки микросхем InfiniBand в 2002 году. Попытка использовать InfiniBand для виртуализации ввода/вывода и объединения фрагметов сетей, основанных на различных технологиях, в общую инфраструктуру также не удалась. Рынок ожил после покупки разрабочика коммутаторов Topspin фирмой Cisco в 2005 году. Другие игроки: Mellanox, Voltaire (переключилась на Ethernet?), QLogic (купил SilverStorm Technologies, ранее Infinicon) - Infiniband бизнес продан Intel. Нашёл применение для сборки кластеров (Cluster Interconnect) и blade-серверов (Mellanox: коммутатор в формате лезвия вставляется в общее шасси, обычные лезвия подключаются к нему на задней панели шасси, дополнительные устройства подключаются к коммутатору через порты). Низкие задержки (1 мкс), большая скорость (QDR x4 - 40Gbps), поддержка RDMA и передачи сообщений, разгрузка ЦП (интерфейс с ПО на транспортном уровне), защита памяти и трансляция адресов, виртуальные каналы с приоритетами, предотвращение переполнения буфера приёмника на основе системы "кредитов". Open Fabrics Enterprise Distribution (OFED) - универсальное ПО для Linux - разрабатывается Open Fabrics Alliance. Новая угроза: Converged Enhanced Ethernet (CEE) - Ethernet без потери пакетов (уже переметнулась Voltaire). Список "проверенных" устройств состоит из чипов для HCA от Mellanox и Qlogic, а в списке коммутаторов - чипы только от Mellanox.

Архитектура

Адаптер HCA (InfiniBand Host Channel Adapter) соединяет компьютер(ы) с канальным коммутатором InfiniBand (типа "cut through", т.е. пакет передаётся немедленно без буферизации), к которому подключаются другие адаптеры, дисковые хранилища и сетевые коммутаторы через TCA (InfiniBand Target Channel Adapter). HCA можно напрямую соединить с другим HCA или TCA. IB устройство - микросхема, реализующая IB-совместимый интерфейс. Коммутаторы могут каскадироваться. IB-фабрика (IB Fabric, Cluster, Subnet) может также содержать маршрутизаторы (соединяют подсети), повторители, средства управления (Subnet Manager, SM, обязан быть, т.к. управление фабрикой централизованно, возможно резервирование - главный (Master) и резервный (Standby) SM, хранит репозиторий топологии) и администрирования (Subnet Administration, SA, интерфейс к SM), установления соединений (Communication management), измерения производительности, управления устройствами, SNMP туннель. Управление по IB (In-Band) и по дополнительному каналу Ethernet или I2C (Out-of-Band). SM одной из подсетей может быть назначен главным SM для всей сети: определение, инициализация, конфигурирование и контроль устройств и соединений. SM может быть встроен в коммутатор или быть реализован программно (платный фирменный или открытый OpenSM - часть OpenFabrics).

Выделены уровни протокола: физический, канальный, сетевой, транспортный.

Адаптер может иметь несколько портов. Порт может поддерживать 1, 4 или 12 каналов (используется для связи между коммутаторами). Каналы дуплексные, соединения типа "точка-точка". Канальное кодирование - 8B/10B. Базовая сигнальная скорость одного канала в каждую сторону - 2500 Mbps (скорость передачи данных - 2 Gbps). Кроме базовой скорости (SDR, Single Data Rate) имеются порты DDR (Double Data Rate) и QDR (Quadruple Data Rate). Медные с разъёмами CX4 (4 провода, Unequalized или Limiting Active или Linear Active (?), разъём SFF-8470 (используется в SAS для соединения с внешними дисковыми массивами), до 20 метров для x4 SDR, до 10 метров для x12 SDR, до 10 метров для x4 DDR, до 5 метров для x4 QDR) или QSFP и оптические (многомодовый - до 200/150 метров для x4, одномодовый - до 10 км) кабели. Возможно также использование печатных проводником (? см).

Предотвращение переполнения буфера приёмника на основе системы "кредитов" на канальном уровне (передача не начнётся пока в приёмном буфере не будет достаточно места). Качество обслуживания (QoS) поддерживается на канальном уровне с помощью выделения до 15 виртуальных каналов, которым можно назначать различные приоритеты. Буфер и механизм управления потоком приписывается к виртуальному каналу. Для управляющего трафика выделен отдельный виртуальный канал, что защищает его от блокировки.

Каждый адаптер имеет уникальный GUID (назначается изготовителем). Каждый порт адаптера имеет уникальный для подсети адрес (local ID, LID), назначается SM. Коммутатор содержит таблицу соответствия между своими портами и LID (LFT, Unicast Linear Forwarding Tables). MLID - групповой адрес, имеется своя таблица соответствия MLID и портов. При предоставлении сервиса, ориентированного на соединения (C), каждый узел создаёт пару очередей (queue pair, QP), связанную с парой очередей контрагента и присваивает ей номер (уникален в рамках порта), до 2^24. Обмен производится не байтовыми потоками, а сообщениями. Для сервиса датаграмм (D) создаётся дополнительная пара очередей. Сервис может быть надёжным (RC и RD) и ненадёжным (UC и UD).

На транспортном уровне аппаратно поддерживается надежная, упорядоченная и ориентированная на соединения доставка сообщений: контроль последовательности номеров пакетов, подтверждение передачи, стратегия управления потоком данных методом скользящего окна (sliding-window), алгоритмы контроля перегрузки, сегментация и повторная сборка пакетов, вычисление контрольной суммы. Посылающее приложение не знает виртуальный адрес буфера принимающего приложения, а только очередь. Кроме передачи сообщений (предназначены для коротких управляющих сообщений, Channel Semantic) аппаратно поддерживаются удаленный прямой доступ в память (RDMA - Write, Read, Compare and Swap, Fetch and Add), включая преобразование виртуальных адресов памяти в физические и контроль защиты (Memory semantic), а также атомарные функции и групповая рассылка. При использовании RDMA необходимо знать виртуальный адрес буфера получателя и ключ доступа (передаётся предварительно в управляющем сообщении).

Приложения взаимодействуют с помощью каналов передачи данных. Приложение может открыть несколько каналов. Каждый канал - это пара очередей (на передачу и на приём) в виртуальном адресном пространстве приложения на каждом конце канала, напрямую соединённых с аппаратурой HCA. Взаимодействие на верхнем уровне (software transport interface) производится постановкой задания на работу (Work Request, WR) в соответствующую очередь. Семантика задания определяется действиями (verb), генерация заданий осуществляется API прикладного уровня. Каждое задание определяет буфер в виртуальном пространстве приложения. Немедленно при записи задания в очередь в виртуальном адресном пространстве приложения инициируются действия HCA по передаче или приёму сообщений (zero copy). Трансляция виртуальных адресов приложения в физические адреса PCI Express (?!) осуществляется HCA с помощью таблиц трансляции адресов (таблицы устанавливаются ОС, но ОС не используется во время передачи данных). На другом конце виртуального канала HCA перемещает сообщение непосредственно в виртуальное адресное пространство принимающего приложения с использованием соответствующего набора таблиц трансляции адресов. На время передачи контроль над участком виртуальной памяти принимающего приложения переходит передающему приложению. Для обеспечения безопасности используется проверка ключей.

API для взаимодействия приложений не задаётся, чтобы избежать привязки к платформе и ОС. Например, OpenFabrics Alliance (OFA, OpenIB) разработал такие API под лицензиями GNU и BSD - Open Fabrics Enterprise Distribution (OFED), пакет ofed-docs.

Стек реализации (пакет openib, сервис openibd, настройки в /etc/ofed/openib.conf или /etc/infiniband/openib.conf, /proc/infiniband) состоит из

ULP включает:

Готовые приложения над ULP

kDAPL (kernel Direct Access Programming Library), используется для файлового доступа.

Настройка, управление и утилиты:

VAPI обеспечивает пользовательский уровень доступа в обход ОС для реализации MPI (для HPC) и uDAPL (user Direct Access Programming Library, используется в Oracle RAC). uDAPL и kDAPL - реализация абстрактного транспорта прямого доступа (DAT, Direct Access Transport, iWARP). DAPL - универсальный интерфейс для использования RDMA приложениями, а не только для InfiniBand (пакет dapl).

Mellanox поставляет также средства разработки Mellanox Software Tools (MST, сервис mst, отладка, трассировка), IBADM (/etc/ibadm.conf, /etc/ibadm.hosts, /etc/ibadm.topo, In-Band - IBBS и Out-of-Band - PCI OBBS или I2C-OBBS, на каждом адаптере и коммутаторе должен работать сервер шин (bus server, BS), утилиты ibtopogen, ibls, ibmon, ibfwmgr), pdsh.

Компания ScaleMP предлагает vSMP (объединение нескольких компьютеров в виртуальную SMP систему) с использованием InfiniBand.

Сервис openib загружает модули, требуемые в /etc/ofed/openib.conf.

Коммутаторы

Mellanox InfiniScale IV QDR InfiniBand Switch, 36 QSFP ports, 2 power supply, unmanaged, MTS3600Q-2UNC, 400 000 рублей.

Mellanox 8 Port 4X SDR InfiniBand switch [Flextronix F-X430066] - $1200, для конечных устройств.

Mellanox InfiniScale MT43132.

Mellanox MTS2400.

Mellanox InfiniScale IV.

Flextronix F-X430044 - для конечных устройств, SDR и DDR, 24 порта, $4000.

Flextronix F-X430046 - для конечных устройств, SDR и DDR, 24 порта, $4000, 2 БП.

SilverStorm 9120 - для ядра фабрики.

QLogic 12200-CH01 - для конечных устройств, 36 портов.

Коммутатор Mellanox InfiniScale IV

MIS50xxx-yyyy, 36 портов (QSFP), управляемый (плата с PowerPC и 2 Ethernet, для реального управления - а не только температуру посмотреть - надо дополнительно покупать лицензию, внутренний Subnet Manager без этой лицензии тоже не работает), неблокирующий (в рекламе - 2.88Tbps, в спецификации - 1,44Tbps), InfiniScale IV, задержка - 100нс, 1U, мониторинг температуры и вентиляторов (может работать бесконечно долго без 1 вентилятора и 2 минуты совсем без блока вентиляторов). MIS5035D - DDR, MIS5035Q - QDR ($18000), MIS5030 - управляемый для небольших кластеров до 108 узлов (только 1 Ethernet), M MIS5031 - 18 портов (экономия - $1300), MIS5025 - неуправляемый (для ясности называется Externally Managed), MIS50xx-2Syy - 2 БП с возможностью горячей замены (PSU1 - справа), MIS50xx-zSFC - обдув от БП к разъёмам, MIS50xx-zSRC - обдув от разъёмов к БП, MIS50xx-1Szz - для обычных шкафов (583mm, для обычных шкафов потребуются рельсы MIS000083), MIS50xx-1Bzz - для неглубоких шкафов (423mm). Пассивные и активные кабели. Индикаторы работоспособности БП и блока вентиляторов и кнопка сброса (при нажатии более 15 секунд пароль сбрасывается на "admin"). Индикаторы на БП. Индикаторы портов: зелёный - есть соединение, оранжевый - порт заблокирован. Нумерация портов сверху вниз слева направо (в нижний ряд вставлять зеркально).

Host Channel Adapter

QSFP и кабель нужного типа покупается отдельно!

Mellanox InfiniHost MT23108 для PCI-X/133.

Mellanox MT25418 - 2 мкс.

Mellanox MHES14 4X SDR InfiniBand PCEe x4 - $250, задержка 2.6 мкс.

Mellanox MHES18 4X SDR InfiniBand PCEe x8 - $500.

Mellanox InfiniHost III Lx, MHGS18-XTC, Cheetah DDR, Single Port 4X InfiniBand DDR, PCI-Express x8, Low Profile HCA Card, Memory Free, 20 000 рублей, задержка 2.3 мкс.

Mellanox InfiniHost III Ex (2.6 microseconds MPI latency, меньше 1 microseconds RDMA latency). Dual Port 4X InfiniBand Double Data Rate / PCI-Express x8, Low Profile HCA Card, Memory Free, Fiber Media Adapter Support, Lion-mini DDR, MHGA28-XTC - $1000.

Mellanox 4x DDR ConnectX, PCIe v2, задержка 1.5 мкс, $700.

Mellanox 4x SDR/DDR/QDR ConnectX-2 (MHEH28-XTC/MHGH28-XTC или MHGH29-XTC/MHJH29-XTC), PCIe v2 x8, задержка 1.0 мкс (1.2 мкс MPI), 2 порта, каждый порт может быть сконфигурирован под InfiniBand или Ethernet 10G (VPI - Virtual Protocol Interconnect), XAUI/CX4 или XFI, QSFP (модель QDR MHQH29-XTC, нужен внешний оптический адаптер) или microGiGaCN (?, до 5 метров для QDR), $1000. Однопортовые HCA имеют названия с "1" вместо "2".

Qlogic (Pathscale) InfiniPath HTX HCAs (1.29 microseconds MPI latency) - интерфейс HyperTransport.

Qlogic InfiniPath QLE-7240 DDR 4X, 1 порт (CX, SFF-8470). PCIe v1.1 x8. Задержка MPI 1.2 мкс. 1500 MBps в одном направлении.

Qlogic QLE-7340 QDR 4X, 1 порт.

Qlogic QLE-7342 QDR 4X, 2 порта.

Voltaire ISR 9288 - 4 мкс.

MHQH19-XTC - Mellanox 4x QDR ConnectX-2

MHQH19-XTC - Mellanox 4x QDR ConnectX-2, 1 порт (QSFP). PCIe v2 x8. Задержка 1.0 мкс (1.2 мкс MPI), отзывается как "Mellanox Technologies MT26428 [ConnectX VPI PCIe 2.0 5GT/s - IB QDR / 10GigE]". В разъём QSFP вместо оптического адаптера могут подключаться пассивные медные кабели (без приёмо-передатчиков, до 7 метров в зависимости от скорости) и активные медные кабели (включают приёмо-передатчики, до 12 метров). Модуль mlx4_core в CentOS 5 использует пакет libmlx4 (/etc/ofed/mlx4.conf) для определения режима работы (Ethernet 10Gb или InfiniBand), модули mlx4_en и mlx4_ib реализуют соответствующие протоколы. В CentOS 6 модуль mlx4_core получил параметр port_type_array, который позволяет выбрать между InfiniBand и Ethernet 10Gb. Также конфигурируется через /etc/rdma/mlx4.conf ("0000:01:00.0 eth"), результат в /sys/bus/pci/devices/0000\:01\:00.0/mlx4_port1. Работа в режиме Ethernet описана в статье про Ethernet.

Проблема при загрузке драйвера в Cent OS 5:

awk: /etc/ofed/setup-mlx4.awk:6: (FILENAME=/etc/ofed/mlx4.conf FNR=21) fatal: 
   cannot open file `/sbin/setup-mlx4' for reading (No such file or directory)

Qlogic InfiniPath QLE-7240

Qlogic InfiniPath QLE-7240 DDR 4X, 1 порт (CX, SFF-8470). PCIe v1.1 x8. Задержка MPI 1.2 мкс. 1500 MBps в одном направлении. VirtualHBA (FC) и VirtualNIC (Ethernet). Модуль ib_ipath (в новых версиях - ib_qib) обрабатывает только служебные пакеты, основной трафик обрабатывается приложениями (libinfinipath.so). Зелёный индикатор - физическое соединение, оранжевый - соединение сконфигурировано SM. QLogic MPI использует собственный протокол (PSM MPI) и несовместим с другими HCA. На один хост можно ставить только одинаковые HCA. Требуется включить ACPI в BIOS.

Параметры модуля ib_ipath:

Параметры модуля ib_qib

Пакет управления оборудованием от изготовителя - infinipath-3.0.1-31211.1043.x86_64.rpm и infinipath-libs-3.0.1-31211.1043.i386.rpm и infinipath-libs-3.0.1-31211.1043.x86_64.rpm (конфликт с infinipath-psm-2.9-926.1005_open.1.el6.x86_64 и compat-openmpi-psm) из QLogicIB-Basic.RHEL6-x86_64.7.0.1.0.43/InfiniPath3.0.1-2011-11-08-RHEL6-x86_64/InfiniPath:

Пакет управления оборудованием от изготовителя - infinipath-2.3.1-5402.928_rhel5_qlc.x86_64.rpm и infinipath-libs-2.3.1-5402.928_rhel5_qlc.x86_64.rpm и infinipath-doc-2.9-926.1005_rhel5_qlc.noarch.rpm из QLogicIB-Basic.RHEL6-x86_64.6.1.0.0.72/InfiniPath2.9-2011-04-04-RHEL5-x86_64/InfiniPath:

Пакет управления оборудованием от изготовителя - infinipath-2.9-926.1005_rhel5_qlc.x86_64.rpm и infinipath-libs-2.9-926.1005_rhel5_qlc.*.rpm и infinipath-doc из QlogicOFED1.4-5.0.2.0.2/.../InfiniPath2.3.1-2009-04-07-RHEL5-x86_64/InfiniPath:

# ipath_pkt_test - один принимающий хост, загруженный расчётами
Buffer Copy test:  1496 MB/s
stream:  100000 * 2048 payload (2112 total): payload 1439.3 MB/s (1484.3 MB/s)
stream: 10000000 * 2048 payload (2112 total): payload 782.1 MB/s (806.6 MB/s) # 2 процесса на одном хосте
stream: 10000000 * 2048 payload (2112 total): payload 827.6 MB/s (853.4 MB/s) # с двух хостов одновременно
stream: 10000000 * 2048 payload (2112 total): payload 553.8 MB/s (571.1 MB/s) # с трёх хостов одновременно
stream: 10000000 * 2048 payload (2112 total): payload 414.2 MB/s (427.2 MB/s) # с четырёх хостов одновременно
stream: 10000000 * 2048 payload (2112 total): payload 455.0 MB/s (469.3 MB/s) # по 2 процесса на двух хостах
pingpong: 1000000 * 2048 payload (2112 total): payload 292.9 MB/s (302.0 MB/s) # 7 микросекунд
pingpong: 1000000 * 2048 payload (2112 total): payload 526.2 MB/s (542.7 MB/s) # более быстрый незагруженный CPU, 4 мкс
pingpong: 1000000 * 1024 payload (1088 total): payload 316.0 MB/s (335.7 MB/s) # более быстрый незагруженный CPU, 3 мкс
stream: 1000000 * 2048 payload (2112 total): payload 1224.3 MB/s (1262.6 MB/s) # с возвратом всего пакета
pingpong: 1000000 * 2048 payload (2112 total): payload 290.0 MB/s (299.1 MB/s) # с возвратом всего пакета

netperf TCP_STREAM eth0 - 725.75 Mbps
netperf TCP_STREAM ib0 - 3041.80 Mbps
netperf TCP_STREAM ib0 и LD_PRELOAD=/usr/lib64/libsdp.so.1.0.0 - 9411.82 Mbps (CPU - 75.87% и 53.82%)
netperf TCP_STREAM -W 2,2 ib0 и LD_PRELOAD=/usr/lib64/libsdp.so.1.0.0 - 9809.81 Mbps (CPU - 79.31% и 67.27%)
netperf TCP_STREAM -W 8,8 ib0 и LD_PRELOAD=/usr/lib64/libsdp.so.1.0.0 - 10449.90 Mbps (CPU - 83.14% и 83.14%)
netperf TCP_RR eth0 - 12756.14 tps
netperf TCP_RR ib0 - 44740.71 tps
netperf TCP_RR ib0 и LD_PRELOAD=/usr/lib64/libsdp.so.1.0.0 - 64380.73 tps

OpenSM

SM (Subnet Manager) хранит политики маршрутизации и прочие настройки подсети. Протокол работы SM стандартизован InfiniBand (Management Model (13), Subnet Management (14), and Subnet Administration (15)) и без него подсеть неработоспособна.

OpenSM является открытой реализацией SM и SA - программа opensm и оболочка osmsh (требуется tclsh8.4, пакет osm). Включает экспериментальную версию монитора производительности. Требует установки стека IB (?) и VAPI (Verbs API). При вызове без параметров opensm сканирует подсеть (fabric) и инициализирует её. В RHEL имеется сервис opensmd. Требуется загрузить модули ib_mad и ib_umad на сервере и модуль ib_mad на клиентах. Возможности сканирования ограниченны, например, исследуется только подсеть, подключённая к одному порту одного HCA. Журнал записывается в /var/log/opensm.log (много) и в syslog (основные события). Признаком успеха является строка "SUBNET UP". При получении сигнала HUP сканирование производится заново. Ключи (опущены ключи настройки разделов, QoS и отладки):

Переменные окружения:

Файлы:

Тестовая утилита osmtest позволяет запустить набор тестов для проверки работоспособности SM и SA (работа с хранилищем, тест нагрузки).

IPoIB

Настроить /etc/sysconfig/network-scripts/ifcfg-ib0 (ifub ib0):

DEVICE=ib0
BOOTPROTO=static
ONBOOT=no # yes
IPADDR=адрес
NETMASK=255.255.255.0
USERCTL=no
IPV6INIT=no
NM_CONTROLLED=no

Рекомендации QLogic по настройке TCP/IP (пользы не заметил; действует на весь стек TCP/IP, а не только IB!):

/sbin/sysctl -w net.ipv4.tcp_timestamps=0 # зачем нам отметка времени в каждом пакете?
/sbin/sysctl -w net.ipv4.tcp_sack=0 # отмена select acknowledgments, надо быть очень уверенным в качестве сети
/sbin/sysctl -w net.core.netdev_max_backlog=250000 # очередь входящих запросов (обычно 1000)
/sbin/sysctl -w net.core.rmem_max=16777216 # (обычно 131071)
/sbin/sysctl -w net.core.wmem_max=16777216 # (обычно 131071)
/sbin/sysctl -w net.core.rmem_default=16777216 # (обычно 129024)
/sbin/sysctl -w net.core.wmem_default=16777216 # (обычно 129024)
/sbin/sysctl -w net.core.optmem_max=16777216 # (обычно 20480)
/sbin/sysctl -w net.ipv4.tcp_mem="16777216 16777216 16777216" # (обычно 196608 262144 393216)
/sbin/sysctl -w net.ipv4.tcp_rmem="4096 87380 16777216" # (обычно 4096 87380 4194304), вредный совет
/sbin/sysctl -w net.ipv4.tcp_wmem="4096 65536 16777216" # (обычно 4096 16384 4194304), вредный совет

Утилиты диагностики

Пакет infiniband-diags.

Пакет ibutils (требуется модуль ib_uverbs). ibdiagnet - исследование топологии сети. Ключ "-c число" позволяет проверить надёжность соединений. Ключ "-r" создаёт отчёт качества фабрики. Создаёт файлы:

Пакет libibverbs-utils:

Пакет perftest - измерение производительности.

Ссылки

@ Карта сайта News Автора!

Bog BOS: hardware:  InfiniBand



Copyright © 1996-2024 Sergey E. Bogomolov; www.bog.pp.ru