Entwurf und Implementierung einer leichtgewichtigen Linux-Programmbibliothek für persistent-adressierte, nicht-flüchtige Speicherbereich

Nichtflüchtiger Hauptspeicher (NVRAM) ist eine neue Speichertechnologie, die in Geschwindigkeit und Latenz in der Größenordnung von DRAM liegt, allerdings ihre Speicherinhalte über Powerzyklen behält. Es wird prognostiziert, dass NVRAM größer und billiger als DRAM, während es in Latenz und Energieverbrauch vergleichbar mit DRAM wird. Auf Werte im NVRAM kann auf Byte-Granularität zugegriffen werden (anders als bei SSDs), d.h. ähnlich wie beim DRAM können Werte über einfache mov-Instruktionen zugegriffen werden.

Um effektiv mit NVRAM zu arbeiten, wurde bereits im Institut ein low level Programmiermodell entwickelt. Neben den Werten im NVRAM werden dabei auch die Adressen von Objekten persistiert - über alle Prozesse eines Systems hinweg.

Auf Basis der Kernelimplementierung soll in dieser Arbeit eine Userland-Bibliothek entworfen und implementiert werden, um mit möglichst geringen Änderungen in Legacy-Anwendungen und Bibliotheken mit NVRAM arbeiten zu können. Dabei werden bestehende Ansätze gesichtet, evaluiert und auf unser Programmiermodell angepasst. Wichtige Aspekte sind dabei eine Speicherverwaltung und Synchronisationsprimitive. Ziel ist es, eine leichtgewichtige Userland Library zu implementieren, die auch verschiedene Konsistenzmodelle abbilden kann.

Anschließend werden die angepassten Algorithmen gegen die ursprüngliche Implementation verglichen und Performance und Speicheroverheads evaluiert. Weiter soll Kompatibilität mit existierenden Bibliotheken und Anwendungen gezeigt werden, sowie in einem Macrobenchmark der Nutzen von NVRAM als Datencache/Storage gezeigt werden.

Voraussetzungen

  • Erfahrungen in C/C++
  • Erfahrung mit Linux, wenigstens als Anwendungsentwickler
  • Kenntnisse aus der Vorlesung Grundlagen der Betriebssysteme oder äquivalenter Veranstaltung

Empfohlene Fähigkeiten

  • Erfahrungen als Linux-Kernel Hacker