High-Performance Computing: Effektive Softwareoptimierung mit File-I/O-Profiling

Bei High-Performance Computing ist der I/O-Durchsatz essenziell für die Systemleistung. Mit I/O-Profiling-Werkzeugen finden sich potenzielle Flaschenhälse.

Artikel verschenken
In Pocket speichern vorlesen Druckansicht
Effektive Softwareoptimierung mit File-I/O-Profiling
Lesezeit: 14 Min.
Von
  • Rainer Keller
  • Philipp Köster
Inhaltsverzeichnis

File-I/O kann aufgrund der benötigten Zeit zu einem Flaschenhals werden. Mit den passenden Werkzeugen ist dieser Flaschenhals jedoch lokalisierbar. Dadurch lassen sich die einzelnen Dateizugriffe durch die Auswahl der effizientesten Funktionen optimieren. Zudem kann man durch geschicktes Nutzen interner Puffer die Anzahl der Zugriffe auf das notwendige Minimum reduzieren. Im Rahmen einer derartigen Optimierung lässt sich zudem die Parallelisierung eines Programms überprüfen.

Das Schreiben und Lesen von Dateien kann viel Laufzeit eines Programms in Anspruch nehmen. Die Verarbeitung von Daten im Prozessor wird entsprechend dem mooreschen Gesetz immer schneller. Erreichte man dies früher durch mehr Transistoren auf der gleichen Fläche und durch einen schnelleren Takt, steigt heute die Rechenleistung zunehmend durch Parallelisierung. Durch diese Beschleunigung der Verarbeitung bei nahezu gleicher Bandbreite und Latenz des Hauptspeichers wird der Zugriff auf Daten zum Flaschenhals (Stichwort Memory-Wall). Die Prozessoren verarbeiten Daten schneller, als sie aus dem Hauptspeicher oder von einem Speichermedium gelesen werden können. Das Schreiben der Ergebnisse bremst die gesamte Berechnung.

Diese Entwicklung trifft Systeme umso stärker, je höher deren Parallelisierungsgrad ist. Das Problem ist essenziell bei Systemen, die nicht nur innerhalb eines Prozessorkerns (mittels SIMD und Hyperthreading), mit mehreren Kernen in einem Prozessor oder mehreren Prozessoren in einem Rechenknoten, sondern mit mehreren über ein Netzwerk verbundenen Rechenknoten arbeiten. Dies trifft insbesondere im High-Performance Computing (HPC) zu, bei dem Rechenknoten über schnelle Netzwerkverbindungen (InfiniBand) zu Clustern mit Millionen von Rechenkernen vernetzt sind (beispielsweise IBM Summit am ORNL mit 2414592 Kernen oder HPE Hawk am HLRS mit 720896 Kernen). Hier führt der hohe Parallelisierungsgrad über eine Vielzahl von Threads und Prozessen auf verschiedenen Rechenknoten zu vielen gleichzeitigen, zeitkritischen Zugriffen auf parallele Dateisysteme.