Aus dem Tausch - was passiert?

8

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
rubo77
quelle
Warum gibst du nicht mehr Swap?
Guntbert
Festplattenspeicher ist auf meiner VM teuer
rubo77
1
Beachten Sie, dass einige Editoren die Datei nur mem-mapen und nicht alles im Voraus laden. Dies behebt das Problem vollständig, da sie die Quelldatei selbst als "Swap" verwenden.
Vality

Antworten:

17

Dies hängt von den Einstellungen ab, mit denen Sie arbeiten, insbesondere von der Überlastung des Speichers ( /proc/sys/vm/overcommit_memorysiehe man 5 procDetails).

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) und oom_score_adj(konfiguriert) jedes Prozesses auf dem System. Diese befinden sich auch in dieser proc (5) Manpage.

derobert
quelle
5

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:

#include <stdlib.h>

int main() {
    for (;;) {char* mem=malloc(4096); mem[0]=1;};
}

Dann kompiliere es:

$ gcc memeater.c -o memeater

und Renn:

$ ./memeater

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?

gena2x
quelle
1
+1 für den Vorschlag der einfachen Methode, es selbst zu
testen
1
Es beantwortet die zweite Frage "Ist es eine gute Idee, die dynamische Swap-Zuordnung zu verwenden?".
Gena2x
@ gena2x Ja, das ist eine sehr gute Idee, da Ihr System dadurch in überlasteten Situationen schneller reagiert, anstatt Ihre Aufgaben nacheinander zu erledigen. -1. Das Beste ist zwar, wenn Sie eine große, feste Swap-Partition haben, aber es hat eine andere Ursache (reduzierte Swap-Fragmentierung).
Peterh
Wenn Sie einen großen festen Austausch haben, reagiert Ihr System nicht mehr, da es versucht, aktive Aufgaben auf die Festplatte auszutauschen, und diese für immer zurücktauschen.
Gena2x