Configurando clientes EFA - FSxpara Lustre

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Configurando clientes EFA

Use os procedimentos a seguir para configurar seu cliente Lustre para acessar um sistema de arquivos EFA habilitado FSx para Lustre.

Instalando EFA módulos e configurando interfaces

Para acessar um FSx sistema de arquivos do Lustre usando uma EFA interface, você deve instalar os EFA módulos Lustre e configurar EFA as interfaces. EFAatualmente é suportado em clientes Lustre que executam o Ubuntu 22 com uma versão de kernel 6.8 e superior. Consulte a Etapa 3: Instale o EFA software no Guia EC2 do usuário da Amazon sobre as etapas para instalar o EFA driver.

Para configurar sua instância cliente em um sistema EFA de arquivos habilitado
  1. Conecte-se à sua EC2 instância da Amazon.

  2. Copie o script a seguir e salve-o como um arquivo chamadoconfigure-efa-fsx-lustre-client.sh.

    #!/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin echo "Started ${0} at $(date)" eth_intf="$(ip -br -4 a sh | grep $(hostname -i)/ | awk '{print $1}')" efa_version=$(modinfo efa | awk '/^version:/ {print $2}' | sed 's/[^0-9.]//g') min_efa_version="2.12.1" # Check the EFA driver version. Minimum v2.12.1 supported if [[ -z "$efa_version" ]]; then echo "Error: EFA driver not found" exit 1 fi if [[ "$(printf '%s\n' "$min_efa_version" "$efa_version" | sort -V | head -n1)" != "$min_efa_version" ]]; then echo "Error: EFA driver version $efa_version does not meet the minimum requirement $min_efa_version" exit 1 else echo "Using EFA driver version $efa_version" fi echo "Loading Lustre/EFA modules..." sudo /sbin/modprobe lnet sudo /sbin/modprobe kefalnd ipif_name="$eth_intf" sudo /sbin/modprobe ksocklnd sudo lnetctl lnet configure echo "Configuring TCP interface..." sudo lnetctl net del --net tcp 2> /dev/null sudo lnetctl net add --net tcp --if $eth_intf # For P5 instance type which supports 32 network cards, # by default add 8 EFA interfaces selecting every 4th device (1 per PCI bus) echo "Configuring EFA interface(s)..." instance_type="$(ec2-metadata --instance-type | awk '{ print $2 }')" num_efa_devices="$(ls -1 /sys/class/infiniband | wc -l)" echo "Found $num_efa_devices available EFA device(s)" if [[ "$instance_type" == "p5.48xlarge" || "$instance_type" == "p5e.48xlarge" ]]; then for intf in $(ls -1 /sys/class/infiniband | awk 'NR % 4 == 1'); do sudo lnetctl net add --net efa --if $intf --peer-credits 32 done else # Other instances: Configure 2 EFA interfaces by default if the instance supports multiple network cards, # or 1 interface for single network card instances # Can be modified to add more interfaces if instance type supports it sudo lnetctl net add --net efa --if $(ls -1 /sys/class/infiniband | head -n1) --peer-credits 32 if [[ $num_efa_devices -gt 1 ]]; then sudo lnetctl net add --net efa --if $(ls -1 /sys/class/infiniband | tail -n1) --peer-credits 32 fi fi echo "Setting discovery and UDSP rule" sudo lnetctl set discovery 1 sudo lnetctl udsp add --src efa --priority 0 sudo /sbin/modprobe lustre sudo lnetctl net show echo "Added $(sudo lnetctl net show | grep -c '@efa') EFA interface(s)"
  3. Execute o script EFA de configuração.

    sudo apt-get install amazon-ec2-utils cron sudo chmod +x configure-efa-fsx-lustre-client.sh ./configure-efa-fsx-lustre-client.sh
  4. Use os comandos de exemplo a seguir para configurar um cron job que é reconfigurado automaticamente EFA nas instâncias do cliente após a reinicialização:

    (sudo crontab -l 2>/dev/null; echo "@reboot /path/to/configure-efa-fsx-lustre-client.sh > /var/log/configure-efa-fsx-lustre-client-output.log") | sudo crontab -

Adicionar ou remover EFA interfaces

Cada sistema FSx de arquivos do Lustre tem um limite máximo de 1.024 EFA conexões em todas as instâncias do cliente.

O configure-efa-fsx-lustre-client.sh script configura automaticamente o número de interfaces do Elastic Fabric Adapter (EFA) em uma EC2 instância com base no tipo de instância. Para instâncias P5 (p5.48xlargeoup5e.48xlarge), ele configura 8 EFA interfaces por padrão. Para outras instâncias com várias placas de rede, ele configura duas EFA interfaces. Para instâncias com uma única placa de rede, ele configura 1 EFA interface. Quando uma instância cliente se conecta a um sistema de arquivos FSx for Lustre, cada EFA interface configurada na instância cliente é contabilizada no limite de EFA conexão de 1024.

As instâncias de cliente com mais EFA interfaces geralmente oferecem suporte a níveis mais altos de taxa de transferência por instância de cliente em comparação com instâncias de cliente com menos EFA interfaces. Desde que você não exceda o limite de EFA conexão, você pode modificar o script para aumentar ou diminuir o número de EFA interfaces por instância para otimizar o desempenho da taxa de transferência por cliente para suas cargas de trabalho.

Para adicionar uma EFA interface:

sudo lnetctl net add --net efa --if device_name --peer-credits 32

Onde device_name está listado um dispositivols -1 /sys/class/infiniband.

Para excluir uma EFA interface:

sudo lnetctl net del --net efa --if device_name

Instalando o GDS driver

Para usar o GPUDirect Storage (GDS) no FSx Lustre, você deve usar uma instância cliente Amazon EC2 P5 ou G6 e o NVIDIA GDS driver com uma versão de lançamento 2.24.2 ou superior.

Para instalar o driver NVIDIA GPUDirect de armazenamento na sua instância cliente
  1. Clone o gds-nvidia-fs repositórioNVIDIA/que está disponível em. GitHub

    git clone https://github.com/NVIDIA/gds-nvidia-fs.git
  2. Depois de clonar o repositório, use os seguintes comandos para criar o driver:

    cd gds-nvidia-fs/src/ export NVFS_MAX_PEER_DEVS=128 export NVFS_MAX_PCI_DEPTH=16 sudo -E make sudo insmod nvidia-fs.ko