Erweiterung des Python-Programmiermodells um NVRAM-persistierte Sprachobjekte

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

Objekte in Python werden grundsätzlich im DRAM erstellt. Der Speicher-Allokator im Python-Interpreter holt sich über die gewöhnlichen Wege vom Betriebssystem Arbeitsspeicher-Seiten, die mit physischem DRAM unterlegt werden. Es gibt im Standard-Python keine Möglichkeit dem Allokator andere Speicherbereiche für die Allokation anzugeben.

Zum Umgang mit nichtflüchtigem Speicher soll in dieser Arbeit der Python-Interpreter verändert werden, sodass einzelne Objekte mitsamt von diesen erreichbare andere Objekte aus dem DRAM in NVM geschoben werden sollen. Das Python-Programm soll sich den Zeitpunkt selbst aussuchen können, wann Objekte in NVM verschoben werden. Weiter soll es seine Objekte bei einem Neustart (zunächst mit unverändertem Code) wiederfinden können. Im Laufe der Arbeit müssen Algorithmen entworfen werden um sicherzustellen, dass Schreibzugriffe auch persistent durchgehen, ohne dabei Konsistenz-Kriterien zu verletzen.

Voraussetzungen

  • Erfahrungen mit C/C++
  • Erfahrungen mit Python
  • Kenntnisse aus der Vorlesung Grundlagen der Betriebssysteme oder äquivalenter Veranstaltung