infiniband

Инфинибанд

Эта роль устанавливает и настраивает интерфейсы InfiniBand.

Переменные роли

Установка

Определите репозитории APT или YUM/DNF с путём к GPG ключу.

# Основной репозиторий apt
infiniband_apt_repository: 'deb https://linux.mellanox.com/public/repo/mlnx_ofed/latest/ubuntu18.04/amd64/ ./'

# Основной репозиторий yum/dnf
infiniband_yum_repository: 'https://linux.mellanox.com/public/repo/mlnx_ofed/latest/rhel8.3/$basearch/'

# GPG ключ Mellanox
infiniband_gpg_key: 'http://www.mellanox.com/downloads/ofed/RPM-GPG-KEY-Mellanox'

Чтобы обновить пакеты до последней доступной версии.

infiniband_upgrade: True

Чтобы установить приоритет репозитория (только для APT).

infiniband_apt_priority: 490

Имя пакета заголовков ядра может меняться между дистрибутивами. Это можно определить с помощью:

infiniband_kernel_headers_package: 'linux-headers'

Некоторые устройства, такие как NVIDIA DGX, используют собственный стек программного обеспечения. Если устройство уже управляет установкой драйверов Mellanox OFED, нет необходимости настраивать дополнительные репозитории или устанавливать драйверы. В таких случаях параметры ниже можно установить на False в инвентаре хоста. Это также верно при использовании ядерных модулей из дистрибутива.

infiniband_configure_repos: True
infiniband_install_kernel_modules: True

IPoIB

Определите список интерфейсов для настройки с IPoIB. Каждый элемент списка должен определять имя интерфейса (iface), смещение от адреса ipv4 по умолчанию и префикс CIDR. Если список не определён, роль не будет настраивать никаких интерфейсов IPoIB.

infiniband_ipoib_interfaces:
  - iface: 'ib0'
    offset: -3064461568
    prefix: 17

Чтобы вычислить смещение, используйте:

$ python3 <<EOF
import ipaddress
source_net='192.168.121.0'
target_net='10.0.128.0'
offset=(int(ipaddress.ip_address(source_net))-int(ipaddress.ip_address(target_net)))
print(f"offset: -{offset}")
EOF

Виртуализация - SR-IOV

Настройте список Mellanox HCA с параметрами, которые нужно применить. pci_bus должен соответствовать значению в /sys/bus/pci/devices/ (например, /sys/bus/pci/devices/0000:41:00.0/)

infiniband_hca_devices:
  - device: mlx5_0
    pci_bus: '0000:41:00.0'
    sriov_en: True
    num_of_vfs: 8

Только параметры SRIOV_EN и NUM_OF_VFS поддерживаются на данный момент.

Определите префикс для 64-битного IB GUID виртуальных функций (VF). Роль будет определять GUID с:

  • префикс (40 бит)
  • "00" (8 бит)
  • идентификатор устройства (8 бит): индекс элемента в списке infiniband_hca_devices выше
  • идентификатор VF (8 бит): индекс VF в диапазоне(infiniband_hca_devices[*].num_of_vfs)

Настоятельно рекомендуется определить значение, отличное от значения по умолчанию, если вы планируете настраивать более одного хоста с SR-IOV в вашей сети IB.

Чтобы обеспечить переключение в конфигурации высокой доступности, убедитесь, что вы используете одинаковые infiniband_hca_devices и infiniband_guid_prefix для всех хостов, на которых может работать данная ВМ.

infiniband_guid_prefix: "4d:69:6c:61:00"

По умолчанию роль перезагрузит хосты, чтобы загрузить любую новую конфигурацию. Можно запретить перезагрузку с помощью:

infiniband_allow_reboot: false

Чтобы избежать неожиданных простоя в кластерах высокой доступности, роль будет перезагружать хосты один за другим. Можно увеличить задержку с помощью:

infiniband_throttle_reboot: "{{ ansible_play_hosts | length }}"

Пример плейбука

Установить и настроить InfiniBand:

- hosts: computes:&infiniband
  roles:
    - role: mila.infiniband
      tags: 'role::infiniband'
О проекте

Install and configure InfiniBand interfaces

Установить
ansible-galaxy install mila-iqia/ansible-role-infiniband
Лицензия
mit
Загрузки
9812
Владелец
Quebec Artificial Intelligence Institute