Bearbeiter | (nur für Mitarbeiter:innen einsehbar) |
Betreuer | Arthur Martens |
Professor | Prof. Dr. Rüdiger Kapitza |
Projekt | DNV Memory |
IBR Gruppe | DS (Prof. Kapitza) |
Art | Bachelorarbeit |
Status | abgeschlossen |
Beginn | 2017-05-19 |
MotivationPersistenter Speicher fasst eine Gruppe von Technologien zusammen mit denen ein Hauptspeicher realisiert werden kann der ohne konstante Stromzufuhr seinen Zustand beibehält. Prominente Beispiele sind hier Intels 3D XPoint bzw. Optane Produkte sowie batteriegestützte NVDIMM-Module der Firma Viking. Um die Leistungsfähigkeit des persistenten Speichers voll auszuschöpfen, ist ein direkter Datenzugriff von der CPU erstrebenswert. Das Betriebssystem muss hierfür den persistenten Speicher verwalten und über den Systemaufruf „mmap“ dem Benutzerprozess seitenweise zur Verfügung stellen. Hierfür muss die Speicherverwaltung ihren Zustand selbst im persistenten Speicher ablegen. Eine Herausforderung bei der Verwendung des persistenten Speichers sind Stromausfälle. Dabei wird die Ausführung des Programms unkontrolliert beendet, wodurch persistente Daten in einem irreparabel inkonsistenten Zustand hinterlassen werden. Darüber hinaus sind auch Bitfehler, die z. B. durch Umweltstrahlung und Alterungsprozesse entstehen können, im persistenten Speicher zu erwarten. Dadurch kann die Integrität der Daten beschädigt werden. Dies ist besonders schwerwiegend, da die Daten im persistenten Speicher üblicherweise nicht redundant gespeichert werden und Fehler nicht durch einen Neustart des Systems behoben werden können. AufgabenstellungZiel dieser Arbeit ist die Implementierung eines Linux Kernel-Moduls für die seitenweise Speicherverwaltung des persistenten Speichers, das sowohl robust gegenüber Stromausfällen als auch gegenüber Bitfehlern ist. Um die Toleranz gegenüber Stromausfällen zu erreichen, sollen alle persistenten Daten des Kernel-Moduls redundant in zwei Versionen abgelegt sein. Eine dieser Versionen übernimmt eine aktive Rolle und stellt den gültigen Zustand dar, von dem Daten nur gelesen werden dürfen. Analog ist die Rolle der anderen Version inaktiv. Sie beinhaltet eine modifizierbare Kopie der aktiven Version. Alle Zustandsänderungen sollen auf diese Version angewendet werden. Erreicht die inaktive Version einen neuen, konsistenten Zustand, so sollen die Rollen beider Versionen über eine atomare Änderung eines globalen, 64 Bit großen, Datenwortes getauscht werden. Für die Implementierung eines Toleranzmechanismus für Bitfehler soll die Zeit ausgenutzt werden, in der beide Versionen identisch sind. Die Validierung der Daten kann bei lesenden Zugriffen erfolgen oder direkt vor der ersten Änderung des inaktiven Zustands. Für den Fall eines Fehlers soll als Entscheidungshilfe ein zusätzliches, globales Fehlererkennungswort hinzugezogen werden. Optional kann die Implementierung generalisiert werden, sodass sie leicht auf andere Programme angewendet werden kann. Die Qualität der Implementierung soll mit Hilfe von Unit-Tests hinreichend sichergestellt werden. Darüber hinaus soll ermittelt werden, wie stark die Zuverlässigkeitsaspekte die Performance beeinflussen und wann eine Validierung der Daten am besten durchzuführen ist. Optional kann mit Fehlerinjektionsexperimenten die Zuverlässigkeit quantifiziert werden. Links |
Technische Universität Braunschweig
Universitätsplatz 2
38106 Braunschweig
Postfach: 38092 Braunschweig
Telefon: +49 (0) 531 391-0