Ich weiß, dass eine Seiten-Cache-Seite, wenn sie geändert wird, als verschmutzt markiert ist und ein Zurückschreiben erfordert, aber was passiert, wenn:
Szenario: Die Datei / apps / EXE, bei der es sich um eine ausführbare Datei handelt, wird vollständig im Seiten-Cache abgelegt (alle Seiten befinden sich im Cache / Speicher) und von Prozess P ausgeführt
Die fortlaufende Veröffentlichung ersetzt dann / apps / EXE durch eine brandneue ausführbare Datei.
Annahme 1: Ich gehe davon aus, dass der Prozess P (und jeder andere mit einem Dateideskriptor, der auf die alte ausführbare Datei verweist) weiterhin den alten, im Speicher / in Apps / in der EXE-Datei ohne Probleme verwendet und dass jeder neue Prozess, der versucht, diesen Pfad auszuführen, diesen Pfad erhält die neue ausführbare Datei.
Annahme 2: Ich gehe davon aus, dass, wenn nicht alle Seiten der Datei in den Speicher gemappt sind, die Dinge in Ordnung sind, bis ein Seitenfehler vorliegt, der Seiten aus der Datei erfordert, die ersetzt wurden, und wahrscheinlich ein Fehler auftritt.
Frage 1: Wenn Sie alle Seiten der Datei mit so etwas wie vmtouch blockieren, ändert sich dadurch das Szenario überhaupt?
Frage 2: Wenn sich / apps / EXE auf einem entfernten NFS befindet, würde das einen Unterschied machen? (Nehme ich nicht an)
Bitte korrigieren oder validieren Sie meine 2 Annahmen und beantworten Sie meine 2 Fragen.
Nehmen wir an, dies ist eine CentOS 7.6-Box mit einer Art 3.10.0-957.el7-Kernel
Update: Wenn ich weiter darüber nachdenke, frage ich mich, ob dieses Szenario nicht anders ist als jedes andere Dirty-Page-Szenario.
Ich nehme an, dass der Prozess, der die neue Binärdatei schreibt, einen Lesevorgang durchführt und alle Cache-Seiten abruft, da alle Seiten ausgelagert sind, und dann alle diese Seiten als verschmutzt markiert werden. Wenn sie gesperrt sind, handelt es sich nur um nutzlose Seiten, die den Hauptspeicher belegen, nachdem die Referenzanzahl auf Null gesetzt wurde.
Ich vermute, wenn die aktuell ausgeführten Programme enden, wird alles andere die neue Binärdatei verwenden. Vorausgesetzt, dass alles in Ordnung ist, denke ich, dass es nur interessant ist, wenn nur ein Teil der Datei ausgelagert wird.