MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

XFS vs. EXT4 – Vergleich der MongoDB-Leistung auf AWS EC2

AWS ist eine äußerst beliebte und vertrauenswürdige Cloud-Plattform für die Verwaltung von MongoDB-Bereitstellungen, aber die Frage zwischen XFS und EXT4 lässt viele Entwickler fragen, welches Linux-Dateisystem ihnen die beste Leistung für ihre Anwendungen bietet. Der offizielle Leitfaden von MongoDB zur Bereitstellung in der Produktion empfiehlt die Verwendung des XFS-Dateisystems unter Linux, insbesondere bei der Bereitstellung der WiredTiger-Speicher-Engine. Die Empfehlung sagt uns jedoch nicht, warum wir eine Leistungssteigerung erwarten sollten oder welche Art von Leistungssteigerungen wir erleben werden. Wir haben uns entschieden, der Sache auf den Grund zu gehen, indem wir die MongoDB-Leistung auf XFS quantitativ untersucht haben, damit Sie vergleichen können, ob EXT4 eine bessere Wahl für Ihre AWS EC2-Instances ist.

XFS-Dateisystem

XFS ist ein hochskalierbares, hochleistungsfähiges 64-Bit-Journaling-Dateisystem, das 1993 bei SGI entwickelt und 2002 auf Linux portiert wurde. Es unterstützt hochgradig parallele E/A und Dateisystemgrößen von bis zu 9 Exabyte und zeichnet nur die Metadaten des Dateisystems auf. nicht die Benutzerdaten. Einige wichtige leistungssteigernde Funktionen von XFS sind:

    • Der parallele Zugriff über Zuordnungsgruppen stellt sicher, dass mehrere Threads gleichzeitig E/A auf demselben Volume ausführen können.
    • Die umfangsbasierte Zuordnung reduziert die Fragmentierung, die Metadatengröße und verbessert die E/A-Leistung, indem weniger und größere E/A-Vorgänge zugelassen werden.
    • Verzögerte Zuordnung verbessert Datenkontinuität und Leistung. Die Fragmentierung wird reduziert, indem Schreibvorgänge kombiniert und Extents in großen Blöcken zugewiesen werden, und zufällig geschriebene Dateien (z. B. solche mit Speicherzuordnung) können fortlaufend zugewiesen werden

Es gibt viele weitere XFS-Funktionen zu entdecken, und Sie können mehr auf der XFS-Website und im XFS-Benutzerhandbuch erfahren.

Leistungstests auf MongoDB ausführen

Wie Sie vielleicht in unseren vorherigen Posts erfahren haben, haben wir YCSB verwendet, um die MongoDB-Leistung zu bewerten, einschließlich eines detaillierten Vergleichs der MMAP-gestützten MongoDB-Leistung bei verschiedenen Cloud-Anbietern. Wir haben uns entschieden, dieselbe Workload von YCSB zu verwenden, die wir zuvor verwendet haben:Workload A (Heavy Update:50 % Reads + 50 % Updates). Die Einfügephase der Arbeitslast misst die Leistung von 100 % Schreibarbeitslasten, während die Ladephase die Leistung gegen die tatsächliche Arbeitslast (50/50 % Lese-/Aktualisierungslast) misst.

Unsere Tests wurden auf dem Sync-MongoDB-Treiber ausgeführt und die Linux-Distribution war Amazon Linux (4.4.44-39.55.amzn1.x86_64). Wir haben MongoDB Version 3.2.10 mit WiredTiger für unsere Tests ausgewählt, da mit WT bessere Gewinne erwartet wurden, und die Tests auf zwei verschiedenen Hardware-Rigs durchgeführt:

  • Hochgeschwindigkeitsfestplatten :AWS EC2 c3.large-Instanz, bei der MongoDB SSD-Festplatten in einer RAID 0-Konfiguration für die Speicherung verwendet hat (zugeordnet zu ScaleGrid-Clustergröße HighPerfLarge).
  • Festplatten mittlerer Geschwindigkeit :AWS EC2 m3.medium-Instanz, bei der MongoDB einen von EBS (Elastic Block Store) bereitgestellten IOPS-Festplattensatz mit 300 IOPS verwendet hat (zugeordnet zu ScaleGrid-Clustergröße Medium).

Hinweis:Jede Art von Leistungstests in virtualisierten Umgebungen sollte mit Vorsicht betrachtet werden. Unser Ziel ist es hier nicht, Leistungszahlen in diesen Umgebungen zu vergleichen, sondern eine quantitative Messung der Leistungsunterschiede zwischen EXT4 und XFS in derselben virtualisierten Umgebung bereitzustellen.

Hochgeschwindigkeits-SSD-Festplatte

Wir haben den folgenden Test auf unserem Hochleistungs-Rig durchgeführt:

  1. 6 Millionen eingefügt Datensätze bei verschiedenen Serverlasten (durch Variieren der Anzahl der YCSB-Client-Threads).
  2. Durchgeführte Arbeitslast bei Vorgangsanzahl von 10 Millionen Aufzeichnungen bei verschiedenen Serverlasten.

Ergebnisse der SSD-Festplattenleistung

Durchsatz-/Latenzeigenschaften für das Einfügen von 6 Millionen Datensätzen in der Hochleistungskonfiguration:

Durchsatz-/Latenzeigenschaften für 10 Millionen Schreib-/Aktualisierungsvorgänge in der Hochleistungskonfiguration:

SSD-Festplattenbeobachtungen

  • XFS ist sowohl während der Einfügungsphase als auch während der Workload-Ausführung spektakulär schnell. Bei geringerer Threadanzahl ist es bis zu 50 % schneller als EXT4. Als die Last zunahm, wurden beide Dateisysteme durch den Durchsatz der zugrunde liegenden Hardware begrenzt, aber XFS behielt immer noch seinen Vorsprung.
  • Die Latenz für XFS und EXT4 war in beiden Durchläufen vergleichbar. Beachten Sie, dass alle Zahlen in Mikrosekunden angegeben sind.

Langsamere von EBS bereitgestellte IOPS-Festplatte (300 IOPS)

Der folgende Test wurde auf unserem mittelgroßen Leistungsprüfstand durchgeführt:

  1. 3 Millionen eingefügt Datensätze bei verschiedenen Serverlasten (durch Variieren der Anzahl der YCSB-Client-Threads).
  2. Durchgeführte Arbeitslast bei Vorgangsanzahl von 5 Millionen Aufzeichnungen bei verschiedenen Serverlasten.

Angesichts unserer Erfahrung mit der High-End-Konfiguration erwarteten wir, dass XFS auch in diesem Rig einen ordentlichen Vorsprung haben würde.

Ergebnisse der IOPS-Datenträgerleistung

Durchsatz-/Latenzeigenschaften für das Einfügen von 3M-Datensätzen in der Medienkonfiguration:

Durchsatz-/Latenzeigenschaften für 5 Millionen Schreib-/Aktualisierungsvorgänge auf der Medienkonfiguration:

IOPS-Festplattenbeobachtungen

  • XFS ist vergleichbar, wenn auch etwas hinter EXT4 bei der mittelgroßen Konfiguration. Es scheint, dass die Leistungsoptimierungen von XFS auf dieser Ebene der Systemressourcen keinen wirklichen Unterschied machen. Dies ist eine wichtige Beobachtung, wenn Sie erwägen, XFS in der Hoffnung auf eine verbesserte Leistung auf kleineren Instanzen bereitzustellen.

XFS vs. EXT4 auf AWS EC2

In Bezug auf die Leistung ist XFS in der Tat ein Kraftmultiplikator, wenn es mit Hochgeschwindigkeitsfestplatten gepaart wird, von denen es wirklich profitieren kann. Bei Low- bis Mid-End-Systemen scheint es nicht viel zur Leistungssteigerung beitragen zu können.