Artikel von Mario Gallegos vom HPC and AI Innovation Lab im Oktober 2019
Anzahl der Client-Nodes |
16 |
Client-Node |
C6320 |
Prozessoren pro Client-Node |
2 x Intel(R) Xeon(R) Gold E5-2697v4 mit 18 Cores bei 2,30 GHz |
Arbeitsspeicher pro Client-Node |
12 x RDIMMs mit 16 GiB und 2400 MT/s |
BIOS |
2.8.0 |
BS-Kernel |
3.10.0-957.10.1 |
GPFS-Version |
5.0.3 |
./iozone -i0 -c -e -w -r 8M -s 128G -t $Threads -+n -+m ./threadlist
./iozone -i1 -c -e -w -r 8M -s 128G -t $Threads -+n -+m ./threadlist
mpirun --allow-run-as-root -np $Threads --hostfile my_hosts.$Threads --mca btl_openib_allow_ib 1 --mca pml ^ucx --oversubscribe --prefix /mmfs1/perftest/ompi /mmfs1/perftest/lanl_ior/bin/ior -a POSIX -v -i 1 -d 3 -e -k -o /mmfs1/perftest/tst.file -w -s 1 -t 8m -b 128G
mpirun --allow-run-as-root -np $Threads --hostfile my_hosts.$Threads --mca btl_openib_allow_ib 1 --mca pml ^ucx --oversubscribe --prefix /mmfs1/perftest/ompi /mmfs1/perftest/lanl_ior/bin/ior -a POSIX -v -i 1 -d 3 -e -k -o /mmfs1/perftest/tst.file -r -s 1 -t 8m -b 128G
./iozone -i2 -c -O -w -r 4K -s 32G -t $Threads -+n -+m ./threadlist
mpirun --allow-run-as-root -np $Threads --hostfile my_hosts.$Threads --prefix /mmfs1/perftest/ompi --mca btl_openib_allow_ib 1 /mmfs1/perftest/lanl_ior/bin/mdtest -v -d /mmfs1/perftest/ -i 1 -b $Directories -z 1 -L -I 1024 -y -u -t -F
Anzahl der Threads |
Anzahl der Verzeichnisse pro Thread |
Gesamtzahl der Dateien |
1 |
2048 |
2097152 |
2 |
1024 |
2097152 |
4 |
512 |
2097152 |
8 |
256 |
2097152 |
16 |
128 |
2097152 |
32 |
64 |
2097152 |
64 |
32 |
2097152 |
128 |
16 |
2097152 |
256 |
8 |
2097152 |
512 |
4 |
2097152 |
1024 |
2 |
2097152 |
mpirun --allow-run-as-root -np $Threads --hostfile my_hosts.$Threads --prefix /mmfs1/perftest/ompi --mca btl_openib_allow_ib 1 /mmfs1/perftest/lanl_ior/bin/mdtest -v -d /mmfs1/perftest/ -i 1 -b $Directories -z 1 -L -I 1024 -y -u -t -F -w 4K -e 4K
Abbildung 6: Metadatenperformance – kleine Dateien (4K)
Das System erzielt sehr gute Ergebnisse bei Stat- und Removal-Vorgängen und erreicht seinen Spitzenwert bei 128 Threads mit 7,7 Mio. OP/s bzw. 1 Mio. OP/s. Entfernungsvorgänge erreichten das Maximum von 37,3K op/s und Erstellungsvorgänge erreichten ihren Spitzenwert mit 55,5 K op/s, beide bei 512 Threads. Stat- und Entfernungsvorgänge weisen eine größere Variabilität auf, aber sobald sie ihren Spitzenwert erreicht haben, sinkt die Leistung nicht unter 4 Mio. OP/s für Stats und 200.000 OP/s für Removal. Erstellungs- und Lesevorgängen weisen weniger Schwankungen auf und die Performance steigt mit zunehmender Anzahl der Threads an.
Da sich diese Zahlen auf ein Metadatenmodul mit einem einzigen ME4024 beziehen, steigt die Performance für jedes zusätzliche ME4024-Array, wir können jedoch nicht einfach von einer linearen Steigerung für jeden Vorgang ausgehen. Wenn die gesamte Datei nicht auf den Inode für eine solche Datei passt, werden Datenziele auf den ME4084s verwendet, um die 4K-Dateien zu speichern, wodurch die Performance bis zu einem gewissen Grad eingeschränkt wird. Da die Inode-Größe 4 KiB beträgt und weiterhin Metadaten gespeichert werden müssen, passen nur Dateien mit ca. 3 KiB auf den Inode und jede Datei, die größer ist, verwendet Datenziele.
Dieser Test ist fast identisch mit den vorherigen, außer dass kleine Dateien von 3 KiB verwendet wurden. Der Hauptunterschied besteht darin, dass diese Dateien vollständig in den Inode passen. Aus diesem Grund werden die Speicher-Nodes und ihre ME4084s nicht verwendet. Die Gesamtgeschwindigkeit wird verbessert, da nur SSD-Medien als Speicher verwendet werden und weniger Netzwerkzugriffe erforderlich sind.
Der folgende Befehl wurde verwendet, um die Benchmark auszuführen, wobei „Threads“ die Variable mit der Anzahl der verwendeten Threads darstellt (1 bis 512, erhöht in Zweierpotenzen) und „my_hosts.$Threads“ die entsprechende Datei ist, die jeden Thread einem anderen Node zugewiesen hat, wobei das Rundlaufverfahren verwendet wurde, um die Threads gleichmäßig auf die 16 Compute-Nodes zu verteilen.
mpirun --allow-run-as-root -np $Threads --hostfile my_hosts.$Threads --prefix /mmfs1/perftest/ompi --mca btl_openib_allow_ib 1 /mmfs1/perftest/lanl_ior/bin/mdtest -v -d /mmfs1/perftest/ -i 1 -b $Directories -z 1 -L -I 1024 -y -u -t -F -w 3K -e 3K
Abbildung 7: Metadatenperformance – kleine Dateien (3K)
Das System erzielt sehr gute Ergebnisse bei Statistik- und Lesevorgängen und erreicht seinen Spitzenwert bei 256 Threads mit 8,29 Mio. OP/s bzw. 5,06 Mio. OP/s. Entfernungsvorgänge erreichten das Maximum von 609.000 OP/s bei 128 Threads und Erstellungsvorgänge erreichten ihren Spitzenwert mit 78.000 OP/s bei 512 Threads. Statistik- und Lesevorgänge weisen eine größere Variabilität auf als Erstellen und Entfernen. Beim Entfernen ist ein leichter Leistungsabfall bei den beiden höheren Threads zu verzeichnen, was darauf hindeutet, dass die anhaltende Leistung nach 128 Threads etwas über 400.000 OP/s liegt. Die Anzahl der erstellten Threads wurde auf bis zu 512 erhöht, scheint aber ein Plateau zu erreichen, sodass die maximale Leistung möglicherweise immer noch unter 100.000 OP/s liegt.
Da solche kleinen Dateien vollständig auf dem SSD-basierten Metadatenmodul gespeichert werden, können Anwendungen, die eine überragende Leistung für kleine Dateien benötigen, ein oder mehrere optionale High-Demand-Metadatenmodule verwenden, um die Leistung kleiner Dateien zu steigern. Die Dateien, die in den Inode passen, sind jedoch nach aktuellen Standards winzig. Da die Metadatenziele RAID1s mit relativ kleinen SSDs verwenden (maximale Größe ist 19,2 TB), ist die Kapazität im Vergleich zu den Storage Nodes begrenzt. Daher muss darauf geachtet werden, dass Metadatenziele nicht gefüllt werden, da dies zu unnötigen Ausfällen und anderen Problemen führen kann.
Unter den Funktionen von PixStor kann das Monitoring des Dateisystems über erweiterte Analysen unerlässlich sein, um die Verwaltung erheblich zu vereinfachen und proaktiv oder reaktiv Probleme oder potenzielle Probleme zu finden. Als Nächstes werden wir einige dieser Funktionen kurz durchgehen.
Abbildung 8 zeigt nützliche Informationen basierend auf der Dateisystemkapazität. Auf der linken Seite wird der insgesamt belegte Dateisystemspeicherplatz und die zehn wichtigsten Nutzer basierend auf der genutzten Dateisystemkapazität angezeigt. Auf der rechten Seite sehen Sie eine Verlaufsansicht mit der über viele Jahre genutzten Kapazität, dann die zehn am häufigsten verwendeten Dateitypen und die zehn wichtigsten Dateisätze, beide basierend auf der genutzten Kapazität, in einem Format, das Pareto-Diagrammen ähnelt (ohne die Linien für die kumulierten Gesamtsummen). Mit diesen Informationen können Sie leicht herausfinden, ob Nutzer mehr als ihren angemessenen Anteil am Dateisystem erhalten, Trends der Kapazitätsauslastung als Entscheidungshilfe für zukünftiges Kapazitätswachstum und welche Dateien den größten Speicherplatz belegen oder welche Projekte den größten Teil der Kapazität beanspruchen.
Abbildung 8: PixStor Analytics – Ansicht
"Kapazität" Abbildung 9 zeigt eine Ansicht der Dateianzahl mit zwei sehr nützlichen Möglichkeiten, Probleme zu finden. In der ersten Hälfte des Bildschirms sind die zehn größten Nutzer in einem Kreisdiagramm und die zehn wichtigsten Dateitypen und die zehn wichtigsten Dateisätze (z. B. Projekte) in einem Format ähnlich wie Pareto-Diagramme (ohne die Linien für die kumulierten Summen) dargestellt, die alle auf der Anzahl der Dateien basieren. Diese Informationen können verwendet werden, um einige wichtige Fragen zu beantworten. Zum Beispiel, welche Nutzer das Dateisystem monopolisieren, indem sie zu viele Dateien erstellen, welcher Dateityp einen Metadaten-Albtraum verursacht oder welche Projekte die meisten Ressourcen verwenden.
Die untere Hälfte hat ein Histogramm mit der Anzahl der Dateien (Häufigkeit) für Dateigrößen mit 5 Kategorien für verschiedene Dateigrößen. Dies kann verwendet werden, um eine Vorstellung von den Dateigrößen zu erhalten, die im Dateisystem verwendet werden, die auf die Dateitypen abgestimmt sind, um zu entscheiden, ob eine Komprimierung vorteilhaft ist.
Abbildung 9: PixStor Analytics – Ansicht der Dateianzahl
Die aktuelle Lösung war in der Lage, eine recht gute Leistung zu liefern, die unabhängig vom verwendeten Speicherplatz (da das System im Streumodus formatiert wurde) stabil sein dürfte, wie in Tabelle 4 zu sehen ist. Darüber hinaus skaliert die Kapazität und Performance der Lösung linear, wenn mehr Storage Nodes hinzugefügt werden. Eine ähnliche Performancesteigerung ist vom optionalen High Demand Metadata Module zu erwarten. Diese Lösung bietet HPC-KundInnen ein äußerst zuverlässiges paralleles Dateisystem, das von vielen Top-500-HPC-Clustern verwendet wird. Darüber hinaus bietet es außergewöhnliche Suchfunktionen, erweitertes Monitoring und Management, und das Hinzufügen optionaler Gateways ermöglicht die Dateifreigabe über allgegenwärtige Standardprotokolle wie NFS, SMB und andere für so viele Clients wie nötig.
Tabelle 4 Spitzenleistung und anhaltende Leistung
|
Spitzenleistung |
Kontinuierliche Performance |
||
Schreiben |
Read |
Schreiben |
Read |
|
Große sequenzielle Vorgänge n Clients zu n Dateien |
16,7 Gbit/s |
23 Gbit/s |
16,5 Gbit/s |
20,5 Gbit/s |
Große sequenzielle Vorgänge n Clients zu einer einzigen freigegebenen Datei |
16,5 Gbit/s |
23,8 GB/s |
16,2 Gbit/s |
20,5 Gbit/s |
Zufällige kleine Blöcke von n Clients zu n Dateien |
15,8 KIOps |
20,4 KIOps |
15,7 KIOps |
20,4 KIOps |
Metadaten, Leere Dateien erstellen |
169.400 IOPS |
127.200 IOps |
||
Metadaten, Statistik leere Dateien |
11,2 Mio. IOps |
3,3 Mio. IOps |
||
Metadaten, Leere Dateien lesen |
4,8 Mio. IOps |
2,4 Mio. IOPS |
||
Metadaten, Leere Dateien entfernen |
194,2K IOps |
144,8K IOps |
||
Metadaten, Erstellen von 4-KiB-Dateien |
55.400 IOps |
55.400 IOps |
||
Metadaten, Statistik 4-KiB-Dateien |
6,4 Mio. IOps |
4 Mio. IOps |
||
Metadaten, Lesen von 4-KiB-Dateien |
37,3K IOps |
37,3K IOps |
||
Metadaten, Entfernen von 4-KiB-Dateien |
1 Mio. IOps |
219,5K IOps |
Da die Lösung mit Cascade Lake CPUs und schnellerem RAM veröffentlicht werden soll, werden einige Performance-Stichprobenprüfungen durchgeführt, sobald das System über die endgültige Konfiguration verfügt. Außerdem muss das optionale High Demand Metadata Module mit mindestens 2 ME4024s und 4-KiB-Dateien getestet werden, um besser zu dokumentieren, wie sich die Metadaten-Performance bei Verwendung von Datenzielen skalieren lässt. Darüber hinaus wird die Performance der Gateway-Nodes gemessen und zusammen mit allen relevanten Ergebnissen aus den Stichprobenprüfungen in einem neuen Blog oder einem Whitepaper veröffentlicht. Abschließend sind weitere Lösungskomponenten geplant, die getestet und veröffentlicht werden, um noch mehr Funktionen bereitzustellen.