从职业玩家角度看,Mac是如何做到快速待机快速唤醒的?

使用非旋转式存储设备,睡眠模式混合,平台优化。最近的 Windows 设备的睡眠改善也得益于这几点。

非旋转式存储设备其实不用多提了,因为这个非常好理解,不然你唤醒个设备然后听硬盘慢悠悠上电的声音就知道为啥了。

再说睡眠模式混合。Mac 的睡眠至少是有多阶段电源状态的,Power Nap / Darkwake 是 S0(不知道有没有用到 S0 子状态,不过 XNU 源代码里提了这件事),常规 S3,长期 S4。Power Nap 是开 CPU 一个核然后关掉 GPU 之类的耗电大户,跑维护和连接任务,S3 和常规无异,S4 也是。不信你去把 MacBook 合盖一周再打开,你会看到至少五六秒的黑屏再唤醒的

平台优化其实也不用多提。就说个事吧,在某 S0ix-enabled 的 Intel 参考平台上,插两块 AMD 显卡和外接显示器,唤醒就可以 10s 以上见了

最近的 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 自己处理电源管理。如何验证平台状态看下图。

深层优化是要调 ME 和 PCH 的,which 你碰不着。短期睡眠它非常好用

这种情况下一般平台硬件都不会睡得太死,睡眠的几个阶段如下:

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 然后看真相),所以选用它的并不多。

带有SSD的系统都该这样,不然就是垃圾。Windows机器装了SSD也是秒醒

系统休眠一般分至少三层,第一层是屏幕黑掉,但是内存带电,CPU在休眠和活跃状态交替,风扇还在转,这种都是秒开,甚至不会断开wifi,因为根本没关

第二层是wifi断掉系统彻底进入独自休眠的状态,但是CPU基本都是S3-S4以上的状态(这里不太确定Mac机器、CPU以及ACPI状态之间的关系,但我看Mac供电电路至少有S0-S5),内存还在供电,这时候唤醒也是秒开,不过的确有从关到开的流程

第三层是把内存写入硬盘,关闭CPU和内存,重开的时候读回来。这时候可能需要5-10秒。当然休眠状态下可能仍然会周期性唤醒,更新一下各种数据

mac拔电源休眠状态一般是第二层1小时之后跳第三层,日常使用一般都是从第二层唤醒,再加上高速SSD,整体上感觉很快。Windows也可以配置成这样,首先你需要高速SSD,然后改电源设置

事实上和配置关系不大,同级别SSD的win唤醒一样比macos/大部分Linux发行版慢。这是系统或者说是内核造成的原因

(实测过g752vs在win和Arch+kde环境下开盖唤醒的速度,Arch的体验无限接近于Mac(虽说有一定几率登录界面会崩溃,不过至少是有反应的),而win的话10次里面能有三次不按电源强制重启就已经算好的了。后来由于那台笔记本并没有移动办公需求,设置了合盖仅关屏幕,才达到了可用的状态

自己的 Windows 台式机(家用)、另一台 Windows 台式机(办公用)和 Surface Laptop 都是敲键盘/开盖秒醒,就 Surface 3 时间长点;反观我 MacBook Pro 2015/2017 开盖都要等一下,甚至有的时候一个星期及以上不用,开盖后没醒,等了一会之后发现还没醒,再去按电源,大约要好几分钟。

怎么评论都在说我用的是假的 MacBook,我司每个人标配 iMac/MacBook Pro,我旁边还有一大摞淘汰下来的 Mac Mini,事实是,这些东西出问题的概率比你们想的高的多。

按说windows 和mac应该都一样,但因为系统还要依赖于机器,而windows的机器什么货色都有,表现也各不相同;

另外这个主观感受方面也影响也比较大;

以我自己为例,我有个tp t450;有个 mac 2012; mac很少关机,自买来之后就经常是盖盖就走,开盖就用,而tp是之后才有的,因而延续了这个习惯,但是(划重点),但是,在使用了几次后,tp开不了机了,找了公司的技术,说是有静电,开了后盖有根线拔下来重新插了下就好了;在这之后,又出现过一次一样的问题,之后tp就再也不敢不关机盖盖就走了,再然后就再没遇上过这个问题

于是于我(普通用户)而言,就形成了一种这个是windows的,盖盖待机功能不可靠的经验(可能是错误经验);

个别主观体验不能反映问题的普遍性,但问题确实存在,不论是因为系统,还是因为机器;

在用户眼里,笔记本是一个整体,有问题就是有问题,就这么简单

发表评论
留言与评论(共有 0 条评论)
   
验证码:

相关文章

推荐文章

'); })();