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?