SWAP-Konfiguration für Hiberate bzw. Ruhezustand
SWAP-Konfiguration für Hiberate bzw. Ruhezustand
Hallo Forum,
auf einem Laptop mit 8 GB RAM habe ich eine SWAP-Partition mit 10 GB. Wenn ich RAM und SWAP stark ausgelastet habe, kann ich leider nicht mehr in Ruhezustand wechseln, weil zuwenig SWAP vorhanden ist.
Mit welcher Konfiguration kann ich sicherstellen, dass ich immer in den Ruhezustand wechseln kann?
Normalen SWAP als RAM-Ergänzung möchte ich weiter nutzen. Kann neben dem normalen SWAP ein spezieller SWAP-Bereich nur für Hiberation eingerichtet werden oder welche Konfiguration könnt ihr dafür vorschlagen?
Am liebsten alles als SWAP-File anstatt separater Partition.
Meine Umgebung:
Debian 11
grub
systemd
LUKS-Verschlüsselung
KDE
Danke und Grüße.
auf einem Laptop mit 8 GB RAM habe ich eine SWAP-Partition mit 10 GB. Wenn ich RAM und SWAP stark ausgelastet habe, kann ich leider nicht mehr in Ruhezustand wechseln, weil zuwenig SWAP vorhanden ist.
Mit welcher Konfiguration kann ich sicherstellen, dass ich immer in den Ruhezustand wechseln kann?
Normalen SWAP als RAM-Ergänzung möchte ich weiter nutzen. Kann neben dem normalen SWAP ein spezieller SWAP-Bereich nur für Hiberation eingerichtet werden oder welche Konfiguration könnt ihr dafür vorschlagen?
Am liebsten alles als SWAP-File anstatt separater Partition.
Meine Umgebung:
Debian 11
grub
systemd
LUKS-Verschlüsselung
KDE
Danke und Grüße.
Re: SWAP-Konfiguration für Hiberate bzw. Ruhezustand
Streng genomen mit gar keiner, soweit ich weiß.hokan hat geschrieben:22.02.2022 09:57:18Mit welcher Konfiguration kann ich sicherstellen, dass ich immer in den Ruhezustand wechseln kann?
Praktisch sollte es aber funktionieren, zusätzlich zu deinem regulären Swap-Space, einen zweiten Swap-Space in Größe deines RAM einzurichten, diesen aber im laufenden Betrieb nicht zu aktivieren. Aktiviert wird er erst unmittelbar vor dem Suspend und er wird unmittelbar nach dem Resume wieder deaktiviert. So sollte er nie mit regulären Daten volllaufen.
Ganz sicher ist das allerdings nicht, da es zwischen Aktivieren des Swaps und Auslösen des Suspends zu einer Race-Condition kommen kann, in welcher der zusätzliche Swap doch vollläuft. Dem könnte man nun versuchen entgegenzuwirken indem man die für den Suspend benötigte Zeit misst und mit Hilfe der vorher ermittelten maximalen Scheibgeschwindigkeit des Swap-Mediums den Swap entsprechend vergrößert. Das setzt aber voraus, dass man sich auf die gemessene Suspend-Zeit verlassen kann, was fraglich ist.
Re: SWAP-Konfiguration für Hiberate bzw. Ruhezustand
Der Befehl swapon kennt den Schalter -p:hikaru hat geschrieben:22.02.2022 10:26:12Ganz sicher ist das allerdings nicht, da es zwischen Aktivieren des Swaps und Auslösen des Suspends zu einer Race-Condition kommen kann, in welcher der zusätzliche Swap doch vollläuft.
Code: Alles auswählen
-p, --priority priority
Specify the priority of the swap device. priority is a value between -1 and 32767. Higher numbers indicate higher priority. [...]
Edit: Ich würde hier aber eher großzügig mit der Hibernation-Partition verfahren, wenn im normalen Betrieb schon Swap benutzt wird, sollte die Hibernation-Partition deutlich größer als der vorhandene RAM sein
Re: SWAP-Konfiguration für Hiberate bzw. Ruhezustand
Aber nur so lange die erste Swap-Partition nicht vollläuft. Offenbar hat hokan aber keine (oder nur eingeschränkte) Kontrolle über den Swap-Füllstand. Wenn er die hätte, bräuchte es diesen Thread nicht, denn dann könnte er einfach die erste Swap-Parition entsprechend dimensionieren.Tintom hat geschrieben:22.02.2022 11:46:55Der Befehl swapon kennt den Schalter -p:Damit könnte man die erste SWAP-Partition dem Kernel überlassen und die zweite für Hibernation freihalten.Code: Alles auswählen
-p, --priority priority Specify the priority of the swap device. priority is a value between -1 and 32767. Higher numbers indicate higher priority. [...]
Re: SWAP-Konfiguration für Hiberate bzw. Ruhezustand
Hallo zusammen,
Ich habe noch etwas experimentiert, aber ein stabile Lösung finde ich nicht.
Eine Swapfile im normalen Betrieb und vor Hiberation eine weitere große Swapfile hinzufügen. Einmal Hiberation funktioniert damit, aber nachdem Resume konnte ich die große Hibernation-Swapfile nicht wieder mit swapoff deaktivieren, weil dann schon in Benutzung.
Die vorhandene Swapfile im laufenden Betrieb (vor Hibernation) zu vergrößern hat bei mir auch nicht funktioniert (truncate).
Eine praktikable Lösung sehe ich leider nicht. Ich werde eine große Swapfile einrichten und Anwendungen schließen, wenn SWAP nicht ausreicht ich aber Hibernation möchte.
Danke für die Antworten, damit bin ich auch beruhigt, dass ich nicht eine einfache Lösung übersehen habe.
Ich habe noch etwas experimentiert, aber ein stabile Lösung finde ich nicht.
Eine Swapfile im normalen Betrieb und vor Hiberation eine weitere große Swapfile hinzufügen. Einmal Hiberation funktioniert damit, aber nachdem Resume konnte ich die große Hibernation-Swapfile nicht wieder mit swapoff deaktivieren, weil dann schon in Benutzung.
Die vorhandene Swapfile im laufenden Betrieb (vor Hibernation) zu vergrößern hat bei mir auch nicht funktioniert (truncate).
Eine praktikable Lösung sehe ich leider nicht. Ich werde eine große Swapfile einrichten und Anwendungen schließen, wenn SWAP nicht ausreicht ich aber Hibernation möchte.
Danke für die Antworten, damit bin ich auch beruhigt, dass ich nicht eine einfache Lösung übersehen habe.
- Rawbit
- Beiträge: 720
- Registriert: 24.12.2004 13:17:21
- Lizenz eigener Beiträge: GNU Free Documentation License
-
Kontaktdaten:
Re: SWAP-Konfiguration für Hiberate bzw. Ruhezustand
Hallo Zusammen,
ob's hier passt weiß ich nicht, auch Hibernation brauche ich nicht oft.
Aber ich verwende seit langem das Programm "Swapspace", das den Swap bei Bedarf
anpasst.
Ob das auch bei Hibernation hilft?
Gruß
Rawbit
ob's hier passt weiß ich nicht, auch Hibernation brauche ich nicht oft.
Aber ich verwende seit langem das Programm "Swapspace", das den Swap bei Bedarf
anpasst.
Ob das auch bei Hibernation hilft?
Gruß
Rawbit
Re: SWAP-Konfiguration für Hiberate bzw. Ruhezustand
Wenn du schon am experimentieren bist, könnte evtl. ein Blick auf zram-tools (Einstieg ins Thema) vielleicht weiter helfen:hokan hat geschrieben:27.02.2022 13:41:59Eine praktikable Lösung sehe ich leider nicht. Ich werde eine große Swapfile einrichten und Anwendungen schließen, wenn SWAP nicht ausreicht ich aber Hibernation möchte.
https://en.wikipedia.org/wiki/Zram hat geschrieben:When used for swap, zram (like zswap) allows Linux to make more efficient use of RAM[...]
Re: SWAP-Konfiguration für Hiberate bzw. Ruhezustand
... oder mal die Swap-Partition RAM X 2,5 probieren, also 20GiB.
Re: SWAP-Konfiguration für Hiberate bzw. Ruhezustand
Also grundsätzlich: Es nützt nichts swap zu "sparen". Also mit kleinerer Swapiness oder anfangs weniger swap. Wenn Auslagerung vermieden werden kann, wird das im Notfall beim hibernate gemacht. Sprich wenn weniger swap dazu führt, dass danach hiberneated werden kann, dann ausschließlich, weil zuerst der OOM-Killer deine Anwendung wegen zu wenig RAM abgeschossen hat. Das kannst du mit kill aber auch selbst machen.
Also sowas ist Quatsch:
Wenn du also jetzt mit 8GiB RAM+4GiB SWAP auskommst, ohne dass im laufenden Betrieb Programme abgeschossen werden. Sollten etwas weniger als 12GiB SWAP immer reichen.
Sonderfall: ZFS: Da wird Cache wie anwendungsdaten gehandelt. Da müssen die ZFS-Wards weiter helfen, wie man das dazu bringt den Cache beim hibernate aufzugeben.
Es gibt eine Ausnahme: SWAP-Files. Auch wenn man dank Systemd SWAP-Files fürs hibernate nutzen kann: Wenn die fragmentieren kann er dass nicht mehr. Da du wenig Einfluss darauf hast sind SWAP-Files eher ungeeignet fürs hibernate.
Also sowas ist Quatsch:
Damit könnte man die erste SWAP-Partition dem Kernel überlassen und die zweite für Hibernation freihalten.
Da hibernate eh komprimiert (ich hoffe das sich das mit systemd nicht geändert hat. Ich finde keine config optionen mehr dafür), nehme ich an, dass auch Z-RAM das ganze nicht wirklich verbessert. 2x komprimieren hilft meist wenig.Dem könnte man nun versuchen entgegenzuwirken indem man die für den Suspend benötigte Zeit misst und mit Hilfe der vorher ermittelten maximalen Scheibgeschwindigkeit des Swap-Mediums den Swap entsprechend vergrößert.
Du kannst das genau so wenig verhindern, wie dass dir eine Anwendung wegen zu wenig RAM abgeschossen wird. Prinzipiell hast du halt a) Prozessdaten+ b) Programme+ c) Cache/MM-Files, die in RAM und SWAP liegen. b) und c) müssen das nicht und können entfernt werden, wenn zu wenig SWAP da ist. Wenn a) zur Laufzeit nicht in RAM+SWAP passt werden Programme abgeschossen. Ist absehbar, dass a) (komprimiert) nicht vollständig in den SWAP passt verweigert Linux per default den hibernate. Man kann aber auch -k angeben. Dann werden stattdessen Programme gekillt.Mit welcher Konfiguration kann ich sicherstellen, dass ich immer in den Ruhezustand wechseln kann?
Wenn du also jetzt mit 8GiB RAM+4GiB SWAP auskommst, ohne dass im laufenden Betrieb Programme abgeschossen werden. Sollten etwas weniger als 12GiB SWAP immer reichen.
Sonderfall: ZFS: Da wird Cache wie anwendungsdaten gehandelt. Da müssen die ZFS-Wards weiter helfen, wie man das dazu bringt den Cache beim hibernate aufzugeben.
Es gibt eine Ausnahme: SWAP-Files. Auch wenn man dank Systemd SWAP-Files fürs hibernate nutzen kann: Wenn die fragmentieren kann er dass nicht mehr. Da du wenig Einfluss darauf hast sind SWAP-Files eher ungeeignet fürs hibernate.
rot: Moderator wanne spricht, default: User wanne spricht.
- Livingston
- Beiträge: 1813
- Registriert: 04.02.2007 22:52:25
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: 127.0.0.1
Re: SWAP-Konfiguration für Hiberate bzw. Ruhezustand
Spielt da nicht auch der kernel-Parameter resume eine Rolle? Siehe auch https://wiki.archlinux.org/title/Power_ ... parameters
Der Hauptunterschied zwischen etwas, was möglicherweise kaputtgehen könnte und etwas, was unmöglich kaputtgehen kann, besteht darin, dass sich bei allem, was unmöglich kaputtgehen kann, falls es doch kaputtgeht, normalerweise herausstellt, dass es unmöglich zerlegt oder repariert werden kann.
Douglas Adams
Douglas Adams