Nach 11 Monaten Entwicklung wurde die Version 4.3 des Tools CRIU (Checkpoint and Restore In Userspace) veröffentlicht, das zum Speichern und Wiederherstellen von Prozessen im Benutzerspeicher gedacht ist. Das Tool ermöglicht es, den Zustand eines oder mehrerer Prozesse zu speichern und anschlieĂend von dieser gespeicherten Position aus fortzufahren, auch nach einem Neustart des Systems oder auf einem anderen Server, ohne die bereits bestehenden Netzwerkverbindungen zu unterbrechen. Der Code des Projekts ist in C geschrieben und wird unter der GPLv2-Lizenz verbreitet. CRIU wird in Containerverwaltungssystemen wie OpenVZ, LXC/LXD und Docker eingesetzt. Die erforderlichen Ănderungen fĂŒr die Funktion von CRIU sind in den Hauptbestand des Linux-Kernels integriert.
Zu den Anwendungsbereichen der CRIU-Technologie zĂ€hlt die Bereitstellung eines Systemneustarts ohne Unterbrechung der AusfĂŒhrung langlaufender Prozesse, Live-Migration isolierter Container, Beschleunigung des Starts langsamer Prozesse (es kann mit einem Zustand begonnen werden, der nach der Initialisierung gespeichert wurde), DurchfĂŒhrung von Kernel-Updates ohne Neustart der Dienste, regelmĂ€Ăige Speicherung des Zustands langlaufender Berechnungsaufgaben zur Wiederaufnahme der Arbeit bei einem Absturz, Lastverteilung auf Knoten in Clustern, Duplizieren von Prozessen auf ein anderes GerĂ€t (Fork auf ein entferntes System), und das Erstellen von Snapshots von Benutzeranwendungen wĂ€hrend des Betriebs zur Analyse auf einem anderen System oder fĂŒr den Fall, dass weitere Aktionen im Programm zurĂŒckgezogen werden mĂŒssen.
In der neuen Version:
- Die Möglichkeit zur Kompression von Blöcken und Seiten im Speicher unter Verwendung des LZ4-Algorithmus und mehrerer Threads fĂŒr die Dekompression wurde implementiert.
- Die Leistung wurde durch den Einsatz von asynchronem Ein- und Ausgabe (AIO) beim Wiederherstellen von VMA-Seiten (Virtual Memory Area), einer neuen Methode zum Anhalten von Aufgaben ohne Verwendung von Hardware-HĂ€lterpunkten sowie durch die Parallelisierung der Wiederherstellung von memfd und anonymer gemeinsam genutzter Speicher verbessert.
- Die UnterstĂŒtzung fĂŒr die ARM64 GCS (Guarded Control Stack)-Erweiterung wurde hinzugefĂŒgt, die einen hardwareseitigen Schutz der RĂŒckgabeverzeichnisse aus Funktionen ermöglicht. Nach der Ăbergabe der Kontrolle an die Funktion werden die RĂŒckgabeverzeichnisse vom Prozessor nicht nur im normalen Stack, sondern auch in einem separaten Schattenstack gespeichert, der nicht direkt geĂ€ndert werden kann. Vor dem Verlassen der Funktion wird das RĂŒckgabeverzeichnis aus dem Schattenstack extrahiert und mit dem RĂŒckgabeverzeichnis aus dem Hauptstack verglichen.
- Ein Backend zum Speichern des Status des NVIDIA CUDA-Treibers wurde hinzugefĂŒgt.
- Die Wiederherstellung der GPU-Zuordnung wurde sichergestellt.
- FĂŒr den Treiber amdgpu wurde das Speichern und Wiederherstellen des Status der DRAM-Subsystempuffer (Direct Rendering Manager) und der DMA-BUF-Dateideskriptoren realisiert.
- Befehle zum Komprimieren und Dekomprimieren von Speicherabbildern im Offline-Modus wurden hinzugefĂŒgt.
- Die UnterstĂŒtzung fĂŒr das Speichern und Wiederherstellen von Informationen zur Bindung von UID-Identifikatoren an Netzwerksockets wurde hinzugefĂŒgt.
- Eine Option "âimage-io-mode" zum Schreiben und Lesen von Seitenbilddateien im O_DIRECT-Modus (umgehung des Seiten-Caches) wurde hinzugefĂŒgt.
Quelle: opennet.ru
