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

40

Sous Windows, vous pouvez mettre votre ordinateur en veille prolongée, de manière à ce qu'il démarre beaucoup plus rapidement tout en ne consommant aucune énergie tout en "hibernant".

Je vois une option pour dormir sur mon Mac mini mais pas pour mettre en veille prolongée. Est-ce que Mac supporte l'hibernation?

Je suis sur Léopard.

AngryHacker
la source

Réponses:

34

OS X n'a ​​qu'une seule option "veille". Vous ne pouvez pas changer son nom, mais pour changer son comportement, j'utilise une ancienne version de SmartSleep sur un Mac mini (bien que dans le mode "veille & veille prolongée" de type MacBook). Cela fonctionne pour un mini, bien que le site Web se réfère uniquement à MacBooks.

(SmartSleep était encore libre quand j'ai écrit ceci en 2009.)

Je reçois parfois des plaintes sur le fait que le matériel n'avait pas été correctement supprimé (mais OS X ne me dit jamais quel matériel, et mes disques USB Time Machine semblent bien, je devrais jeter un coup d'œil dans les journaux un jour, et je suppose que cela est lié à OS X, pas SmartSleep).

J'ai rapidement testé le mode "hibernate only" de SmartSleep sur cette mini (Intel; fonctionnant sous 10.5), et cela semble également fonctionner. En faisant ces tests, j'ai remarqué qu'après le noir de l'affichage, le voyant d'alimentation commence à clignoter (comme pour indiquer le sommeil au lieu de la veille prolongée) pendant quelques secondes. Peut-être qu'il est toujours en train d'écrire de la RAM sur le disque. (Jusqu'à présent, j'avais toujours pensé que, sur mon MacBook, les pulsations indiquaient que tout était fait. Mais maintenant, je pense que, quel que soit le mode 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 atteindre le même objectif sans le volet 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 0, 3 et 25 devraient être utilisés à la place :

  • 0 - Mode veille à l'ancienne, avec RAM allumée pendant le sommeil, veille sécurisée désactivée et réveil ultra-rapide.
  • 1 - Mode Veille prolongée, avec le contenu de la RAM écrit sur le disque, le système totalement arrêté en mode "veille" et le réveil plus lent, en raison de la lecture du contenu de la RAM du disque dur.
  • 3 - Le mode par défaut sur les machines introduit depuis environ l'automne 2005. La RAM est allumée pendant la veille, mais le contenu de la RAM est également écrit sur le disque avant la veille. En cas de perte totale de puissance, le système passe automatiquement en mode veille prolongée.
  • 5 - Identique au mode 1, mais s'adresse aux utilisateurs de la mémoire virtuelle sécurisée (dans 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 la mémoire virtuelle sécurisée.

Et les mêmes numéros peuvent être utilisés pour changer le réglage du mode veille:

sudo pmset -a hibernatemode 1
Arjan
la source
11

J'ai écrit un script qui vous permettra d'entrer immédiatement en veille prolongée (sans modifier définitivement vos paramètres). Je trouve cela très utile, car j'aime bien les paramètres par défaut, mais je veux forcer le passage en veille prolongée lorsque vous êtes 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 menus

Si vous souhaitez appeler ce script à partir de la barre de menus ("systray"), je voudrais:

  1. Mettez ce script dans un endroit approprié (comme /usr/local/sbin/).
  2. Créez un AppleScript qui appelle simplement ce script. Appelez ça "Hibernate"
  3. Ajoutez vos scripts Apple sous forme d'icône dans la barre de menus

Vous pouvez maintenant déclencher le script en cliquant sur la barre de menus-> AppleScripts-> Hibernate

oligofren
la source
1
s'il vous plaît, faites une version systray :)
DataGreed
S'il vous plaît faire une version systray.
Qed
Bonjour, merci pour les commentaires. Malheureusement, le MacBook Pro plus récent que j'ai acheté en 2013 offre des performances de veille bien meilleures que celles de mon précédent Mac, et la durée de vie de sa batterie est bien meilleure. Il n’ya donc malheureusement que peu d’intention pour moi d’apprendre à utiliser Cocoa pour créer une version systray. Je vais enlever cette phrase maintenant.
oligofren
C'est très intéressant, comment ça marche? Ne shutdown -s nowprend pas effet immédiatement?
SilverWolf
1
@leetbacoon a ajouté des instructions pour l'ajouter à la barre de menus. Je n'ai pas possédé de Mac depuis quelques années, je ne peux donc pas coller de captures d'écran ...
oligofren
9

La page de manuel de pmset recommande également d’utiliser 25plutôt que de 1.

0000 1000 (bit 3) incite le pageur dynamique à rechercher des pages inactives avant l'hibernation, afin de réduire l'encombrement de la mémoire.

0001 0000 (bit 4) encourage le téléavertisseur dynamique à faire la recherche de manière plus agressive avant l'hibernation, afin de réduire l'encombrement de la mémoire.

Nous vous déconseillons de modifier les paramètres d'hibernation. Les modifications que vous apportez ne sont pas prises en charge. Si vous choisissez quand même de le faire, nous vous recommandons d’utiliser l’un de ces trois réglages. Pour votre bien et pour le mien, veuillez ne pas utiliser autre chose que 0, 3 ou 25.

[...]

hibernatemode = 25 (binaire 0001 1001) n'est configurable que via pmset. Le système stockera une copie de la mémoire dans la mémoire persistante (le disque) et coupera l’alimentation en mémoire. Le système restaurera à partir de l'image disque. Si vous souhaitez une "veille prolongée" - sommeil plus lent, réveil plus lent et meilleure durée de vie de la batterie, vous devez utiliser ce paramètre.

Certains ordinateurs portables entrent maintenant en veille prolongée ( 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 sur batterie
  • L'ordinateur n'est pas connecté à des périphériques USB ou à des écrans externes et n'est pas associé à des périphériques Bluetooth.

Les ordinateurs portables, les Mac mini et les iMac utilisent environ 0,2 à 0,4 W en mode veille ou veille prolongée, et de 0,8 à 1,4 W en mode veille. Le mode Veille prolongée (et le mode veille prolongée + veille utilisé par défaut par les ordinateurs portables) peut également réduire la durée de vie des lecteurs .

Lri
la source
6

Et pour OS X Lion, cela fonctionne mieux pour l'hibernation

sudo pmset - un mode d'hibernation 25

que

sudo pmset - un mode d'hibernation 1

car le mode hibernation 1 peut provoquer des accidents pour une raison quelconque.

Willem
la source
Qu'est-ce que 25 signifie exactement?
Qed
25 est binaire pour 0001 1001, ce qui signifie que les bits 4, 3 et 0 sont mis à 1 (les trois 1: s). Ces trois bits indiquent tous des choses différentes à votre ordinateur. Le bit 0 (0000 0001) indique à votre ordinateur d'activer le mode veille prolongée (ce qui signifie économiser de la mémoire sur le disque avant de fermer). Le bit 3 (0000 1000) indique à votre ordinateur de vider la mémoire des vieux déchets sans que vous ne puissiez l'enregistrer sur le disque (pour lui faire économiser moins de données sur le disque). Le bit 4 (0001 0000) indique à votre ordinateur d'être plus agressif lors du nettoyage de la mémoire (ce qui lui permet d'économiser encore moins de données sur le disque).
Willem
5

Pour les réponses qui reposent sur le twiddling du "hibernatemode" via pmset, il est utile de noter que l'option "force" sur pmset rend les modifications transitoires. Le paramètre ne sera pas mémorisé lorsque le système sortira de son mode veille prolongée. Par exemple:

pmset -a hibernatemode 25 force

Change le mode Veille prolongée pour représenter une veille prolongée classique (c'est-à-dire que l'état du système est écrit sur le disque et que l'alimentation est coupée), mais uniquement jusqu'à la prochaine mise sous tension du système ou jusqu'à ce que les paramètres soient lus à partir du disque ( pmset touch).

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

utilisateur210274
la source
Bon conseil! Vous pouvez modifier ma réponse si vous vous inquiétez aussi :)
oligofren
3

Ouaip. ça s'appelle dormir en sécurité. Le moyen le plus simple de l'obtenir est d'utiliser le widget de sommeil profond .

Yanokwa
la source
2
Je déteste les widgets avec passion. Y at-il quelque chose de non-widgety?
AngryHacker
1
Pour les propriétaires d’ordinateurs portables, le moyen le plus simple est de fermer le couvercle. Le menu Apple situé dans le coin supérieur gauche contient également l’option "sommeil" (au moins sur mon Tiger).
Tadeusz A. Kadłubowski
3

L’hibernation se déclenchera également automatiquement si la batterie de votre ordinateur portable s’épuise complètement.

Bob D
la source
2
Un Mac mini n'a pas de batterie ...
Arjan
2

J'ai lu que "Safe Sleep" est activé par défaut sur tous les Mac Intel et sur certains modèles de machines PowerPC récents (je pense que les Intel mini supportent ce support, mais que les PPC n'en ont probablement pas, sans piratage non pris en charge).

Mais "Safe Sleep" en soi n'est pas exactement la même chose que "hibernation". Il s’agit d’une combinaison de sauvegarde de la RAM sur disque et de veille normale. Cela permet une réactivation rapide et préserve également l'état du système en cas de coupure totale de courant pendant que l'ordinateur est en veille.

Vous pouvez savoir si un système utilise la mise en veille sécurisée en vérifiant (après au moins une mise en veille) un fichier / var / vm / sleepimage de la même taille que la RAM installée. De même, lorsque la mise en veille sécurisée est active, le délai entre le clic sur l'élément de menu Veille (ou sur le bouton ou le maintien de la commande Commande-Option-Éjecter) est long avant que le voyant d'état de l'appareil ne commence sa boucle de fondu normal.

Le dernier élément de la solution consiste à éteindre complètement la machine après avoir enregistré l’image de veille en RAM. Il semble possible de configurer cela à l'aide du programme de ligne de commande pmset pour définir le code hibernatemode . Vous pouvez acheter quelque chose comme Deep Sleep pour un moyen automatisé de modifier cette configuration.

Chris Johnsen
la source
La veille n'est pas activée par défaut sur mon Intel Mac mini. J'ai utilisé SmartSleep pour l'activer, mais je pmsetpeux effectivement atteindre le même objectif.
Arjan