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
Utilizza le seguenti procedure per configurare il client Lustre per accedere a un file system abilitato FSx per EFA per Lustre.
Argomenti
Installazione dei moduli EFA e configurazione delle interfacce
Per accedere a un file system FSx for Lustre utilizzando un'interfaccia EFA, è necessario installare i moduli Lustre EFA e configurare le interfacce EFA. EFA è attualmente supportato su client Lustre che eseguono AL2 023, RHEL 9.5 e versioni successive o Ubuntu 22 con versione del kernel 6.8 e successive. Consulta la Fase 3: Installa il software EFA nella Amazon EC2 User Guide e scopri come installare il driver EFA.
Per configurare l'istanza del client su un file system compatibile con EFA
Connect alla tua EC2 istanza Amazon.
Copia lo script seguente e salvalo come file denominato
configure-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)"
Esegui lo script di configurazione EFA.
sudo apt-get install amazon-ec2-utils cron sudo chmod +x configure-efa-fsx-lustre-client.sh ./configure-efa-fsx-lustre-client.sh
Utilizzate i seguenti comandi di esempio per impostare un cron job che riconfigura automaticamente EFA sulle istanze 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 -
Aggiungere o rimuovere interfacce EFA
Ciascun file system FSx for Lustre ha un limite massimo di 1024 connessioni EFA su tutte le istanze client.
Lo configure-efa-fsx-lustre-client.sh
script configura automaticamente il numero di interfacce Elastic Fabric Adapter (EFA) su un' EC2 istanza in base al tipo di istanza. Per le istanze P5 (p5.48xlarge
op5e.48xlarge
), configura 8 interfacce EFA per impostazione predefinita. 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 interfaccia EFA configurata sull'istanza del client conta ai fini del limite di 1024 connessioni EFA.
Le istanze client con più interfacce EFA in genere supportano livelli di throughput più elevati per istanza client rispetto alle istanze client con un minor numero di interfacce EFA. Purché non superi il limite di connessione EFA, puoi modificare lo script per aumentare o diminuire il numero di interfacce EFA 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 dispositivo. ls -1 /sys/class/infiniband
Per eliminare un'interfaccia EFA:
sudo lnetctl net del --net efa --if
device_name
Installazione del driver GDS
Per utilizzare GPUDirect Storage (GDS) su FSx for Lustre, devi usare un'istanza client Amazon EC2 P5 o G6 e il driver NVIDIA GDS con una versione di release 2.24.2 o successiva.
Nota
Se utilizzi un'istanza AMI Deep Learning, il driver NVIDIA GPUDirect Storage (GDS) è preinstallato e puoi saltare questa procedura di installazione del driver.
Per installare il driver NVIDIA GPUDirect Storage sull'istanza client
Clona il repository NVIDIA/ disponibile su gds-nvidia-fs
. GitHub git clone https://github.com/NVIDIA/gds-nvidia-fs.git
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