Checkpoint / Neustart mit Core Dump in Linux

8

Kann Checkpoint / Neustart mit dem Core-Dump eines Prozesses implementiert werden? Die Core-Datei enthält einen vollständigen Speicherauszug des Prozesses, also sollte es theoretisch möglich sein Stellen Sie den Prozess auf denselben Zustand wieder her, in dem er sich befand, als der Kern ausgegeben wurde.

    
rogue_knight9 16.04.2013, 21:42
quelle

4 Antworten

5

Nein, das ist im Allgemeinen ohne spezielle Unterstützung vom Kernel nicht möglich. Der Kernel behält eine Menge von pro-Prozess-Zustand, wie die Datei-Deskriptor-Tabelle, IPC-Objekte, etc.

Wenn Sie bereit wären, viele vereinfachende Annahmen zu treffen, wie zum Beispiel keine offenen Dateien, keine offenen Sockets, keine lebenden IPC-Objekte, keine gemeinsamen Speicherbereiche und mehr, dann wäre es in der Theorie möglich, aber in der Praxis glaube ich nicht, dass es mit Linux auch mit diesen Konzessionen möglich ist.

    
Adam Rosenfield 16.04.2013, 21:56
quelle
8

Ja, das ist möglich. GNU Emacs tut dies, um seine Startzeit zu optimieren. Es lädt eine Reihe von Lisp-Dateien, um ein Bild zu erzeugen, und legt dann einen Kern ab, der neu gestartet werden kann.

Vor einigen Jahren habe ich einen Patch für GNU Make 3.80 erstellt, um genau dasselbe zu tun (mit Code, der von GNU Emacs entliehen wurde).

Mit diesem Patch haben Sie eine neue Option in make: make --dump . Das Dienstprogramm liest nun Ihre Makefile und erzeugt dann, anstatt die Regeln auszuführen, einen Core-Dump, der neu gestartet werden kann, um den eigentlichen Build durchzuführen (Auswertung der geparsten Regelbaumstruktur).

Dies war ein Speichern, weil das Projekt so groß war, dass das Laden aller Erstellungsregeln über den Quellbaum 30 Sekunden dauerte! Mit dieser Optimierung wurden inkrementelle Builds fast sofort gestartet, ohne die halbe Minute Startup Penalty.

Dafür ist keine Kernel-Unterstützung erforderlich. Was benötigt wird, ist Kenntnisse über die Struktur der Kerndatei.

Zusätzlich zu diesem Ansatz gab es vor vielen Jahren ein Prozess-Checkpoint-Projekt für Linux (frage mich, was damit passiert ist).

    
Kaz 16.04.2013 22:55
quelle
6

Wie ich bereits erwähnt habe, könntest du nach Anwendungs-Checkpoint suchen und einige Bibliotheken wie Berkley Lab Checkpoint & amp; Neustart Diese Bibliotheken verwenden jedoch nicht genau eine Core (5) Speicherauszugsdatei und haben einige Einschränkungen und Konventionen darüber, was das Prüfpunktprogramm tun kann und was genau im Prüfpunktbild persistent ist. (Offene Dateideskriptoren und Netzwerk-Sockets können normalerweise nicht persistiert werden).

Einige Unix (und vielleicht einige gepatchte Linux-Kernel) hatten nur begrenzte Kontrollpunkte im Kernel selbst (in den 1980er Jahren hatte Cray Unix einige).

    
Basile Starynkevitch 17.04.2013 05:43
quelle
0

Debian hat eine Reihe von Paketen, die Sie sich anschauen können:

  1. blcr-util - Userspace Tools zum Checkpoint und Neustart von Linux-Prozessen

Dies steht im Zusammenhang mit BLCR (Berkeley Lab Checkpoint / Restart), siehe Ссылка

  1. criu - Checkpoint und Wiederherstellung im Benutzerbereich Ссылка

    2.1 docker - unterstützt Checkpointing in aktuellen Versionen, siehe Ссылка

    2.1. containerd - Daemon zur Kontrolle von runC

Dies enthält eine Prüfpunktfunktion, die interessant ist.

Siehe auch openvz, das Live-Migration unterstützt: Ссылка

    
h4ck3rm1k3 10.09.2016 17:22
quelle

Tags und Links