Warum ist die Leistung meines EFS-Dateisystems langsam?

Lesedauer: 6 Minute
0

Die Leistung meines Amazon Elastic File System (Amazon EFS) ist sehr langsam. Was sind häufige Gründe für eine langsame Leistung und wie behebe ich sie?

Kurzbeschreibung

Die verteilte Multi-Availability-Zone-Architektur von Amazon EFS führt zu einem geringen Latenz-Overhead für jeden Dateivorgang. Der Gesamtdurchsatz steigt im Allgemeinen mit zunehmender durchschnittlicher E/A-Größe, da sich der Overhead über eine größere Datenmenge amortisiert.

Die Leistung von Amazon EFS hängt von mehreren Faktoren ab, darunter die folgenden:

  • Speicherklasse von EFS.
  • Leistungs- und Durchsatzmodi.
  • Art der auf EFS ausgeführten Vorgänge (z. B. metadatenintensiv usw.).
  • Eigenschaften von in EFS gespeicherten Daten (wie Größe und Anzahl der Dateien).
  • Mount-Optionen.
  • Einschränkungen auf der Clientseite.

Lösung

Speicherklasse von EFS

Weitere Informationen finden Sie unter Leistungsübersicht.

Leistungs- und Durchsatzmodi

Leistungsmodi

Amazon EFS bietet zwei Leistungsmodi: Universell und Max I/O. Anwendungen können ihre IOPS elastisch bis zu dem mit dem Leistungsmodus verbundenen Limit skalieren. Informationen darüber, welcher Leistungsmodus verwendet werden soll, finden Sie unter Was sind die Unterschiede zwischen den Leistungsmodi Universell und Max I/O in Amazon EFS?

Durchsatzmodi

Dateibasierte Workloads sind in der Regel spitz und sorgen für einen hohen Durchsatz für kurze Zeiträume, aber auch für einen niedrigeren Durchsatz über längere Zeiträume. Amazon EFS ist darauf ausgelegt, über einen bestimmten Zeitraum hohen Durchsatz zu erreichen.

Der konfigurierte Durchsatz und die IOPS beeinflussen die Leistung von Amazon EFS. Eine bewährte Methode besteht darin, Ihre Workload-Anforderungen zu vergleichen, um Ihnen bei der Auswahl der geeigneten Durchsatz- und Leistungsmodi zu helfen. Wählen Sie bei der Auswahl des bereitgestellten Durchsatzes die Werte aus, die Ihren Workload-Anforderungen entsprechen. Im Bursting-Durchsatzmodus können Sie die Größe von Amazon EFS mithilfe von Dummy-Dateien erhöhen, um den Basisdurchsatz zu erhöhen. Informationen zur Analyse des Durchsatzes und der IOPS, die von Ihrem Dateisystem verbraucht werden, finden Sie unter Verwenden von Metrikberechnungen mit Amazon EFS.

Amazon EFS kann auch auf Speichervolumen im Petabyte-Bereich hochskaliert werden und verfügt über zwei Durchsatzmodi: Bursting und Bereitstellung. Im Bursting-Modus gilt: Je größer das EFS-Dateisystem ist, desto höher ist die Durchsatzskalierung. Für den Bereitstellungsmodus wird, unabhängig von der Datenmenge, ein Durchsatz für Ihr Dateisystem in MB/s festgelegt. Weitere Informationen zu Durchsatzmodi finden Sie unter Wie funktionieren Amazon-EFS-Burst-Credits?

Arten von Vorgängen, die auf der EC2-Instance ausgeführt werden

Metadaten-I/O-Vorgänge

Die EFS-Leistung leidet in den folgenden Situationen:

  • Wenn die Dateigrößen klein sind, weil es sich um ein verteiltes System handelt. Diese verteilte Architektur führt zu einem geringen Latenz-Overhead für jeden Dateivorgang. Aufgrund dieser Latenz pro Vorgang steigt der Gesamtdurchsatz im Allgemeinen mit zunehmender I/O-Größe, da sich der Overhead über eine größere Datenmenge amortisiert.
  • Die Leistung auf gemeinsam genutzten Dateisystemen leidet, wenn eine Workload oder ein Vorgang viele kleine Dateien seriell generiert. Dadurch erhöht sich der Overhead jedes Vorgangs.
  • Ein Metadaten-I/O tritt auf, wenn Ihre Anwendung metadatenintensive Vorgänge wie „ls“, „rm“, „mkdir“, „rmdir“, „lookup“, „getattr“ oder „setattr“ usw. ausführt. Jeder Vorgang, bei dem das System die Adresse eines bestimmten Blocks abrufen muss, wird als metadatenintensive Workload betrachtet. Weitere Informationen finden Sie unter:
    Messung: Wie Amazon EFS Dateisystem- und Objektgrößen meldet.
    Optimieren der Leistung kleiner Dateien.

Mount-Optionen

  • Wenn Sie das Dateisystem mit amazon-efs-utils mounten, werden standardmäßig die empfohlenen Mount-Optionen angewendet.
  • Die Verwendung nicht standardmäßiger Mount-Optionen beeinträchtigt möglicherweise die Leistung. Wenn Sie beispielsweise niedrigere Werte für rsize und wsize verwenden, verringern oder deaktivieren Sie das Attribut-Caching. Sie können die Ausgabe des Mount-Befehls überprüfen, um die derzeit vorhandenen Mount-Optionen zu sehen:

Weitere Informationen finden Sie unter Mounten des Dateisystems auf der EC2-Instance und Testen.

Beispielbefehl

>> mount

Beispielausgabe

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

NFS-Clientversion

Das Protokoll Network File System (NFS) Version 4.1 (NFSv4) bietet eine bessere Leistung für parallele Lesevorgänge mit kleinen Dateien (mehr als 10.000 Dateien pro Sekunde) als NFSv4.0 (weniger als 1.000 Dateien pro Sekunde).

Weitere Informationen finden Sie unter Mount-Einstellungen für NFS-Clients.

Einschränkungen auf der Clientseite

Engpass bei der EC2-Instance

Wenn Ihre Anwendung, die das Dateisystem verwendet, nicht die von EFS erwartete Leistung erzielt, optimieren Sie die Anwendung. Vergleichen Sie außerdem den Host oder Service, auf dem Ihre Anwendung gehostet wird, wie Amazon EC2, AWS Lambda usw. Eine Ressourcenknappheit auf der EC2-Instance kann die Fähigkeit Ihrer Anwendung beeinträchtigen, EFS effektiv zu nutzen.

Um zu überprüfen, ob EC2 für Ihre Anwendungsanforderungen nicht ausreichend bereitgestellt ist, überwachen Sie Amazon-EC2-CloudWatch-Metriken wie CPU, Amazon Elastic Block Store (Amazon EBS) usw. Durch die Analyse verschiedener Metriken zu Ihrer Anwendungsarchitektur und Ihren Ressourcenanforderungen können Sie feststellen, ob Sie Ihre Anwendung oder Instance entsprechend Ihren Anforderungen neu konfigurieren sollten.

Verwenden der Linux-Kernel-Version 4.0+

Für eine optimale Leistung und zum Vermeiden einer Vielzahl bekannter NFS-Client-Fehler empfiehlt es sich, ein AMI mit einer Linux-Kernel-Version 4.0 oder neuer zu verwenden.

Eine Ausnahme von dieser Regel bilden RHEL und CentOS 7.3 und höher. Der Kernel für diese Betriebssysteme erhielt rückportierte Versionen der Korrekturen und Verbesserungen, die auf NFS v4.1 angewendet wurden. Weitere Informationen finden Sie unter NFS-Unterstützung.

Dateien werden kopiert

Wenn Sie Dateien mit dem Befehl cp kopieren, kann es zu einer Langsamkeit kommen. Dies liegt daran, dass der Befehl copy ein serieller Vorgang ist, was bedeutet, dass er jede Datei einzeln kopiert. Wenn die Dateigröße jeder Datei klein ist, ist der Durchsatz zum Senden dieser Datei gering.

Möglicherweise stellen Sie auch eine Latenz beim Senden von Dateien fest. Die verteilte Natur von EFS bedeutet, dass es auf alle Bereitstellungpunkte repliziert werden muss, sodass ein Overhead pro Dateivorgang entsteht. Daher ist eine Latenz beim Senden von Dateien ein erwartetes Verhalten.

Empfehlungen

Eine bewährte Methode besteht darin, parallele I/O-Vorgänge auszuführen, wie z. B. die Verwendung von rsync. Wenn Sie rsync verwenden, beachten Sie, dass cp und rsync in seriellen Vorgängen (Single-Threading) statt in parallelen Vorgängen arbeiten. Dadurch wird das Kopieren langsamer. Verwenden Sie Tools wie fpart oder NU Parallel. Fpart ist ein Tool, mit dem Sie Dateibäume sortieren und in „Partitionen“ packen können. Fpart enthält ein Shell-Skript namens fpsync, das fpart und rsync umschließt, um mehrere rsync parallel zu starten. Fpsync bietet seinen eigenen eingebetteten Scheduler. Auf diese Weise können Sie diese Aufgaben schneller erledigen als mit der gebräuchlicheren seriellen Methode.

Weitere Informationen finden Sie unter Tipps zur Amazon EFS-Leistung.


Relevante Informationen

Kontingente für NFS-Clients

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 2 Jahren