Re: Debian - hibernation et compression d'image

Top Page

Reply to this message
Author: Olivier Allard-Jacquin
Date:  
To: guilde Guilde
Subject: Re: Debian - hibernation et compression d'image
    Bonjour,

Le 21/06/2012 15:08, ymartin59@??? a écrit :
> Bonjour,
>
> Sur Mandriva, pm-utils utilisait bien le mode "kernel" et la compression fonctionnait tout seul... il n'y a visiblement aucune configuration à faire.
>
> Sur Debian Wheezy, c'est aussi "pm-utils" et le mode "kernel"... ça m'énervait de ne pas pouvoir hiberner plus qu'une session X avec le bureau et un terminal ;)
>
> J'ai finalement trouvé. Il y a eu un changement de comportement dans le kernel avec un check par l'intermédiaire de la valeur définie dans /sys/power/image_size
> Par défaut à 500 Mo avant les version 2.6.37 - donc sur Mandriva. Aucun problème à signaler.
> Sur Wheezy avec du 3.2, la valeur est calculée 2/5 * RAM soit 800 Mo.
> Et le check refuse d'hiberner sur mon swap de 900 Mo ! Ni avec 500 Mo dans "image_size" d'ailleurs.
> Il faut descendre à 300 Mo voire à "0" (plus de check dans ce cas) pour le l'hibernation passe (session X + navigateur)
>
> Conclusion: je ne comprends rien
> - à la finalité de cette valeur "image_size", en tout cas quand il s'agit d'hiberner sur une partition de swap - dans un fichier, il faut voir...
> - ni à l'objectif de ce check - est-ce simplement pour rejeter l'hibernation et rendre la main plus vite ?
> - ni au fait qu'il me faille définir une très faible valeur (300 Mo) pour voir l'hibernation réussir
>
> À mon avis, il y a eu torture d'esprit pour tenter d'hiberner le plus vite possible (en évitant la compression) avec ce paramètre comme seuil. Mais comme cela dépend du contenu particulier de la RAM qui peut être très grande, de la vitesse des CPUs qui vont compresser et des I/O que l'on peut avoir maintenant (SSD)... ça ressemble à une quadrature du cercle.
>
> Finalement, j'ai opté pour le "0" qui rétablit le comportement que je connais bien: il tente en compressant au maximum et revient si ça n'aboutit pas.
> En plus j'ai l'impression que c'est plus rapide qu'avant - probablement les optimisations récentes sur les I/O y sont pour quelque chose.
>
> Comme quoi, il n'était peut-être pas nécessaire de faire aussi compliqué. Avec l'habitude, on sait ce que l'on peut laisser tourner comme applications ou pas avant d'hiberner et on anticipe un éventuel échec de l'opération.
>
> A+


    Avec pm-utils, si l'on veut lancer un script de pré ou post hibernation
(équivalent des OnSuspend et OnResume du paquet "hibernate"), cela se
passe, du moins pour les distributions basées sur Debian/Ubuntu, dans le
répertoire "/usr/lib/pm-utils/sleep.d/"


    Ici un exemple de script, qui en plus purge le cache disque avant de
procéder au suspend/hibernate:
<script /usr/lib/pm-utils/sleep.d/01custom_script >
#!/bin/sh
# Log some extra information at the beginning of a suspend/resume cycle.
# TODO: Make this hook only run when PM_DEBUG is true?


. "${PM_FUNCTIONS}"

Log() {

    echo "`date "+%Y/%m/%d %X"` [${0##*/}]: $@" >> /tmp/pm-util.txt
}


case "$1" in
    hibernate|suspend)
        # Shutdown on going...
        Log "Current function: $1"
        Log `free|grep total`
        Log `free|grep Mem`


        # Drop hard disk cache, in order to reduce memory size to dump into swap
        echo 3 > /proc/sys/vm/drop_caches
        ;;
    *)
        # System is waking up !!
        Log "Current function: $1"
        Log `free|grep total`
        Log `free|grep Mem`
        ;;
esac
</script>


    Pour info, mon script sauve dans le /tmp/pm-util.txt l'état de la
mémoire utilisé avant et après l'application du "echo 3 >
/proc/sys/vm/drop_caches".


    Cela a pour effet de réduire largement la quantité de ram à sauver
(colonne "used"), et donc de limiter les besoins en taille de swap pour
l'hibernation.


    Cordialement,


                        Olivier
-- 
~~~~~~~  _____/\_____  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Phoenix /   _ \/ _   \    Olivier Allard-Jacquin
       /   / \  / \   \   Web:  http://olivieraj.free.fr/
      /___/  /  \  \___\  Mail: olivieraj@???
~~~~ /////  ///\\\  \\\\\ ~~~~~~~~~~~~~~~~~~~~~~~ Linux Powered !!