[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Hibernate hinterläßt vollen Swap



Am Dienstag, 10. September 2013, 19:06:42 schrieb Til Schubbe:
> Hallo,

Hi Til!

> zum schlafenlegen rufe ich /usr/sbin/hibernate auf. Wenn der Rechner
> dann wieder oben ist, sehe ich mit free, daß ein Teil der
> Swap-Partition (noch immer) belegt ist. Warum ist das so?
> 
> Mein RAM ist groß genug, daß der Swap sonst nie gebraucht wird. Er
> ist also vor dem Hibernate leer, nachher aber teilweise gefüllt.

Also meines Wissens brauchen zumindest das Software Suspend to Disk im Kernel 
als auch das Userspace Software Suspend, das teilweise auf Kernel-Funktionen 
zurückgreift, Speicherplatz, um das Tiefschlaf-Image zu erstellen.

Wieviel, das hängt davon ab, wieviel Speicher belegt ist und inwiefern 
Kompression zum Einsatz kommt. Bei Userspace Software Suspend schon seit 
geraumer Zeit, bei der reinen Kernel-Version noch nicht so lange, kann aber 
sein, dass das im 3.2er-Kernel von Wheezy schon drin ist… müsste ich wieder 
raussuchen, wann das reinkam.

Um für das Image Platz zu schaffen, lagert der Kernel andere Speicherbereiche 
aus.

Inwiefern das bei Dir zutrifft, kann ich nicht sagen, weil Du die dafür 
erforderlichen Kennzahlen nicht geliefert hast. Z.B. free -m / -h vor dem 
Tiefschlafen.

> Mit dem teilweise gefülltem Swap ist er deutlich langsamer, als wenn
> alles nur im RAM stattfindet. Daher habe ich als workaround den
> Aufruf von Hibernate in ein eigenes Skript gepackt und lasse danach
> immer 'swapoff -a; swapon -a' laufen, was aber den Resume-Vorgang de
> facto verlängert.

Mitunter sogar erheblich, da swapoff zumindest hier mit einer Intel SSD 320 
schnecken langsam ist. Swap-In ist deutlich langsamer als Swap-Out.

Eine Möglichkeit wäre da vielleicht

(swapoff -a ; swapon -a) &

um das in den Hintergrund zu legen.

> Ich habe auch schon versucht, nur fürs Hibernate eine zusätzliche
> Swap-Partition einzurichten. Aber die in /etc/hibernate/disk.conf
> mit 'SuspendDevice swap:/dev/sdaX' anzugeben, kann laut
> 
> 'man 5 hibernate.conf' bei mir nicht funktionieren:
> | SuspendDevice <device> (requires UseTuxOnIce on)

Das Hibernate-Skript hat Nigel ursprünglich für sein TuxOnIce entwickelt.

Ich denke aber auch mit Userspace Software Suspend oder der reinen Kernel-
Lösung läßt sich da was machen.

Falls meine obige Idee zutrifft, wird das aber dem von Dir beobachteten 
Verhalten nichts ändern. Das Swap reicht ja auch jetzt schon aus :)

> Was kann ich sonst ändern? Kann ich auch auf eine Raw-Partition
> hibernaten, die mit einem Swap nicht zu tun hat?

Auch das ändert nichts daran, dass der Kernel Platz fürs Tiefschlaf-Image frei 
macht.

Ciao,
-- 
Martin 'Helios' Steigerwald - http://www.Lichtvoll.de
GPG: 03B0 0D6C 0040 0710 4AFA  B82F 991B EAAC A599 84C7


Reply to: