Frage zu SWAP | Sie ist permanent voll | Muss das sein?

DHC

Commander
Registriert
Aug. 2013
Beiträge
2.287
Hallo zusammen.

Manche haben da schon meine Gehversuche, zum Teil mit Tränen in den Augen, verfolgt.

Aktuell habe ich eine VM mit Debian und zwei Paperless-Instanzen, realisiert mit Podman, auf einem NAS am laufen. Das funktioniert eigentlich ganz gut.
Nun ist mir aufgefallen, das im Cockpit SWAP immer rot markiert ist. Sprich SWAP ist voll belegt.
Ich hatte dann erst mal mit sudo swapoff -a die SWAP geleert und gestoppt. Danach habe ich sie wieder mit sudo swapon -a gestartet.
Via top habe ich das Ganze erst mal beobachtet.
Nach sudo swapon -a sieht es vie folgt aus. Ich habe bei mit M nach benutztem Speicher (%MEM) sortiert.
Code:
top - 03:24:13 up 11:26,  1 user,  load average: 0,15, 0,15, 0,10
Tasks: 198 total,   1 running, 197 sleeping,   0 stopped,   0 zombie
%CPU(s):  0,7 us,  1,0 sy,  0,0 ni, 98,3 id,  0,0 wa,  0,0 hi,  0,0 si,  0,0 st
MiB Spch:   7947,8 total,   1699,9 free,   5985,9 used,    561,1 buff/cache
MiB Swap:   2048,0 total,   2048,0 free,      0,0 used.   1962,0 avail Spch

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     ZEIT+ BEFEHL
   1733 privat    20   0 5319592   4,1g  65960 S   0,0  52,6   3:16.95 granian asginl

Nach einer gewissen Zeit sieht es dann wie folgt aus.
Code:
top - 04:12:39 up 12:14,  1 user,  load average: 0,01, 0,07, 0,08
Tasks: 197 total,   1 running, 196 sleeping,   0 stopped,   0 zombie
%CPU(s):  1,0 us,  0,5 sy,  0,0 ni, 98,2 id,  0,2 wa,  0,0 hi,  0,0 si,  0,2 st
MiB Spch:   7947,8 total,   3758,8 free,   3946,2 used,    540,7 buff/cache
MiB Swap:   2048,0 total,      2,4 free,   2045,6 used.   4001,7 avail Spch

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     ZEIT+ BEFEHL
   1733 privat    20   0 5319592   2,3g  59520 S   0,3  29,0   3:25.18 granian asginl

Was mir aufgefallen ist, so hat es den Anschein, wurden 2 GB von granian asginl abgezwackt und in SWAP verschoben.
Jetzt habe ich gelesen, dass man das SWAP-Verhalten via swapiness beeinflussen kann.
An andere Stelle habe ich etwas von zRAM gelesen. Sprich SWAP in den RAM verlegen.

Ich weiß auch nicht, warum hier so massiv viel RAM veranschlagt wird. Und vor allem nicht mehr freigegeben wird.
Beim Start der VM dümpelt die RAM-Nutzung bei ca. 2 GB herum.
Wenn ich dann etwas in Paperless mache, geht die RAM-Nutzung auf insgesamt ca. 5,8 GB.
Selbst nach Abmelden aus Paperless ändert sich da nichts mehr.
Ich meine aber auch, dass das Verhalten der RAM-Nutzung auch so passiert ohne das ich Paperless nutze.

Hat da jemand eine Idee?
Was kann man tun?
 
Ich würde erstmal verstehen, was SWAP ist und wie es funktioniert.

https://wiki.ubuntuusers.de/Swap/

Bevor ich es aus- und einschalte.

D.h. erst verstehen und dann handeln, wenn notwendig.

Und was ist daran so schlimm, wenn SWAP benutzt wird?

Bei mir trotz 32GB RAM auf 24/7 NUC, sieht es so aus:

1769356304032.png
 
  • Gefällt mir
Reaktionen: Ja_Ge, GTrash81, ILoveShooter132 und 4 andere
DHC schrieb:
Sprich SWAP ist voll belegt

Innerhalb der VM oder auf dem NAS selbst?


DHC schrieb:
Aktuell habe ich eine VM mit Debian und zwei Paperless-Instanzen, realisiert mit Podman, auf einem NAS am laufen.

Das klingt übermäßig komplex. Jedes halbwegs aktuelle NAS kann docker direkt ausführen.
Ergänzung ()

DHC schrieb:
Ich weiß auch nicht, warum hier so massiv viel RAM veranschlagt wird. Und vor allem nicht mehr freigegeben wird.

Weil es dafür Regeln gibt. Wenig benutzte Seiten in den RAM, selten benutze in den Swap. Wenn Linux denkt es braucht mehr Cache für das Dateisystem, dann wird halt swap genutzt.


DHC schrieb:
Selbst nach Abmelden aus Paperless ändert sich da nichts mehr.

Wieso sollte es?


DHC schrieb:
An andere Stelle habe ich etwas von zRAM gelesen. Sprich SWAP in den RAM verlegen.

In der VM oder auf dem NAS?
 
  • Gefällt mir
Reaktionen: areiland, AlphaKaninchen und Alter_Falter
Wenn dich das stört, vergrößer Swap halt auf 4GB oder noch mehr...
 
  • Gefällt mir
Reaktionen: GTrash81, madmax2010 und redjack1000
DHC schrieb:
Aktuell habe ich eine VM mit Debian und zwei Paperless-Instanzen, realisiert mit Podman, auf einem NAS am laufen.

Wenn du so einen komplexen Weg genommen hast, wie ist dann zum Beispiel deine Strategie für Caching? In der VM oder auf dem Host?

btw docker direkt auf dem NAS wäre nicht nur der Standardweg sondern löst solche Probleme auch direkt.
 
  • Gefällt mir
Reaktionen: ILoveShooter132 und redjack1000
Ich hab seit 10+ Jahren kein SWAP mehr, braucht man meiner Meinung nach nicht mehr.
 
  • Gefällt mir
Reaktionen: MonteDrago und Kuristina
@Cool Master
Genauso wie man ja die Auslagerungsdatei bei Windows, die ja im Grunde nichts anderes ist, auch nicht mehr brauch, wenn man genug RAM hat, nicht?
Verstehe immer das Drama nicht, wenn das Betriebssystem denkt, es macht Sinn, trotz genug Arbeitsspeicher auszulagern, dann lasst das Betriebssystem doch einfach machen :x
 
  • Gefällt mir
Reaktionen: ILoveShooter132 und Cool Master
JumpingCat schrieb:
Innerhalb der VM oder auf dem NAS selbst?
Innerhalb der VM. Ich verbinde mich mit KiTTY direkt mit Debian in der VM.

JumpingCat schrieb:
Das klingt übermäßig komplex.
Der Hintergrund ist, wie ich den anderen Threads auch schon geschrieben habe, dass ich das Ganze einfach umziehen können möchte.
Wenn ich mal das NAS wechsele oder mir einen Mini-PC hinstellen sollte, kann ich die VM komplett umziehen und innerhalb kürzester Zeit läuft alles wieder.
Außerdem kann es bei NAS-Herstellern auch mal vorkommen, das bei einem Update ein Paket herausgenommen wird, was bei Synology auch schon passiert ist. Da gab es auf einmal kein Docker mehr. Dafür gibt es nun einen Container Manager.

JumpingCat schrieb:
In der VM oder auf dem NAS?
Wie oben geschrieben in der VM.

Rickmer schrieb:
vergrößer Swap halt auf 4GB
Das sagst du so leicht.
Ich weiß nicht, ob das so einfach geht. Mir fehlen hierzu die Kenntnisse/Fertigkeiten.
Da müsste ich wohl eine Partition verkleinern, damit ich SWAP vergrößern kann.
Ohne Hilfe/Unterstützung bekomme ich das sicher nicht hin.

JumpingCat schrieb:
Strategie für Caching? In der VM oder auf dem Host?
Wie oben schon beschrieben.
 
@kachiri

Jup, sehe ich selbst bei mir und 96 GB, dass der da auslagern will unter Win. Das ist bestimmt einfach alter legacy Code der da noch am laufen ist und das machen will weil der denkt AHH PANIK 30% voll!
 
redjack1000 schrieb:
hast du irgendwelche Einschränkungen/Fehler oder oder oder?
Mir ist bis jetzt nichts aufgefallen.
Ich habe aber irgendwo auf irgendwelchen Linux-Seiten gelesen, dass SWAP nicht dauerhaft voll sein sollte.

Cool Master schrieb:
ich hab seit 10+ Jahren kein SWAP mehr
Das habe ich auch schon an verschiedenen Stellen gelesen.

kachiri schrieb:
dann lasst das Betriebssystem doch einfach machen
OK. Also alles im grünen Bereich?
Mache ich mir also unnötig Sorgen?
 
OK.
Danke für die Rückmeldung.
 
redjack1000 schrieb:

Swap sollte eher freier als voll sein. Aber viel interessanter sind die si/so bei memstat 1.

Cool Master schrieb:
Jup, sehe ich selbst bei mir und 96 GB, dass der da auslagern will unter Win. Das ist bestimmt einfach alter legacy Code

Was hat legacy mit Swap zu tun?


Cool Master schrieb:
Ich hab seit 10+ Jahren kein SWAP mehr, braucht man meiner Meinung nach nicht mehr.

Swap ist auch bei Systemen mit etwas mehr RAM angeraten. Btw die Leute Swap komplett deaktivieren schlagen hier regelmäßig im Forum auf mit "PC kaputt nach Tuning Tool".


DHC schrieb:
Ich weiß nicht, ob das so einfach geht. Mir fehlen hierzu die Kenntnisse/Fertigkeiten

Auf dem NAS oder in der VM? Die VM kannst du doch einfach vergrößern?
 
JumpingCat schrieb:
Aber viel interessanter sind die si/so bei memstat 1.
Was meinst du damit?
Ich kann dir nicht folgen.

JumpingCat schrieb:
Auf dem NAS oder in der VM? Die VM kannst du doch einfach vergrößern?
In der VM.
Und ja. Ich könnte die VM vergrößern. Aktuell ist sie, für den Anfang, 256 GB groß. Ich könnte sie noch deutlich vergrößern. Was auch früher oder später passieren wird.
Aber dazu muss ich mich aber erst mal einlesen.
 
Cool Master schrieb:
Ich hab seit 10+ Jahren kein SWAP mehr, braucht man meiner Meinung nach nicht mehr.
Naja. Ich weiß nicht, ob man das so pauschal sagen kann.

In der Regel möchte man zwar kein Swapping/Paging, das es die Performance erheblich verlangsamt und man leicht auch mal in Probleme reinlaufen kann, wenn beispielsweise das System permanent gezwungen ist zu swappen.

Auf der anderen Seite ist es ganz praktisch, um temporäre Bedarfsspitzen abzufangen.

Und es kann auch ganz praktisch sein, um Prozesse in Bereitschaft zu halten, das falls sie mal benutzt werden dann schnell gestartet sind ohne die ganze Zeit RAM zu belegen.

Insbesondere ist natürlich Swap vonnöten, wenn man Suspend-to-disk verwenden will.

Man muss halt auf den Einzelfall gucken und was erreicht werden soll. Pauschale Empfehlungen sind da nicht wirklich hilfreich.

Allerdings sollte man wegen oben genannte potentieller Probleme auch nicht präventiv viel Swap-Space einrichten. Als Kompromiss und wenn man nicht weiß, was man braucht, kann man ja sagen:
Man probiert ohne (oder wenig Swap) und guckt, ob alles wie gewünscht funktioniert.
 
  • Gefällt mir
Reaktionen: Deinorius, AlphaKaninchen, madmax2010 und eine weitere Person
DHC schrieb:
Wenn ich mal das NAS wechsele oder mir einen Mini-PC hinstellen sollte, kann ich die VM komplett umziehen und innerhalb kürzester Zeit läuft alles wieder.
Außerdem kann es bei NAS-Herstellern auch mal vorkommen, das bei einem Update ein Paket herausgenommen wird, was bei Synology auch schon passiert ist. Da gab es auf einmal kein Docker mehr. Dafür gibt es nun einen Container Manager.

Das mit dem Umzug kann man unter Ansichtssache verbuchen.

Ansonsten freßen VMs im Vergleich zu Docker massig Festplatte sowie RAM.

Synology hat unverändert docker an Board. Der "Container Manager" ist wohl eine Vorbereitung auch andere Dinge zu managen außer Docker.

DHC schrieb:
Was meinst du damit?

Man schaut primär auf si/so. Sowie ob genügend swap vorhanden ist, aber si/so sind die interessanten Werte.

DHC schrieb:
Was mir aufgefallen ist, so hat es den Anschein, wurden 2 GB von granian asginl abgezwackt und in SWAP verschoben.

Wo siehst du das? Poste mal die Ausgabe von folgendem Skript:

Bash:
for file in /proc/*/status ; do awk '/Name|VmSwap/{printf $2 " " $3}END{ print ""}' $file; done | sort -k 2 -n -r | grep kB | awk '{print $2" kB""\t"$1}'b | grep -v ^0 | grep -E '^[0-9]' | column -t

Ich kenne podman nicht, aber bei Docker bekommt du nützliche Infos mit
Bash:
docker stat
 
Zuletzt bearbeitet:
Wobei man beim "Auslagern" unter Windows auch "aufpassen" muss. EXE- und DLL-Dateien werden ja i.d.R. memory mapped geladen, so dass nur die Teile im Speicher bleiben, die auch wirklich genutzt werden. Das sind dann quasi Mini-Auslagerungsdateien, Pages können einfach aus dem Speicher entfernt werden und bei Bedarf aus der Datei geladen.

Und eine gute Speicherverwaltung würde schon proaktiv stabile Speicherbereiche bereits vorsorglich in die Swap-Datei schreiben, wenn die Resourcen da sind, auch wenn genug RAM da ist. Um dann im Falle einer Knappheit reagieren zu können.

Wie wahrscheinlich so eine Knappheit bei gewissen Arbeitsspeichermengen wird, kann sich jeder selbst überlegen. Aber aus Sicht der Speicherverwaltung könnte man auch argumentieren: Das System hat so viel RAM, weil damit gerechnet wird, dass so viel RAM auch gebraucht wird ;-)
 
  • Gefällt mir
Reaktionen: kachiri und JumpingCat
Zurück
Oben