Die Bereitstellung eines ausreichend großen Swapspace zur Erweiterung des verfügbaren Arbeitsspeichers war früher eine zwingende Notwendigkeit – RAM war stets knapp und teuer. Bei den heutigen Mengen an RAM ist das Thema Swap sicherlich nicht mehr von so großer Bedeutung wie früher (manche verzichten mittlerweile sogar ganz darauf) – doch gibt es immer noch gute Gründe dafür, einen Bereich der Festplatte hierfür vorzusehen, je nach Anwendungsfall in der Größenordnung des 1- bis 3-fachen des verbauten RAMs.
Unter Linux kommt hierzu meistens eine Swap-Partition zum Einsatz, welche über die /etc/fstab
eingebunden wird. Mittels free -m
lässt sich die aktuelle Belegung des Arbeitsspeichers einschließlich Swap überprüfen.
Um die ordnungsgemäße Funktion und Nutzung der Swap-Partition zu testen, sprich als Härtetest den „Ernstfall“ zu proben, kann folgendes C-Programm verwendet werden (Nutzung auf eigene Gefahr!):
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int main(int argc, char** argv) {
int max = -1;
int mb = 0;
char* buffer;
if(argc > 1)
max = atoi(argv[1]);
while((buffer=malloc(1024*1024)) != NULL && mb != max) {
memset(buffer, 0, 1024*1024);
mb++;
printf("Allocated %d MB\n", mb);
}
return 0;
}
Das Script unter memeater.c
speichern und mittels gcc memeater.c -o memeater
kompilieren.
Achtung! Ich weise erneut darauf hin, das die Nutzung dieses Programms ausdrücklich auf eigene Gefahr erfolgt. Bevor man dieses Programm startet, sollten alle nicht gespeicherten Daten gesichert und alle geöffneten Programme geschlossen werden.
Was macht dieses Programm? Es belegt soviel Arbeitsspeicher, wie es nur kann – entweder einen per Parameter festgelegten Wert oder den gesamten verfügbaren Arbeitsspeicher (Aufruf ohne Parameter). Das Programm sollte bei Erreichen des Maximalwerts abbrechen, um einen Speicherüberlauf (Out-of-Memory) zu verhindern – denn dieser ist bekanntermaßen alles andere als spaßig.
Der Aufruf erfolgt mittels ./memeater parameter
. Als Parameter kann auch ein fester Wert in MB eingegeben werden. Um beispielsweise 900 MB zu belegen, erfolgt der Aufruf mittels ./memeater 900
Nach erfolgreichem Start sollte nachfolgende Ausgabe in ähnlicher Form erscheinen:
$ ./memeater
Allocated 1 MB
Allocated 2 MB
(...)
Allocated 16381 MB
Allocated 16382 MB
Allocated 16383 MB
Killed
Lässt man parallel einen Systemmonitor mitlaufen, kann man die Belegung des Arbeitsspeichers auch grafisch mitverfolgen. Kommt das Programm an die Grenze des zur Verfügung stehenden Speichers, kann das System kurzzeitig zum Stillstand kommen, bis der Prozess beendet wurde.
Überprüft man unmittelbar im Anschluss die Speicherbelegung mittels free -m
, lässt sich ersehen, ob und inwieweit der Swapspace genutzt wird.