mila.infiniband

InfiniBand

Ta rola instaluje i konfiguruje interfejsy InfiniBand.

Zmienne roli

Instalacja

Zdefiniuj repozytoria APT lub YUM/DNF oraz ścieżkę do klucza GPG.

# Domyślne repozytorium apt
infiniband_apt_repository: 'deb https://linux.mellanox.com/public/repo/mlnx_ofed/latest/ubuntu18.04/amd64/ ./'

# Domyślne repozytorium yum/dnf
infiniband_yum_repository: 'https://linux.mellanox.com/public/repo/mlnx_ofed/latest/rhel8.3/$basearch/'

# Klucz GPG Mellanox
infiniband_gpg_key: 'http://www.mellanox.com/downloads/ofed/RPM-GPG-KEY-Mellanox'

Aby zaktualizować pakiety do najnowszej dostępnej wersji.

infiniband_upgrade: True

Aby ustawić priorytet repozytorium (tylko APT).

infiniband_apt_priority: 490

Nazwa pakietu nagłówków jądra może się różnić w różnych dystrybucjach. Można to zdefiniować za pomocą:

infiniband_kernel_headers_package: 'linux-headers'

Niektóre urządzenia, takie jak NVIDIA DGX, korzystają z własnej stosu oprogramowania. Kiedy urządzenie zarządza już instalacją sterowników Mellanox OFED, nie ma potrzeby konfigurowania dodatkowych repozytoriów ani instalowania sterowników. W takich przypadkach poniższe parametry można ustawić na False w inwentarzu hostów. To samo dotyczy korzystania z modułów jądra z dystrybucji.

infiniband_configure_repos: True
infiniband_install_kernel_modules: True

IPoIB

Zdefiniuj listę interfejsów do skonfigurowania z IPoIB. Każdy element listy musi definiować nazwę interfejsu (iface), przesunięcie od domyślnego adresu ipv4 i prefiks CIDR. Jeśli lista nie jest zdefiniowana, rola nie skonfiguruje żadnego interfejsu IPoIB.

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

Aby obliczyć przesunięcie, użyj:

$ 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

Wirtualizacja - SR-IOV

Skonfiguruj listę urządzeń Mellanox HCA z zastosowanymi parametrami. pci_bus musi odpowiadać wartości w /sys/bus/pci/devices/ (np. /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

Na razie wspierane są tylko parametry SRIOV_EN i NUM_OF_VFS.

Zdefiniuj prefiks, który ma być używany dla 64-bitowego IB GUID VFs. Rola zdefiniuje GUID z:

  • prefiks (40 bitów)
  • "00" (8 bitów)
  • identyfikator urządzenia (8 bitów): indeks elementu w liście infiniband_hca_devices powyżej
  • identyfikator VF (8 bitów): indeks VF w zakresie (infiniband_hca_devices[*].num_of_vfs)

Zaleca się zdefiniowanie wartości innej niż domyślna, jeśli planujesz skonfigurować więcej niż jeden host z SR-IOV w swojej strukturze IB.

Aby umożliwić przełączanie w konfiguracji wysokiej dostępności, upewnij się, że używasz tych samych infiniband_hca_devices i infiniband_guid_prefix dla wszystkich hostów, na których może działać dany VM.

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

Domyślnie rola zrestartuje hosty, aby załadować nową konfigurację. Można zabronić restartu, ustawiając:

infiniband_allow_reboot: false

Aby uniknąć nieprzewidzianych przestojów w klastrach o wysokiej dostępności, rola będzie restartować hosty jeden po drugim. Można zwiększyć opóźnienie z użyciem:

infiniband_throttle_reboot: "{{ ansible_play_hosts | length }}"

Przykładowy skrypt

Zainstaluj i skonfiguruj InfiniBand:

- hosts: computes:&infiniband
  roles:
    - role: mila.infiniband
      tags: 'role::infiniband'
O projekcie

Install and configure InfiniBand interfaces

Zainstaluj
ansible-galaxy install mila.infiniband
Licencja
mit
Pobrania
10.1k
Właściciel
Quebec Artificial Intelligence Institute