Configurazione dei client EFA - FSxper Lustre

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Configurazione dei client EFA

Utilizzate le seguenti procedure per configurare il client Lustre per accedere a un file system EFA -enabled FSx for Lustre.

Installazione dei EFA moduli e configurazione delle interfacce

Per accedere a un file system FSx for Lustre utilizzando un'EFAinterfaccia, è necessario installare i EFA moduli Lustre e configurare le interfacce. EFA EFAè attualmente supportato sui client Lustre che eseguono Ubuntu 22 con una versione del kernel 6.8 e successive. Consulta la Fase 3: Installa il EFA software nella Amazon EC2 User Guide per scoprire come installare il EFA driver.

Per configurare l'istanza del client su un file system EFA abilitato
  1. Connect alla tua EC2 istanza Amazon.

  2. Copia lo script seguente e salvalo come file denominatoconfigure-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. Esegui lo script EFA di configurazione.

    sudo apt-get install amazon-ec2-utils cron sudo chmod +x configure-efa-fsx-lustre-client.sh ./configure-efa-fsx-lustre-client.sh
  4. Usa i seguenti comandi di esempio per impostare un cron job che si riconfigura automaticamente EFA sulle istanze del client dopo il riavvio:

    (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 -

EFAAggiungere o rimuovere interfacce

Ciascun file system FSx for Lustre ha un limite massimo di 1024 EFA connessioni su tutte le istanze del client.

Lo configure-efa-fsx-lustre-client.sh script configura automaticamente il numero di interfacce Elastic Fabric Adapter (EFA) su un'EC2istanza in base al tipo di istanza. Per le istanze P5 (p5.48xlargeop5e.48xlarge), configura 8 interfacce per impostazione predefinita. EFA Per altre istanze con più schede di rete, configura 2 interfacce. EFA Per le istanze con una singola scheda di rete, configura 1 interfaccia. EFA Quando un'istanza client si connette a un file system FSx for Lustre, ogni EFA interfaccia configurata sull'istanza client viene conteggiata ai fini del limite di EFA 1024 connessioni.

Le istanze client con più EFA interfacce in genere supportano livelli di throughput più elevati per istanza client rispetto alle istanze client con meno interfacce. EFA Purché non superi il limite di EFA connessione, puoi modificare lo script per aumentare o diminuire il numero di EFA interfacce per istanza per ottimizzare le prestazioni di throughput per client per i tuoi carichi di lavoro.

Per aggiungere un'interfaccia: EFA

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

Dove device_name è elencato un dispositivols -1 /sys/class/infiniband.

Per eliminare un'EFAinterfaccia:

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

Installazione del GDS driver

Per utilizzare GPUDirect Storage (GDS) on FSx for Lustre, devi utilizzare un'istanza client Amazon EC2 P5 o G6 e il NVIDIA GDS driver con una versione di release 2.24.2 o successiva.

Per installare il driver NVIDIA GPUDirect Storage sull'istanza client
  1. Clona il gds-nvidia-fs repositoryNVIDIA/disponibile su. GitHub

    git clone https://github.com/NVIDIA/gds-nvidia-fs.git
  2. Dopo aver clonato il repository, usa i seguenti comandi per creare il 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