Pourquoi les performances de mon système de fichiers EFS sont-elles lentes ?

Date de la dernière mise à jour : 08/06/2022

Les performances de mon système de fichiers Amazon Elastic File System (Amazon EFS) sont très lentes. Quelles sont les raisons les plus courantes de la lenteur des performances et comment puis-je résoudre ces problèmes ?

Brève description

L'architecture distribuée et multi-AZ d'Amazon EFS entraîne quelques frais généraux de latence pour chaque opération de fichier. Le débit global augmente généralement avec la taille d'I/O moyenne, car les frais généraux sont amortis sur un plus grand volume de données.

Les performances d'Amazon EFS dépendent de plusieurs facteurs, notamment les suivants :

  • La classe de stockage d'EFS.
  • Les performances et modes de débit.
  • Le type d'opérations effectuées sur EFS (telles que les opérations intensives en métadonnées, etc.).
  • Les propriétés des données stockées dans EFS (telles que la taille et le nombre de fichiers).
  • Les options de montage.
  • Les limitations côté client.

Solution

Classe de stockage d'EFS

Pour plus d'informations, veuillez consulter la section Résumé des performances.

Performances et modes de débit

Modes de performances

Amazon EFS offre deux modes de performance : General Purpose (polyvalent) et Max I/O (I/O max). Les applications peuvent mettre à l'échelle leurs IOPS de manière élastique jusqu'à la limite associée au mode de performance. Pour déterminer le mode de performance à utiliser, veuillez consulter Quelles sont les différences entre le mode de performance à usage général et le mode de performance E/S max dans Amazon EFS ?

Modes de débit

Les charges de travail basées sur des fichiers étant généralement irrégulières, elles nécessitent des débits élevés pendant de courtes périodes et des débits faibles pendant des périodes plus longues. Amazon EFS a été conçu afin d'offrir des débits élevés pendant certaines périodes.

Le débit et les IOPS configurés affectent les performances d'Amazon EFS. Il est recommandé de comparer les exigences de votre charge de travail afin de vous aider à sélectionner le débit et les modes de performance appropriés. Lorsque vous sélectionnez le débit provisionné, sélectionnez les valeurs qui répondent correctement aux exigences de votre charge de travail. Dans le cas du mode de débit en rafales, vous pouvez augmenter la taille d'Amazon EFS à l'aide de fichiers factices pour augmenter le débit de base. Pour analyser le débit et les IOPS consommés par votre système de fichiers, veuillez consulter Utilisation des mathématiques appliquées aux métriques avec Amazon EFS.

Amazon EFS peut également augmenter jusqu'à plusieurs pétaoctets de volume de stockage et propose deux modes de débit : en rafales et provisionné. En mode rafales, plus la taille du système de fichiers EFS est importante, plus la mise à l'échelle du débit est élevée. Pour le mode provisionné, le débit de votre système de fichiers est défini en Mo/s, indépendamment de la quantité de données. Pour plus d'informations sur les modes de débit, veuillez consulter Comment fonctionnent les crédits de transmission en rafales Amazon EFS ?

Types d'opérations effectuées sur l'instance EC2

Opérations d'I/O de métadonnées

Les performances d'EFS sont affectées dans les situations suivantes :

  • Lorsque les fichiers sont peu volumineux parce qu'il s'agit d'un système distribué. Cette architecture distribuée entraîne de faibles coûts en matière de latence pour chaque opération réalisée sur les fichiers. En raison de cette faible latence par opération, le débit global augmente généralement avec la taille d'I/O moyenne, car les frais généraux sont amortis sur un plus grand volume de données.
  • Les performances des systèmes de fichiers partagés sont affectées si une charge de travail ou une opération génère successivement de nombreux petits fichiers. Cela entraîne une augmentation des frais généraux de chaque opération.
  • Les I/O de métadonnées se produisent si votre application exécute des opérations gourmandes en métadonnées, telles que « ls », « rm », « mkdir », « rmdir », « lookup », « getattr » ou « setattr », etc. Toute opération qui nécessite que le système récupère l'adresse d'un bloc spécifique est considérée comme une charge de travail gourmande en métadonnées. Pour plus d'informations, consultez les ressources suivantes :
    Comptage : Comment Amazon EFS indique les tailles de système de fichiers et d'objet.
    Optimisation des performances des petits fichiers.

Options de montage

  • Si vous montez le système de fichiers à l'aide d'amazon-efs-utils, les options de montage recommandées sont appliquées par défaut.
  • L'utilisation d'options de montage autres que celles par défaut peut dégrader les performances. Par exemple, l'utilisation de rsize et de wsize, la réduction ou la désactivation de la mise en cache des attributs. Vous pouvez vérifier la sortie de la commande mount pour voir les options de montage actuellement en place :

Pour plus d'informations, consultez Montez le système de fichiers sur l'instance EC2 et testez.

Exemple de commande

>> mount

Exemple de sortie

fs-EXAMPLE3f75f.efs.us-east-1.amazonaws.com:/ on /home/ec2-user/efs type nfs4 (rw,relatime,vers=4.1,rsize=1048576,wsize=1048576,namlen=255,hard,noresvport,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=<EXAMPLEIP>,local_lock=none,addr=<EXAMPLEIP>)

Version du client NFS

Le protocole de système de fichiers en réseau (NFS) version 4.1 (NFSv4) offre de meilleures performances pour les opérations parallèles de lecture de petits fichiers (supérieures à 10 000 fichiers par seconde) par rapport à NFSv4.0 (moins de 1 000 fichiers par seconde).

Pour plus d'informations, veuillez consulter Paramètres de montage client NFS.

Limitations côté client

Obstacles au niveau de l'instance EC2

Si votre application utilisant le système de fichiers ne génère pas les performances attendues d'EFS, optimisez l'application. Vous pouvez également comparer l'hôte ou le service sur lequel votre application est hébergée, comme Amazon EC2, AWS Lambda, etc. Une pénurie de ressources sur l'instance EC2 peut affecter la capacité de votre application à utiliser efficacement EFS.

Pour vérifier si EC2 est sous-approvisionné par rapport aux exigences de votre application, surveillez les métriques CloudWatch d'Amazon EC2, telles que le processeur, Amazon Elastic Block Store (Amazon EBS), etc. L'analyse de diverses métriques relatives à l'architecture de votre application et aux besoins en ressources vous permet de déterminer si vous devez reconfigurer votre application ou votre instance en fonction de vos besoins.

Utilisation de la version 4.0+ du noyau Linux

Pour des performances optimales et pour éviter divers bogues connus du client NFS, il est recommandé d'utiliser une AMI dotée d'un noyau Linux version 4.0 ou ultérieure.

RHEL et CentOS versions 7.3 et ultérieures font exception à cette règle. Le noyau de ces systèmes d'exploitation a reçu des versions rétroportées des correctifs et améliorations appliqués à NFS v4.1. Pour plus d'informations, veuillez consulter Prise en charge NFS.

Copie de fichiers

Lorsque vous copiez des fichiers à l'aide de la commande cp, vous pouvez faire face à des lenteurs. En effet, la commande de copie est une opération en série, ce qui signifie qu'elle copie chaque fichier un par un. Si la taille de chaque fichier est peu élevée, le débit d'envoi est faible.

Vous pouvez également remarquer une latence lors de l'envoi de fichiers. La nature distribuée d'EFS signifie qu'il doit se répliquer sur tous les points de montage, ce qui entraîne une surcharge par opération de fichier. Par conséquent, la latence de l'envoi de fichiers n'est pas inhabituelle.

Recommandations

Il est recommandé d'exécuter des opérations d'I/O parallèles, comme l'utilisation de rsync. Si vous utilisez rsync, veuillez noter que cp et rsync fonctionnent par opérations en série (à thread unique) et pas par opérations parallèles. Cela ralentit la copie. Utilisez des outils tels que fpart ou NU Parallel. fpart est un outil vous permettant de trier les arborescences de fichiers et de les regrouper dans des « partitions ». fpart intègre un script shell appelé fpsync qui englobe fpart et rsync pour lancer plusieurs opérations rsync en parallèle. fpsync fournit son propre planificateur intégré. Ce faisant, vous pouvez effectuer ces tâches plus rapidement qu'avec la méthode en série plus courante.

Pour en savoir plus, veuillez consulter la page Conseils sur les performances Amazon EFS.


Cet article vous a-t-il été utile ?


Avez-vous besoin d'aide pour une question technique ou de facturation ?