La gestion de la veille sous Mac OS X et comment la modifier

Sous Mac OS X, la gestion de la mise en veille dépend de la machine, mais il est possible de modifier le comportement.

Sur les machines de bureau, c’est une veille classique : la RAM est alimentée, et c’est tout. C’est très rapide en entrée et en sortie, mais dangereux en cas de coupure de courant.

Sur les portables, c’est de la veille hybride : la RAM est alimentée, mais son contenu est copié sur le disque dur à la mise en veille. En sortie de veille, si la RAM est encore alimentée, elle est utilisée et dans le cas contraire, c’est la copie qui est utilisée. L’entrée en veille est donc lente — en fonction du disque dur — et la sortie généralement rapide, sauf si la batterie est vide.

Il est possible de modifier les paramètres à la main.

Pour le premier mode, il y a une ligne de commande. Le code 0 (0000 0000) oblige à utiliser la RAM.

sudo pmset -a hibernatemode 0

Pour le second mode aussi. Le code 3 (0000 0011) utilise le disque dur.

sudo pmset -a hibernatemode 3

Pour les amateurs, Apple documente les fonctions disponibles.

On travaille en binaire, avec 8 bits. Les bits peuvent se combiner.

Le premier bit (xxxx xxx1) indique à Mac OS X d’hiberner. En clair, il écrit la RAM sur le disque dur à la mise en veille et relit le fichier à la sortie.
Le second bit (xxxx xx1x) indique à Mac OS X d’alimenter la RAM. En conjonction avec le premier bit, c’est le mode classique sur les portables. A la mise en veille, il écrit la RAM sur le disque dur, à la sortie de veille, il essaye d’abord de lire la RAM puis le disque dur si la batterie est vide.
Le quatrième bit (xxxx 1xxx) indique à Mac OS X de ne pas copier toutes la RAM : les pages inactives ne sont pas enregistrées.
Le cinquième bit (xxx1 xxxx) indique à Mac OS X de compresser les données, pour limiter les écritures.

Apple propose donc un choix intéressant. le code 25 (0001 1001) n’utilise que le disque dur en optimisant.

sudo pmset -a hibernatemode 25

Cette commande permet donc d’hiberner « à la Windows » : une copie de la RAM sur le disque dur (la plus petite possible) et une coupure de la RAM. C’est lent à la mise en veille et lent à l’ouverture, mais c’est plus sécurisé.

Pour ceux qui veulent tester — Apple ne le supporte pas officiellement —, il est possible de compresser un peu plus l’image tout en gardant le fonctionnement classique. Le code 27 (0001 1011) utilise RAM et disque dur.

sudo pmset -a hibernatemode 27

On peut aussi utiliser 11 (0000 1011) qui ne devrait pas compresser les données et donc être le plus rapide.

A vos risques et périls ;)