mila.infiniband

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/'

# Mellanox GPG密钥
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_ENNUM_OF_VFS

定义用于64位IB GUID的VF前缀。该角色将使用以下方式定义GUID:

  • 前缀(40位)
  • "00"(8位)
  • 设备ID(8位):在infiniband_hca_devices列表中的项索引
  • VF ID(8位):在范围(infiniband_hca_devices[*].num_of_vfs)内的VF索引

如果您计划在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.infiniband
许可证
mit
下载
10.1k
拥有者
Quebec Artificial Intelligence Institute