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.
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.
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).
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).
Debian hat eine Reihe von Paketen, die Sie sich anschauen können:
Dies steht im Zusammenhang mit BLCR (Berkeley Lab Checkpoint / Restart), siehe Ссылка
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: Ссылка
Tags und Links linux coredump checkpoint