Mac是如何做到快速待機快速喚醒的?

Macbook再合上蓋子的時候自動進入待機狀態,打開蓋子自動喚醒。速度基本保持1s左右。

反觀WindowsPC,為什麼待機喚醒要花比較長的時間?

(這裡的待機指的是,系統進入小功率耗電,內存保持供電,內存數據並不dump到硬碟的的情況)


先說結論:使用非旋轉式存儲設備,睡眠模式混合,平台優化。最近的 Windows 設備的睡眠改善也得益於這幾點。

非旋轉式存儲設備其實不用多提了,因為這個非常好理解,不然你喚醒個設備然後聽硬碟慢悠悠上電的聲音就知道為啥了。

再說睡眠模式混合。Mac 的睡眠至少是有多階段電源狀態的,Power Nap / Darkwake 是 S0(不知道有沒有用到 S0 子狀態,不過 XNU 源代碼里提了這件事),常規 S3,長期 S4。Power Nap 是開 CPU 一個核然後關掉 GPU 之類的耗電大戶,跑維護和連接任務,S3 和常規無異,S4 也是。不信你去把 MacBook 合蓋一周再打開,你會看到至少五六秒的黑屏再喚醒的

平台優化其實也不用多提。就說個事吧,在某 S0ix-enabled 的 Intel 參考平台上,插兩塊 AMD 顯卡和外接顯示器,喚醒就可以 10s 以上見了(此處 @James Swineson

------

以下是附加部分,解釋最近的 Windows 平台睡眠的改善情況。Surface Pro 3+, XPS (最近的), ThinkPad X 之類的睡眠都是 Modern Standby / Connected Standby (whatever 名字),反正這個東西就叫 S0ix,這東西在 Windows 上很好使,直觀感受是比如睡眠時能聽歌、有推送,但是這些機器在 Linux 下 s2idle 普遍很慘(一覺睡去再也不醒,睡不著,睡眠耗電超高之類的)。

x86 上這個狀態需要平台支持並啟用;ARM Windows 上都是支持的(只要 ACPI 里聲明了 Low Power Idle Capable),Windows 假設 SoC DVCS 功能完好,直接 KiIdleLoop 了然後讓 SoC 自己處理電源管理。如何驗證平台狀態看下圖。

順帶一提我給 MacBook 的 Boot Camp 寫過一個 S0ix-enabler,用完之後 Boot Camp Windows 喚醒速度暴打 macOS。但是我不建議你長期睡眠使用它,因為深層優化是要調 ME 和 PCH 的,which 你碰不著。短期睡眠它非常好用(

powercfg /a 檢查睡眠支持

這種情況下一般平台硬體都不會睡得太死,睡眠的幾個階段如下:

  • Connection Phase (檢查當前有沒有活躍的 RDP 連接,有沒有程序要求暫停睡眠),如果有,在請求結束之前不進入下一個階段
  • Presence Phase (Windows 8.1+ 棄用,忽略)
  • Process Lifetime Manager (PLM) phase,檢查 Windows Store 應用後台,如果不是播放音樂等任務那麼暫停
  • Maintenance phase,如果需要跑自動維護,那麼在這時候跑維護任務,安裝更新之類的(現在你可以思考一下為什麼某些設備經常睡眠超級燙了)
  • Desktop Activity Moderator (DAM) phase,暫停所有桌面應用
  • Low-power phase,通知所有監聽低功耗事件的設備和驅動。平台準備進入低功耗狀態
  • Resiliency notification phase,通知網路子系統(LTE/其他 NIC)平台準備進入低功耗狀態,如果不支持 L3 包選擇和負載,這時候網卡進入 D3 電源狀態(幾乎是關掉了)
  • DRIPS,平台完成準備工作,SoC 可以選擇在這個時候的任意時間進入睡眠狀態,且這個操作對操作系統不完全透明( @Icenowy Zheng 跟我說是這樣的)。操作系統會間隔一段時間醒來一下,檢查一下通知之類的,跑一下服務,一般用時一秒左右,然後睡回去。喚醒源可以通過中斷把 CPU 拉起來,因為是 S0 的子狀態,這個過程非常快,加上要求平台最好用非旋轉式存儲設備,所以喚醒也非常快。(其實混合存儲設備的 Surface Studio 喚醒也很快)現在理解一下為什麼最近的 Windows 設備喚醒很快了。好這個時候還有一個情況,就是你的網卡呆住了,那麼你喚醒時會卡死,然後想想為什麼 Surface (特別是 Pro 3)偶爾喚醒爆炸(

不過 S0ix 這東西很多 OEM 調不好(Dell 一些機器也在也在瞎搞,不信你開 powercfg /sleepstudy 然後看真相),所以選用它的並不多。

就算是 Surface 也不一定調得好


你Mac裝win不也一樣是快速喚醒嗎,和系統有個雞兒關係


補充一下,題主說的是Mac如何做到快速待機快速喚醒(問題描述里就說的合上蓋子再打開的這種情況),問題描述里說為什麼Windows不可以

答案很簡單,就是配置問題,喚醒的機制還有固態的速度、內存的速度等。Windows PC 也是可以的。

很多人提到了 Windows PC 什麼價位、什麼配置都有,肯定結果千差萬別,我用相似價位的 Surface Laptop 演示一下,Windows 同樣可以實現,打開蓋子自動喚醒。

我發現有些杠精真的沒法說,花錢買蘋果產品,本來覺得秒殺其他PC,結果發現竟然有別的電腦跟蘋果一樣,一下子優越感沒有了,開始喪心病狂的攻擊說蘋果不好的或者說其他電腦跟蘋果一樣的答主。何必呢?是你花錢買蘋果產品對吧?不知道的還真以為你是蘋果股東呢……

我發這個視頻無非是想說 Windows PC 也可以,喚醒快1s還是慢1s有什麼關係?只要我們用著流暢就好,也並不是說用蘋果就高貴,用微軟就低下。拋卻品牌本身的效應,回歸產品的本質,電腦就是拿來用的啊!

微軟也沒給我錢,說到這裡得 @vczh 輪子哥,快讓微軟市場部給我打錢(^o^)/~

再補充一點,我並不是推薦大家購買 Surface,我的 Laptop 因為升級1803藍屏,返廠了2次,現在雖然不藍屏了,但是發熱比修之前要嚴重,沒錯我買的是第一批,所以不要做嘗鮮的第一批,等產品成熟了再買可能好點。


以下為原答案,第二個視頻在下面:

雖然沒人關注,還是補一下視頻吧,(補充一下,真正沒辦法單手開蓋的原因是我放到沙發上了比較軟,後來經過測試,放在比較硬的桌面是可以單手開蓋了,就不補視頻了)。

再補充一下,有朋友說為啥掀開到中間停頓一下再全部掀開,這位朋友觀察的很仔細,因為 Laptop 合上蓋之後中間的縫隙特別小,所以需要掀開一點縫再用手指伸進去壓住筆記本C面,才能完全掀開。


可以看到連題主說的1s延遲都沒有,掀開立馬喚醒進入系統,根本感覺不到時間。

杠精真是多,再補個視頻,這個比第一個視頻操作流暢很多了,再杠的話,就不回復了:

第二個視頻先使用默認待機狀態打開喚醒,然後開機狀態下點擊睡眠選項,手動睡眠,然後蓋上再喚醒,最後打開蓋子的情況下,手動睡眠,觸摸觸控板喚醒。

我看標題說的是待機,不是休眠對吧,對於寸土寸金的固態硬碟來說,休眠佔用的空間太大了,我的電腦默認是把休眠關閉的。所以我兩次視頻都是對於待機的測試。


有朋友問壁紙是什麼,一個灰度的美女,發上來,需要的拿走:

有朋友說這個帶水印……好吧不帶水印的:

賞心悅目的美女壁紙收藏-逍遙峽谷?

www.icoa.cn圖標


PS.我發現評論里有引戰的嫌疑,本來只是說待機喚醒是不是可以,現在被某些果粉上升為蘋果系統好還是 Windows 好了……(榮譽之戰?Whatever)也有一些看不慣果粉的網友(果黑?還有這種說法么?)在評論里說打臉什麼的……我也不是為了打臉什麼的……總之現在這個不是我想看到的,所以關閉評論了。


帶有SSD的系統都該這樣,不然就是垃圾。Windows機器裝了SSD也是秒醒

系統休眠一般分至少三層,第一層是屏幕黑掉,但是內存帶電,CPU在休眠和活躍狀態交替,風扇還在轉,這種都是秒開,甚至不會斷開wifi,因為根本沒關

第二層是wifi斷掉系統徹底進入獨自休眠的狀態,但是CPU基本都是S3-S4以上的狀態(這裡不太確定Mac機器、CPU以及ACPI狀態之間的關係,但我看Mac供電電路至少有S0-S5),內存還在供電,這時候喚醒也是秒開,不過的確有從關到開的流程

第三層是把內存寫入硬碟,關閉CPU和內存,重開的時候讀回來。這時候可能需要5-10秒。當然休眠狀態下可能仍然會周期性喚醒,更新一下各種數據

mac拔電源休眠狀態一般是第二層1小時之後跳第三層,日常使用一般都是從第二層喚醒,再加上高速SSD,整體上感覺很快。Windows也可以配置成這樣,首先你需要高速SSD,然後改電源設置


我可以告訴你,我這裡有台HDD版的2011 Macbook Pro,4G 1333 ddr3內存的,如果我打開chrome然後休眠的話……………………我需要分半鐘才能從黑屏看到登陸界面,然後再卡2分鐘才能輸入密碼(因為內存不足全部讀HDD的Swap了)……………………系統無論是High Sierra還是Mojave都是一樣……………………你們還會覺得mac的喚醒快嗎?這都是硬體堆出來的,你把Windows的筆記本堆到一樣的8G到32G內存、MLC NVME配置Windows一樣是秒開…………


推薦閱讀:

TAG:MacBook | Mac | 個人電腦 | macOS | MicrosoftWindows |