swap

Swap unter Linux

Written by  on Dezember 28, 2019

Swap war ja schon öfter ein Thema im Blog. Irgendwie verwunderlich, dass das bei den heutigen Speichermassen noch immer Thema ist.
Aber weil es kürzlich im Linux Magazin war:
Find Out What Is Using Your Swap

Swap Space anlegen

Written by  on Januar 16, 2015

Zum Beispiel ein GB Swap anlegen geht einfach mit dd:

# time dd if=/dev/zero of=swapfile bs=1MB count=1024
1024+0 records in
1024+0 records out
1024000000 bytes (1.0 GB) copied, 14.979 s, 68.4 MB/s

real 0m14.986s
user 0m0.016s
sys 0m10.332s
# mkswap swapfile
Setting up swapspace version 1, size = 999996 KiB
no label, UUID=118351b9-94a4-4782-9470-643eaef3e5f4
# swapon swapfile
# cat /proc/swaps
Filename Type Size Used Priority
/dev/sda2 partition 1952764 211944 -1
/dev/sdb2 partition 1952764 0 -2
/root/swapfile file 999996 0 -3

Schneller gehts mit fallocate:

# fallocate -l 2G swapfile2
# mkswap swapfile2
Setting up swapspace version 1, size = 2097148 KiB
no label, UUID=50a99651-bb65-4ae7-a114-83d627670866
# swapon swapfile2
# cat /proc/swaps
Filename Type Size Used Priority
/dev/sda2 partition 1952764 211944 -1
/dev/sdb2 partition 1952764 0 -2
/root/swapfile file 999996 0 -3
/root/swapfile2 file 2097148 0 -4

Tritt dabei dieser Fehler auf

swapon: swapfile has holes

gibts vermutlich ein Problem mit dem verwendeten Dateisystem. Zum Beispiel auf NFS Freigaben lässt sich dieser Fehler erzeugen – aber dort macht der Swap doch keinen Sinn mehr.

Auch Abschalten geht ganz einfach:

# swapoff swapfile
# swapoff swapfile2
# cat /proc/swaps
Filename Type Size Used Priority
/dev/sda2 partition 1952764 211944 -1
/dev/sdb2 partition 1952764 0 -2

Das kann ziemlich lange dauern, falls der Swap schon gefüllt ist und vor dem aushängen erst leergeräumt werden muss.

 

 

Speicherfresser

Written by  on März 14, 2014

Anmerkung zum Artikel „Speicherfresser – Speicherverwaltung bei High-End-Systemen“ im Linuxmagazin 03/14

Einfach gesagt, geht es um eine Thema über das ich schon vor einiger Zeit gebloggt habe: Swap

Es geht in dem sieben seitigen Artikel unter anderem um die Frage, warum man auch auf modernen Systemen, mit massenhaft Speicher noch immer Swap-Speicher benötigt.

I/O intensive Prozesse können den Speicher von Anwendungen, die kaum I/O lastig sind, in den Swap Bereich zwingen. Am Besten verständlich wird das anhand eines Beispieles: Eine Datenbank hält jede Menge Speicher für verschiedene Buffer belegt. Der Großteil des nötigen Datensets liegt im RAM und alles ist gut. Dieses eingespielte System verursacht dann nur mehr wenig I/O. Läuft jetzt aber ein Backup, von dem die ganze Disk gelesen wird, wandern diese Daten in den Cache und zwingen so die eigentlichen Arbeitsdaten in den Swap. Im Anschluss wird die ursprüngliche Performance erst wieder erreicht, wenn die Daten den eigentlich unnötigen Cache wieder verdrängt haben.

Swap

Written by  on Januar 8, 2013

Ein weiterer Grund, warum der verbrauchte Speicher, nicht mit belegtem Speicher plus Swap übereinstimmt: …

As it turns out, swap means more than just pages swapped to disk. An application's binary and libraries need not stay in memory the whole time. The kernel can mark some of the memory pages as unnecessary at the time; but because the binary is at a known location on disk, there is no need to use the swap file. This is still counted as swap because the part of the code isn't resident. In addition, memory can be mapped to a disk file by the application. Because the whole size of the application (VIRT) includes the mapped memory, but it isn't resident (RES), it's counted as swap.

l-lpic3306-pdf.pdf

Speicherauslastung und Swap

Written by  on Februar 29, 2012

Wird der RAM in einem Linux-System zu wenig, wird auch der Swap-Bereich benutzt. Woher kommt es aber, dass manchmal noch Speicher frei ist, aber trotzdem schon Swap benutzt wird?
Laut Thorsten Robers, LPI 301, S. 306 gibt es zwei Bedingungen, wann Speicher in den Swap-Bereich ausgelagert wird:

Steht nicht genügend RAM zur Verfügung oder geht der Betriebssystemkern davon aus, dass der Prozess in nächster Zukunft nicht weiter ausgeführt werden muss, lagert der Kernel diese Daten in den Swap-Speicher aus.

Das bedeutet, dass der Kernel bereits präventiv den Swap-Bereich benutzt, um mehr Speicher für die tatsächlich aktiven Prozesse und den Platten-Cache frei zu haben.

Im Idealfall wird dieser (Anm: der Swap-Speicher) kaum genutzt, wobei nicht die Verwendung der [sic] Swap-Speichers per se auf einen Engpass hinweist. Erst wenn der Kernel Swap-Speicher exzessiv zur Auslagerung von Prozessen und Daten nutzt, wirkt sich das negativ auf die Gesamtperformance des Systems aus.

Das Verhalten "wie gerne" ein System den Auslagerungsspeicher benutzt, kann eingestellt werden unter der Bezeichnung swappiness:

# cat /proc/sys/vm/swappiness
60

60 ist der Default-Wert, 0 würde bedeuten, dass gar nichts mehr in den Swap-Bereich kommen soll.