40 votes

Mac OS X prend-il en charge l'hibernation ?

Sous Windows, vous pouvez mettre votre ordinateur en hibernation, de sorte qu'il démarre beaucoup plus rapidement tout en ne consommant aucune énergie pendant son "hibernation".

Je vois une option de mise en veille sur mon Mac mini mais pas d'hibernation. Le Mac prend-il en charge la mise en veille prolongée ?

Je suis sur Leopard.

35voto

Thej Points 655

OS X ne dispose que d'une seule option "sleep". Vous ne pouvez pas changer son nom, mais pour modifier son comportement, j'utilise une ancienne version de SmartSleep sur un Mac mini (mais en mode "veille et hibernation" comme sur un MacBook). Cela fonctionne pour un mini, bien que le site web ne fasse référence qu'aux MacBooks.

(SmartSleep était encore gratuit lorsque j'ai écrit ces lignes en 2009).

Je reçois parfois des plaintes concernant du matériel qui n'a pas été retiré correctement (mais OS X ne me le dit jamais). ce que Je devrais jeter un coup d'œil aux journaux un jour, et je suppose que c'est lié à OS X, pas à SmartSleep).

J'ai rapidement testé la fonction "hibernation uniquement" de SmartSleep sur ce mini (Intel ; fonctionnant sous 10.5), et cela semble fonctionner également. En faisant ces tests, j'ai remarqué qu'après que l'écran soit devenu noir, la lumière d'alimentation commence à pulser (comme pour indiquer que l'ordinateur est en veille). dormir plutôt que d'hiberner) pendant quelques secondes. Peut-être que l'écriture de la RAM sur le disque est toujours en cours à ce moment-là. (Jusqu'à présent, j'ai toujours pensé que sur mon MacBook, les pulsations indiquaient que tout était terminé. Mais maintenant je pense que, quel que soit le mode de veille utilisé, il ne faut probablement pas débrancher l'alimentation trop tôt). Après un court instant, il s'éteint complètement.

En 2006, Macworld explique comment faire la même chose sans le panneau de préférences SmartSleep. Pour vérifier la configuration actuelle :

pmset -g | grep hibernatemode

Selon l'ancien article de Macworld, ce qui suit s'applique, mais N'oubliez pas de lire la réponse de Lauri qui suggère qu'aujourd'hui seuls les 0, 3 et 25 devraient être utilisés à la place :

  • 0 - Ancien mode de veille, avec la RAM activée pendant le sommeil, le sommeil sécurisé désactivé et le réveil super rapide.
  • 1 - Mode hibernation, avec le contenu de la RAM écrit sur le disque, le système s'arrête totalement pendant le "sommeil", et le réveil est plus lent, en raison de la lecture du contenu de la RAM sur le disque dur.
  • 3 - Le mode par défaut sur les machines introduites depuis environ l'automne 2005. La RAM est alimentée pendant le sommeil, mais le contenu de la RAM est également écrit sur le disque avant le sommeil. En cas de perte totale d'alimentation, le système passe automatiquement en mode hibernation.
  • 5 - Il s'agit du même mode que le mode 1, mais il est destiné à ceux qui utilisent une mémoire virtuelle sécurisée (dans les préférences système " Sécurité ").
  • 7 - C'est la même chose que le mode 3, mais c'est pour ceux qui utilisent une mémoire virtuelle sécurisée.

Et les mêmes chiffres peuvent être utilisés pour modifier le réglage du mode veille :

sudo pmset -a hibernatemode 1

12voto

oligofren Points 1022

J'ai écrit un script qui vous permettra d'entrer en hibernation immédiatement (sans changer vos paramètres de façon permanente). Je le trouve assez utile, car j'aime les paramètres par défaut, mais je veux entrer de force en hibernation lorsque je suis sur la route. Peut-être que quelqu'un d'autre le trouvera utile aussi ;-)

#!/bin/bash

# Utility to force your mac immediately into hibernation mode/suspend to disk,
# thus conserving battery considerably (at the cost of slower startup)
# @date 2012-02-10
# @author Carl-Erik Kopseng. Contact at oligofren.wordpress.com

# must be run as root by using sudo or to avoid entering the password, change the pmset
# executable settings by entering
# sudo chmod +s /usr/bin/pmset
# sudo chmod +s /sbin/shutdown

MODE_BACKUP=/tmp/hibernate_mode.bak
SUSPEND_TO_DISK=25 #see man pmset

display_settings() {
    echo "Current settings: " $(pmset -g | grep hibernatemode)
}

save_settings() {
    echo "saving settings"
    pmset -g | grep hibernatemode | awk '{print $2}' > $MODE_BACKUP
}

restore_settings() {
    echo "restoring settings"
    pmset -a hibernatemode $(cat $MODE_BACKUP)
}

set_only_disk_hibernate() {
    echo "changing settings to only suspend to disk (slow, but does not use battery)"
    pmset -a hibernatemode $SUSPEND_TO_DISK
}

hibernate() {
    echo "going into hibernation"
    shutdown -s now
}

save_settings
set_only_disk_hibernate && hibernate
restore_settings

Ajout à la barre de menu

Si vous voulez invoquer ce script à partir de la barre de menu ("systray"), je le ferais :

  1. Placez ce script dans un emplacement approprié (comme /usr/local/sbin/ ).
  2. Créez un AppleScript qui invoque simplement ce script. Appelez-le "Hibernate".
  3. Ajouter vos scripts comme icône dans la barre de menu

Maintenant vous pouvez déclencher le script en cliquant sur la barre de menu->AppleScripts->Hibernate

9voto

Dave Points 986

La page de manuel de pmset recommande également d'utiliser 25 au lieu de 1 .

0000 1000 (bit 3) encourage le pager dynamique à sortir les pages inactives avant l'hibernation, pour une plus petite empreinte mémoire.

0001 0000 (bit 4) encourage le pager dynamique à effectuer une sortie de page plus agressive avant l'hibernation, pour une plus petite empreinte mémoire.

Nous ne recommandons pas de modifier les paramètres d'hibernation. Les modifications que vous apportez ne sont pas prises en charge. Si vous décidez quand même de le faire, nous vous recommandons d'utiliser l'un de ces trois paramètres. paramètres. Pour votre bien et le mien, n'utilisez pas d'autres valeurs que 0, 3 ou 25.

[...]

hibernatemode = 25 (binaire 0001 1001) est uniquement réglable par pmset. Le système stocke une copie de la mémoire sur le stockage persistant (le disque), et coupe l'alimentation de l'ordinateur. mémoire. Le système restaurera à partir de l'image disque. Si vous voulez une "hibernation" - sommeil plus lent, réveils plus lents, et une meilleure durée de vie de la batterie, vous devriez utiliser ce paramètre.

Certains ordinateurs portables entrent désormais en hibernation ( mode veille ) après environ une heure de sommeil normal si :

  • Power Nap n'est pas activé (donc pas par défaut)
  • L'ordinateur est alimenté par la batterie
  • L'ordinateur n'est pas connecté à des périphériques USB ou à des écrans externes et n'est pas apparié à des périphériques Bluetooth.

Les ordinateurs portables, les Mac mini et les iMac consomment environ 0,2-0,4 W lorsqu'ils sont éteints ou en hibernation et 0,8-1,4 W en mode veille. L'hibernation (et le mode hibernation + veille que les ordinateurs portables utilisent par défaut) peut aussi réduire la durée de vie des lecteurs .

6voto

Willem Points 584

Et pour OS X Lion, ceci fonctionne mieux pour l'hibernation.

sudo pmset -a hibernationmode 25

que

sudo pmset -a hibernationmode 1

car le mode d'hibernation 1 peut provoquer des plantages pour une raison quelconque.

6voto

user210274 Points 61

Pour les réponses qui reposent sur la modification du 'hibernatemode' via pmset, il est utile de noter que l'option 'force' sur pmset rend les changements transitoires. Le paramètre ne sera pas mémorisé lorsque le système se réveillera de l'hibernation. Par exemple :

pmset -a hibernatemode 25 force

Modifie le mode d'hibernation pour représenter une hibernation traditionnelle (c'est-à-dire que l'état du système est écrit sur le disque et que l'alimentation est coupée), mais seulement jusqu'à la prochaine mise sous tension du système. o les paramètres sont lus à partir du disque ( pmset touch ).

L'utilisation de l'option Force évite d'avoir à enregistrer et à restaurer les paramètres actuels du mode hibernation.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X