Skip to content

Mehr Swap?

linux Weil mich gerade jemand via E-Mail danach gefragt hat, hier einmal die kurze Erklärung, wie man Swapspace bekommen kann, selbst dann, wenn man kein freies Device mehr hat.

Zuerst eine Datei erzeugen (hier 1 GB als Beispiel), die später den Swap aufnehmen soll, /pfad ist der Weg zu einem Dateisystem mit ausreichend Platz:
dd if=/dev/zero of=/pfad/swapfile count=2097152


Im nächsten Schritt wird aus der Datei eine swap-Datei gemacht:
mkswap /pfad/swapfile


Jetzt wird sie noch als Swap hinzugefügt:
swapon -p 0 /pfad/swapfile

Die Priorität 0 (bis 32767) ist die niedrigste, die vergeben werden kann. Das bedeutet, der Swapspace wird nur dann benutzt wenn der Swap mit höherer Priorität bereits verbraucht wurde.

Um diese Änderung dauerhaft zu machen, muss der neue Swap noch in die /etc/fstab eingetragen werden.
/pfad/swapfile none swap sw,pri= 0 0

Trackbacks

www.onli-blogging.de am : PingBack

Vorschau anzeigen

Kommentare

Ansicht der Kommentare: Linear | Verschachtelt

Mathias am :

*Man könnte jetzt natürlich die Diskussion anfangen, ob in Zeiten, da 16 Gb RAM schon um 100€ zu haben sind, Swap überhaupt noch notwendig ist.

Dirk Deimeke am :

*Oracle und SAP beispielsweise fordern Swap in bestimmten Grössen. Dazu kommt, dass Bestellprozesse in grossen Firmen selten der Logik folgen ... :-)

Mathias am :

*Touché. Ich würde ja nicht mal auf die Logik wert legen, wenn die Prozesse wenigstens den Erfordernissen folgen würden.

Leszek am :

*Anstatt Swapspace auf der Festplatte abzulegen würde ich aber doch eher zram empfehlen, dass ein komprimiertes RAM SWAP Laufwerk erzeugt. So profitiert man vom viel schnelleren Arbeitsspeicher, auch wenn das Komprimieren etwas CPU Power braucht ist es allemal schneller als eine HDD oder SSD.

ZRAM aktiviert man so als root:
CODE:
modprobe zram num_devices=2  # Die Anzahl sollte der Anzahl der CPU Kernel entsprechen. 

CODE:
echo 1073741824 > /sys/block/zram0/disksize  # Aktiviert 1 GB SWAP space im zram0 
echo 1073741824 > /sys/block/zram1/disksize # Aktiviert 1 GB SWAP space im zram1

Insgesamt kann man so 2 GB Swapspace nutzen. Dazu muss aber vorher natürlich mit
CODE:
mkswap /dev/zram0
mkswap /dev/zram1

der Bereich für das swappen vorbereitet werden und dann mit
CODE:
swapon -p 5 /dev/zram0
swapon -p 5 /dev/zram1

aktiviert werden. -p gibt die Priorität an. Diese habe ich standardmäßig auf 5 gestellt.

Dirk Deimeke am :

*Was ich nicht verstehe, warum sollte ich den zu knappen Arbeitsspeicher verwenden? Ich mache ihn noch kleiner, damit häufiger geswapped wird.

Auch, wenn der Speicher schneller ist, ist swapping immer noch deutlich langsamer als normale Speichernutzung.

Hege am :

*Ich weiß, schon etwas her der Blogeintrag, aber trotzdem.
Der Zram Bereich im Arbeitsspeicher ist nicht Statisch. Wenn man ihn grad nicht braucht ist er gar nicht vorhanden.

Wenn man Zram aktiviert hat, hat man zwar plötzlich mehr Swap, aber nicht weniger Arbeitsspeicher. Auch wenn der Arbeitsspeicher voll ist, wenn man was komprimiert und wieder in den Arbeitsspeicher legt ist es ja nicht nötig den Platz fest zu vergeben. Das Zeug kann danach wieder den Platz einnehmen, der vorher von eben jenem Zeug belegt wurde. Der angenehme Nebeneffekt ist, dass er komprimiert wurde und so nicht mehr ganz so viel Platz braucht, wenn man den Zram Entwicklern glauben darf sogar nurnoch 1/4 des Platzes.

Dirk Deimeke am :

*So ganz überzeugt mich das immer noch nicht.

Swap ist zumindest auf Linuxsystemen eine "Alarmsituation", die es zu bewältigen gilt. Ziel sollte es sein, die Applikationen so zu konfigurieren, dass sie nicht mehr Speicher brauchen als zur Verfügung steht.

Beobachtet mal Systeme unter Last, die keinen Swap haben. Das funktioniert auch ...

Hege am :

*Alarmsituation... Schön wie du das sagst. Dann ist mein Laptop tagtäglich im Ausnahmezustand.
Mein Laptop (ThinkPad R60) hat nur 1GB Arbeitsspeicher, dazu kommen noch die 1GB Swap von meiner Ubuntu Installation. In dem Fall ist Zram eine gute Erfindung. Hoff ich zumindest, ich habs noch nicht so lange.
Und wie soll das eigentlich ohne Swap funktionieren? Wenn der Arbeitsspeicher voll ist kratzt die Kiste doch einfach ab, oder? Jedenfalls tut sie das wenn Arbeitsspeicher und Swap voll sind. War schon der Fall.

Das mit dem Swap als Datei brauch ich auch hin und wieder. Du kannst übrigens bei dd vor count noch "bs=1M" schreiben, dann wird die Zahl hinter count in Megabyte gerechnet. Bei der Priorität benutze ich immer den Standard, der ist immer 1 unter der vorhergehenden Swap Möglichkeit.
Ah, weils mir grad auffällt, sollte es nicht - wenn dann - "-32767" heißen? Mit einer positiven Zahl vergibst du doch eine höhere Priorität wenn ich mich nicht irre.

Dirk Deimeke am :

*Wenn der Speicher aufgebraucht ist (physikalisch und virtuell = Swap), dann räumt der Linux-Kernel die Prozesse auf und killed die, die am längsten idle sind.

Die Kiste kratzt also nicht sofort ab ;-)

Mit der Priorität hast Du Recht, die sollte null sein. "Specify the priority of the swap device. priority is a value between 0 and 32767. Higher numbers indicate higher priority." (Habe es korrigiert).

Kommentar schreiben

Gravatar, Favatar, Pavatar, Identica, Twitter, MyBlogLog Autoren-Bilder werden unterstützt.
BBCode-Formatierung erlaubt
Umschließende Sterne heben ein Wort hervor (*wort*), per _wort_ kann ein Wort unterstrichen werden.
Standard-Text Smilies wie :-) und ;-) werden zu Bildern konvertiert.
Die angegebene E-Mail-Adresse wird nicht dargestellt, sondern nur für eventuelle Benachrichtigungen verwendet.
:'(  :-)  :-|  :-O  :-(  8-)  :-D  :-P  ;-) 
Formular-Optionen