Configuration des clients EFA - FSx pour Lustre

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Configuration des clients EFA

Utilisez les procédures suivantes pour configurer votre client Lustre afin qu'il accède à un système de fichiers compatible EFA FSx pour Lustre.

Installation des modules EFA et configuration des interfaces

Pour accéder à un système de fichiers FSx pour Lustre à l'aide d'une interface EFA, vous devez installer les modules Lustre EFA et configurer les interfaces EFA. EFA est actuellement pris en charge sur les clients Lustre exécutant AL2 023, RHEL 9.5 et versions ultérieures, ou Ubuntu 22 avec une version de noyau 6.8 ou ultérieure. Consultez l'étape 3 : Installation du logiciel EFA dans le guide de EC2 l'utilisateur Amazon pour connaître les étapes d'installation du pilote EFA.

Pour configurer votre instance cliente sur un système de fichiers compatible EFA
  1. Connectez-vous à votre EC2 instance Amazon.

  2. Copiez le script suivant et enregistrez-le sous le nom de fichierconfigure-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. Exécutez le script de configuration EFA.

    sudo apt-get install amazon-ec2-utils cron sudo chmod +x configure-efa-fsx-lustre-client.sh ./configure-efa-fsx-lustre-client.sh
  4. Utilisez les exemples de commandes suivants pour configurer une tâche cron qui reconfigure automatiquement EFA sur les instances clientes après leur redémarrage :

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

Ajouter ou supprimer des interfaces EFA

Chaque système de fichiers FSx for Lustre a une limite maximale de 1 024 connexions EFA pour toutes les instances clientes.

Le configure-efa-fsx-lustre-client.sh script configure automatiquement le nombre d'interfaces Elastic Fabric Adapter (EFA) sur une EC2 instance en fonction du type d'instance. Pour les instances P5 (p5.48xlargeoup5e.48xlarge), il configure 8 interfaces EFA par défaut. Pour les autres instances avec plusieurs cartes réseau, il configure 2 interfaces EFA. Pour les instances avec une seule carte réseau, il configure 1 interface EFA. Lorsqu'une instance client se connecte à un système de fichiers FSx pour Lustre, chaque interface EFA configurée sur l'instance client est prise en compte dans la limite de 1024 connexions EFA.

Les instances clientes dotées d'un plus grand nombre d'interfaces EFA prennent généralement en charge des niveaux de débit plus élevés par instance client par rapport aux instances clientes dotées de moins d'interfaces EFA. Tant que vous ne dépassez pas la limite de connexion EFA, vous pouvez modifier le script pour augmenter ou diminuer le nombre d'interfaces EFA par instance afin d'optimiser les performances de débit par client pour vos charges de travail.

Pour ajouter une interface EFA :

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

Où se device_name trouve un appareil répertorié dansls -1 /sys/class/infiniband.

Pour supprimer une interface EFA :

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

Installation du pilote GDS

Pour utiliser GPUDirect Storage (GDS) sur FSx Lustre, vous devez utiliser une instance client Amazon EC2 P5 ou G6 et le pilote NVIDIA GDS avec une version 2.24.2 ou supérieure.

Note

Si vous utilisez une instance AMI Deep Learning, le pilote NVIDIA GPUDirect Storage (GDS) est préinstallé et vous pouvez ignorer cette procédure d'installation du pilote.

Pour installer le pilote GPUDirect de stockage NVIDIA sur votre instance cliente
  1. Clonez le gds-nvidia-fs dépôt NVIDIA/ qui est disponible sur. GitHub

    git clone https://github.com/NVIDIA/gds-nvidia-fs.git
  2. Après avoir cloné le dépôt, utilisez les commandes suivantes pour créer le pilote :

    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