前言

有別於 Windows 的 睡眠/休眠,macOS 只有「睡眠」這一選項。

Windows 的睡眠是將當前處理中資料保存於記憶體,僅保持記憶體的供電以達到節能的效果。

倘若記憶體供電因故中斷,因為記憶體具有揮發性,資料將全數消失。

休眠則是將資料寫入硬碟後,因為硬碟不具揮發性,設備將徹底斷電、不耗能。

當然這是有代價的,休眠的回復速度比睡眠慢得多,也就是醒來需要更多的時間。

這讓我不禁好奇,難道 macOS 沒有休眠的功能嗎?其「睡眠」又是哪種眠呢?

节能.png

關於 macOS 睡眠

macOS 睡眠為安全睡眠,可以透過在終端機下指令來查看目前的電源計劃:

pmset -g custom

其中 hibernatemode 睡眠模式有下列可能的值:

  • 0:記憶體持續供電,耗能,回復速度快,相當於 Windows 的睡眠。
  • 25:記憶體資料寫入硬碟,設備斷電不耗能,回復速度慢,相當於 Windows 的休眠。
  • 3:預設值,記憶體持續供電,同時將記憶體資料寫入硬碟備份,所謂安全睡眠。
    也就是說,模式 3 綜合了模式 0、25 的優點,因為記憶體持續供電,所以回復速度快。

但是,萬一記憶體供電中斷,也有硬碟的備份可以回復,所以稱作安全睡眠。

睡眠過程剖析

當闔上螢幕或是下達睡眠指令後,會在 sleep 分鐘後才進入睡眠。

進入睡眠後

hibernatemode = 25,會立即將記憶體資料寫入硬碟,設備斷電。
hibernatemode = 3,記憶體持續供電,並執行步驟 3。
standby = 1,則

電量大於 highstandbythreshold 的話,standbydelayhigh 秒後,將資料寫入硬碟備份。
電量小於 highstandbythreshold 的話,standbydelaylow 秒後,將資料寫入硬碟備份。

其他電源計劃參數

lidwake (開蓋喚醒;1開、0關)
ttyskeepawake(遠程用戶活動時防止睡眠;1開、0關)
powernap (高效小睡;1開、0關)
gpuswitch (GPU自動切換;1開、0關、2不支援)
hibernatefile(睡眠檔案路徑)
displaysleep (顯示器睡眠閒置時間;單位分鐘、0關)
halfdim (顯示器睡眠時亮度先降低一半;1開、0關)
acwake (電源狀態改變時喚醒;1開、0關)
lessbright (使用電池供電時降低顯示器亮度;1開、0關)
disksleep (機械硬碟睡眠閒置時間;單位分鐘、0關)
womp (網路喚醒;1開、0關)

設定電源計劃參數

若要將 AC 電源計劃中的 displaysleep 參數設定為 5,在終端機下指令:

sudo pmset -a displaysleep 5

若要將電池電源計劃中的 displaysleep 參數設定為 10,在終端機下指令:

sudo pmset -b displaysleep 10