Was passiert auf meinem Debian VM-Computer mit 512 MB RAM und 348 MB Swap, wenn ich eine 1-GB-Datei in einem Editor öffne und nicht mehr genügend Speicherplatz habe?
Wird es das System zum Absturz bringen? Oder wenn nicht, wie wird Linux damit umgehen?
Wäre es nicht ratsam , Swapspace zu installieren, damit bei Bedarf automatisch und dynamisch genügend Swap erstellt wird?
sudo apt-get install swapspace
memory
swap
out-of-memory
rubo77
quelle
quelle
Antworten:
Dies hängt von den Einstellungen ab, mit denen Sie arbeiten, insbesondere von der Überlastung des Speichers (
/proc/sys/vm/overcommit_memory
sieheman 5 proc
Details).Wenn die Überbelegung des Speichers deaktiviert ist, schlägt der Versuch des Editors (und möglicherweise anderer Programme, die gleichzeitig versuchen), Speicher zuzuweisen, fehl. Sie erhalten ein Fehlerergebnis aus dem Systemaufruf. Es liegt an jedem Programm, dies zu handhaben, obwohl das Programm leider häufig abstürzt. Der Editor kann beispielsweise auch einfach das Öffnen der Datei verweigern.
Wenn die Speicherüberschreibung aktiviert ist, ist der Systemaufruf, der Speicher anfordert, möglicherweise erfolgreich. In diesem Fall bemerkt der Kernel beim tatsächlichen Zugriff auf den Speicher, dass nicht genügend Speicher vorhanden ist, und beendet einen Prozess, um Speicher zurückzugewinnen. Dieser Prozess kann der Herausgeber sein oder nicht. Die Auswahl richtet sich nach
oom_score
(dem Ergebnis mehrerer Kernel-Heuristiken) undoom_score_adj
(konfiguriert) jedes Prozesses auf dem System. Diese befinden sich auch in dieser proc (5) Manpage.quelle
In Linux gibt es in diesem Fall ein großes Problem, wenn Sie sich dem Speichermangel nähern. Sie werden feststellen, dass Ihr gesamtes System nicht mehr reagiert, da es häufig ausgetauscht wird. Sogar Ihr Mauszeiger kann so langsam werden, dass Sie ein Terminal nicht starten und einen fehlerhaften Speicherfresserprozess nicht manuell beenden können. Dies liegt an einer großen Anzahl von Festplattenvorgängen.
Um diese Situation zu vermeiden, deaktiviere ich persönlich normalerweise den Swap vollständig, sodass der Linux-Kernel immer reagiert und im schlimmsten Fall der OOM-Killer (Out of Memory) einen Prozess beendet. Die Logik, welcher Prozess von OOM beendet wird, hängt von der Kernelversion ab.
Die Antwort lautet also "Nein". Aktivieren Sie die dynamische Swap-Zuweisung nicht. Sie werden mit Maschinenhängen konfrontiert.
Es ist einfach, es mit einem Programm auszuprobieren, das ständig Speicher in einer Schleife reserviert. Speichern Sie dieses Programm in einer Textdatei
memeater.c
:Dann kompiliere es:
und Renn:
Versuchen Sie es mit Swap, ohne Swap und mit Ihrer dynamischen Swap-Zuordnung.
Denken Sie auch daran, dass diese OOM-Bedingung in den meisten Fällen auftritt, weil ein Fehler in der Software (Speicherverlust) aufgetreten ist oder Sie etwas falsch gemacht haben, z. B. "Diese 10-GB-Datei im Editor laden" oder "Zu viele Größen für grafische Dateien parallel ausführen" und dies tun das Fazit: Benötigen Sie einen Tausch oder nicht?
quelle