Czy Mac OS X obsługuje hibernację?

40

W systemie Windows można hibernować komputer, aby uruchamiał się znacznie szybciej, zużywając zero energii podczas „hibernacji”.

Widzę opcję trybu uśpienia na komputerze Mac mini, ale nie hibernacji. Czy Mac obsługuje hibernację?

Jestem na Leopardzie.

AngryHacker
źródło

Odpowiedzi:

34

OS X ma tylko jedną opcję „uśpienia”. Nie możesz zmienić jego nazwy, ale aby zmienić jego zachowanie, używam starej wersji SmartSleep na komputerze Mac mini (chociaż w podobnym do MacBooka trybie „uśpienia i hibernacji”). Działa w przypadku mini, ale strona internetowa odnosi się tylko do MacBooków.

(SmartSleep był nadal darmowy, kiedy napisałem to w 2009 roku).

Czasami dostaję skargi na to, że sprzęt nie został prawidłowo usunięty (ale OS X nigdy nie mówi mi, jaki sprzęt, a moje dyski USB Time Machine wydają się w porządku - powinienem zajrzeć do dzienników i zakładam, że jest to związane z OS X, a nie do SmartSleep).

Szybko przetestowałem „tylko hibernację” SmartSleep na tym mini (Intel; z systemem 10.5) i wydaje się, że również działa. Wykonując te testy, zauważyłem, że po tym, jak wyświetlacz zgaśnie, lampka zasilania zaczyna pulsować (jak wskazać sen zamiast hibernacji) przez kilka sekund. Być może nadal zapisuje pamięć RAM na dysk. (Do tej pory zawsze myślałem, że na moim MacBooku pulsowanie wskazuje, że wszystko zostało zrobione. Ale teraz myślę, że niezależnie od tego, który tryb uśpienia się używa, prawdopodobnie nie należy zbyt wcześnie odłączać zasilania). Po chwili całkowicie się wyłącza.

W 2006 roku Macworld wyjaśnia, jak to osiągnąć bez tego panelu preferencji SmartSleep. Aby sprawdzić bieżącą konfigurację:

pmset -g | grep hibernatemode

Zgodnie ze starym artykułem Macworld stosuje się następujące zasady, ale koniecznie przeczytaj odpowiedź Lauriego, która sugeruje, że w dzisiejszych czasach należy używać tylko 0, 3 i 25 :

  • 0 - Tryb uśpienia w starym stylu, z pamięcią RAM włączoną podczas snu, wyłączonym bezpiecznym snem i superszybkim wybudzeniem.
  • 1 - Tryb hibernacji, z zawartością pamięci RAM zapisaną na dysku, system całkowicie się wyłącza podczas „spania” i wolniej się budzi, z powodu odczytu zawartości pamięci RAM z dysku twardego.
  • 3 - Domyślny tryb na komputerach wprowadzony od jesieni 2005 r. Pamięć RAM jest włączana podczas snu, ale zawartość pamięci RAM zapisywana jest również na dysku przed snem. W przypadku całkowitej utraty zasilania system automatycznie przechodzi w tryb hibernacji.
  • 5 - Jest to to samo co tryb 1, ale dotyczy osób korzystających z bezpiecznej pamięci wirtualnej (w Preferencjach systemowych »Bezpieczeństwo).
  • 7 - To samo co tryb 3, ale dla osób korzystających z bezpiecznej pamięci wirtualnej.

Te same liczby mogą być użyte do zmiany ustawienia trybu uśpienia:

sudo pmset -a hibernatemode 1
Arjan
źródło
11

Napisałem skrypt, który pozwoli ci natychmiast wejść w stan hibernacji (bez trwałej zmiany ustawień). Uważam, że jest to dość przydatne, ponieważ lubię ustawienia domyślne, ale chcę siłą wejść w stan hibernacji w drodze. Może komuś innemu też się przyda ;-)

#!/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

Dodawanie do paska menu

Jeśli chcesz wywołać ten skrypt z paska menu („systray”), zrobiłbym:

  1. Umieść ten skrypt w odpowiednim miejscu (np /usr/local/sbin/.).
  2. Utwórz AppleScript, który po prostu wywołuje ten skrypt. Nazwij to „Hibernacja”
  3. Dodaj swoje skrypty jabłkowe jako ikonę na pasku menu

Teraz możesz uruchomić skrypt, klikając pasek menu-> AppleScripts-> Hibernacja

oligofren
źródło
1
zrób proszę wersję systray :)
DataGreed,
Zrób wersję systray.
qed
Cześć, dzięki za komentarze. Niestety nowszy MacBook Pro, który dostałem w 2013 roku, ma znacznie lepszą wydajność w trybie gotowości niż mój poprzedni komputer Mac i znacznie wydłuża żywotność baterii. Więc niestety niewiele mnie zachęca, aby nauczyć się kakao, aby tworzyć wersję systray. Usunę teraz to zdanie.
oligofren,
To bardzo interesujące, jak to działa? Nie shutdown -s nowdziała od razu?
SilverWolf - Przywróć Monikę
1
@leetbacoon dodał instrukcje dodawania tego do paska menu. Nie mam komputera Mac od kilku lat, więc nie mogę wkleić żadnych zrzutów ekranu ...
oligofren,
9

Strona podręcznika pmset również zaleca używanie 25zamiast 1.

0000 1000 (bit 3) zachęca dynamiczny pager do stronicowania nieaktywnych stron przed hibernacją, aby uzyskać mniejszą pamięć.

0001 0000 (bit 4) zachęca dynamiczny pager do bardziej agresywnego drukowania stron przed hibernacją, aby zmniejszyć zużycie pamięci.

Nie zalecamy modyfikowania ustawień hibernacji. Wszelkie wprowadzone zmiany nie są obsługiwane. Jeśli zdecydujesz się to zrobić, zalecamy skorzystanie z jednego z tych trzech ustawień. Ze względu na mnie i moje nie używaj niczego innego, 0, 3 lub 25.

[...]

hibernatemode = 25 (binarny 0001 1001) można ustawić tylko za pomocą pmset. System zapisze kopię pamięci w pamięci trwałej (na dysku) i odłączy zasilanie pamięci. System przywróci obraz dysku. Jeśli chcesz „hibernacji” - wolniej śpi, wolniej budzi się i wydłuża czas pracy baterii, powinieneś użyć tego ustawienia.

Niektóre laptopy teraz wprowadzić hibernacji ( tryb czuwania ) po około godzinie normalnego snu, jeżeli:

  • Power Nap nie jest włączony (więc domyślnie nie)
  • Komputer jest zasilany z baterii
  • Komputer nie jest podłączony do urządzeń USB lub zewnętrznych wyświetlaczy i nie jest sparowany z urządzeniami Bluetooth

Laptopy, minis Mac i iMac zużywają około 0,2-0,4 W przy wyłączeniu lub hibernacji i 0,8-1,4 W w trybie uśpienia. Hibernacja (i tryb hibernacji + uśpienia, z którego domyślnie korzystają laptopy) może również skrócić żywotność dysków .

Lri
źródło
6

W przypadku OS X Lion działa to lepiej w przypadku hibernacji

sudo pmset -a tryb hibernacji 25

niż

sudo pmset -a tryb hibernacji 1

ponieważ tryb hibernacji 1 może z jakiegoś powodu powodować awarie.

Willem
źródło
Co dokładnie oznacza 25?
qed
25 jest binarne dla 0001 1001, co oznacza, że ​​ustawione są bity 4, 3 i 0 (trzy 1: s). Te trzy bity mówią o twoim komputerze różne rzeczy. Bit 0 (0000 0001) informuje komputer o aktywowaniu hibernacji (co oznacza oszczędność pamięci na dysku przed wyłączeniem). Bit 3 (0000 1000) mówi komputerowi, aby wyczyścił pamięć starych śmieci przed zapisaniem ich na dysku (aby zmusić do zapisania mniejszej ilości rzeczy na dysku). Bit 4 (0001 0000) mówi komputerowi, aby był bardziej agresywny podczas czyszczenia pamięci (pozwalając mu zapisać jeszcze mniej rzeczy na dysku).
Willem,
5

W przypadku odpowiedzi, które polegają na zmianie „hibernatemodu” za pomocą pmset, warto zauważyć, że opcja „wymuszenia” na pmset powoduje, że zmiany są przejściowe. Ustawienie nie zostanie zapamiętane, gdy system obudzi się ze stanu hibernacji. Na przykład:

pmset -a hibernatemode 25 force

Zmieni tryb hibernacji, aby reprezentował tradycyjny tryb hibernacji (tj. Stan systemu zapisany na dysku i odłączone zasilanie), ale tylko do następnego włączenia systemu lub odczytania ustawień z dysku ( pmset touch).

Użycie opcji wymuszenia pozwala uniknąć konieczności zapisywania i przywracania bieżących ustawień trybu hibernatemode.

użytkownik210274
źródło
Świetna wskazówka! Możesz edytować moją odpowiedź, jeśli również się
martwisz
3

tak. to się nazywa bezpieczny sen. najłatwiejszym sposobem uzyskania tego jest użycie widgetu głębokiego snu .

yanokwa
źródło
2
Z pasją nienawidzę widżetów. Czy jest coś niepozornego?
AngryHacker
1
Dla właścicieli laptopów najprostszym sposobem jest zamknięcie pokrywy. Menu Apple w lewym górnym rogu ma również opcję „spania” (przynajmniej na moim Tygrysie).
Tadeusz A. Kadłubowski
3

Hibernacja zostanie również uruchomiona automatycznie, jeśli bateria laptopa całkowicie się wyczerpie.

Bob D.
źródło
2
Mac mini nie ma baterii ...
Arjan
2

Czytałem, że „Bezpieczny sen” jest domyślnie włączony na wszystkich komputerach Mac z procesorami Intel i niektórych późnych modelach komputerów PowerPC (myślę, że Intel Mini mają tę obsługę, ale PPC prawdopodobnie nie - bez nieobsługiwanych hacków).

Ale „Bezpieczny sen” nie jest tym samym, co „hibernacja”. Jest to połączenie oszczędzania pamięci RAM na dysk, ale także normalnego uśpienia. Pozwala to na szybkie wybudzanie, a także zachowuje stan systemu, jeśli zasilanie całkowicie zaniknie, gdy maszyna jest w trybie uśpienia.

Możesz stwierdzić, czy system używa Bezpiecznego uśpienia poprzez (po co najmniej jednym śnie) sprawdzenie, czy plik / var / vm / sleepimage ma taki sam rozmiar jak zainstalowana pamięć RAM. Również gdy Bezpieczny sen jest aktywny, będzie dłuższe opóźnienie między kliknięciem elementu menu Uśpienie (lub przyciskiem albo przytrzymaniem klawisza Command-Option-Eject), zanim lampka stanu urządzenia zacznie normalną pętlę zmniejszania / zmniejszania.

Ostatnim elementem rozwiązania jest pełne wyłączenie urządzenia po zapisaniu pamięci RAM w trybie uśpienia. Wygląda na to, że można to skonfigurować za pomocą programu wiersza polecenia pmset, aby ustawić tryb hibernatemode . Możesz pobrać coś takiego jak Deep Sleep, aby uzyskać automatyczny sposób na zmianę tej konfiguracji.

Chris Johnsen
źródło
Bezpieczny sen nie był domyślnie włączony na moim komputerze Mac Mac mini. Użyłem SmartSleep, aby to umożliwić, ale rzeczywiście pmsetmogę osiągnąć to samo.
Arjan