8858cc永利

网站专题BANNER

windows的睡眠模式

发表日期:2022-04-20 16:39:55 文章编辑:洛壹网络 文章来源:8858cc永利观点

2020 年 1 月,NotebookCheck 将戴尔 XPS、华硕 ZenBook 等 Windows 笔记本电脑从 Windows「睡眠模式」唤醒后,发现笔记本表面最高温度竟然达到 50℃,整机功耗更是高达 27 W。Windows 睡眠模式设计的目标就是安静、低功耗,但现在有如此异状,NotebookCheck 认为「取代了 S3 睡眠模式的MicroSoft新型待机是导致(这样结果的)罪魁祸首」。

那么,S3 睡眠模式代表着什么?它为何被新型待机(Modern Standby)取代?发热的合盖笔电和新型待机又有什么关联?

ACPI 与系统、设备电源状态

大家既想让硬件在干活时,卯足了劲干活;又想在无人操作时,降低功耗节约能源;而且对于笔记本或是平板电脑来说,在不接入外部电源时电池电力总是有限的,因此大家需要电源管理。大家日常接触到电脑的关机、开机也好,睡眠、休眠也罢,从宏观上看,都属于电脑的电源管理的范畴。

显然,这种系统性工程需要由操作系统、硬件制造商、OEM 等角色共同参与,一个大家共同遵守的规范性文件也自然必不可少。

90 年代中期,英特尔、MicroSoft、东芝等共同制定了帮助操作系统发现、配置计算机硬件和实行电源管理的规范——ACPI。该标准为系统、硬件组件等定义了不同的电源级别,其中,Sx 定义了系统整体的电源状态,而 Dx 则定义了主板上硬件设备的电源状态,文章开头提到的 S3 就隶属于 Sx 状态。

在ACPI 规范中,系统整体的电源状态(即 Sx 状态)从 S0 到 S5 共分六级。但在现实生活中,常见的系统电源状态只有如下四种:

    S0:完全开启,CPU 等设备正常运作。也就是开机、从睡眠模式唤醒计算机本质上是系统电源状态切换为 S0 的过程;

    S3:睡眠状态,亦称挂起到内存。此时,内存仍需供电,但处理器不处理指令,断电会丢失内存中的数据;S1 和 S2 则为 S0、S3 的中间状态;

    S4:休眠状态,系统状态以及内存中的所有信息都被保存到磁盘,所以也被叫做挂起到磁盘,此时几乎所有设备断开电源;

    S5:完全关闭。除电源按钮外所有设备断电,需要经过完整引导才能进入系统。

六个状态按数字从小到大,用电设备越来越少,功耗也依次降低,不过,将系统恢复到工作状态 S0 所需时间也逐渐增加:

许多条件会触发系统在 Sx 状态中的转换,比如说长时间无人操作后,系统会由 S0 变为 S3;睡眠状态的系统如果接收到了键盘鼠标的输入,则会切换到 S0……当然,作为普通用户的大家并不需要操心如何完成这些转换,大家只需要知道 Windows 中的负责此任务的组件是电源管理器,电源管理器最重要的两个任务是告知App即将要被挂起到内存或者磁盘和辅助切换各种硬件设备的电源状态。

如果只是系统和App被挂起,但大家的显示器、蓝牙、背光灯等设备仍处于开启状态,这时系统也很难说是省电的。因而,ACPI 也为硬件设备规定了不同的电源状态,以 D(Device)开头:

    D0:类似于 S0,此时设备完全开启,正常工作;

    D3: 此时设备处于关闭状态,不能工作。D3 下有两个子状态:D3hot 状态中,设备仍然连接着主电源,微量耗电,总线控制器能检测到设备;而 D3cold 则是完全断电,无法检测到设备;

    D1-D2:这是 D0、D3 的中间状态,设备的部分功能正常,相对于 D0 而言,功耗更低。不像 D0 和 D3,设备的制造商可以不定义这两个状态。

以低功耗蓝牙设备为例,不同电源状态下的功耗、恢复到正常状态的延迟和 Sx 状态类似,参考数据如下表所示:

表注:数据来自MicroSoft文档和维基百科

设备的电源状态由对应的驱动程序控制,驱动程序可以相对独立地控制设备状态。例如,大家在日常使用(S0)时,摄像头无需开启,那么此时的摄像头就会被调整为 D3 状态。但是,当电源管理器决定要切换系统状态时,它们必须接受调度,系统电源状态和设备电源状态有预设的映射关系,大家可以在Windows 设备管理器 > 设备 > 属性 > 详细信息 > 电源数据看到:

如上图所示,我的显示器支撑 D0 和 D3 两种状态,在系统为 S0 的情况下,最低可以达到 D0 状态,也就是说,可以处于 D0 - D3 任意一种状态;而在系统为 S3 的情况下,则最低可以处于 D3 状态,也就是必须关闭。硬件设备的制造商大多认为不需要在 S3 模式下保持功能正常,几乎所有设备被设定为 S3 对应 D3。

在 Windows 7 及之前,以及目前的部分 PC 中,进入睡眠模式实质上就是系统电源状态由 S0 切换为 S3,设备状态再根据映射关系,切换对应的 Dx 状态,这常常也被称为传统待机或是S3 待机。

以管理员权限打开终端,输入powercfg /a,如果得到的结果中显示支撑Standby(S3),则说明你的设备为传统待机:

来源:forum.gigabyte.us

因此,在一台采用了传统待机模式的 PC 上,进入睡眠模式的步骤大致如下:

电源管理器决定切换系统状态为 S3;

告知应用在规定时间内完成最后的操作,之后将它们挂起到内存;

    通知硬件设备配合系统状态切换,设备悉数从 D0 切换到 D3 状态。

至此,大家已经解决了 S3 睡眠模式是什么的问题,那么为什么MicroSoft抛弃它,选择所谓新型待机呢?
新需求与 Sx 状态的变体

虽然 ACPI 制定了电源管理的规范,但随着时间的推移,新的需求被发掘,人们开始在 Sx 状态的基础上做文章。

例如,Linux、Windows 会支撑一种叫做混合睡眠(hybird sleep)的状态。这种情况下,机器状态既会被保存到磁盘,也会被保存到 RAM,是 S3 和 S4 状态的混合;Mac 也曾经宣传过这项特性。Arch Linux Wiki说明了设置这种状态的目的:

    如果电池没有耗尽,那么系统可以从 RAM 恢复。如果电池耗尽,系统可以从磁盘恢复,这比从 RAM 恢复慢,但至少机器的状态没有丢失。

在 S3 睡眠下,系统状态被保存到了 RAM 中,前面提到过 RAM 一旦断电,保存的内容就会消失;想要进入系统必须重新进行引导,而 S4 状态中用于保存系统状态的磁盘没有这种问题。所以将两者结合的混合睡眠,既解决了数据安全问题,也可以在没耗尽电量之前尽可能缩短唤醒的时间。

另外,比较知名的例子就是 Windows 中的「快速启动」功能。很多人可能都不知道,在开启「快速启动」的这项功能以后,Windows 的关机功能不再是真的关机了,电脑在你点下关机按钮以后并不会进入 S5 状态,而是进入了 S4 休眠状态。但休眠功能不是保存系统的全部状态吗?为什么 Windows 关机后还要输入密码,重新打开应用呢?

确实,传统的 S4 休眠会保存系统的全部状态,包括登录的用户、开启的应用,重启后,引导程序会直接将磁盘中的状态加载到内存中,这样就省去了重新加载内核、初始化硬件的功夫。Windows 10 开始菜单中,休眠选项默认是隐藏的,可以通过电源选项 > 更改电源按钮的功能 > 关机设置重新打开。

但MicroSoft的考量是,S4 休眠生成的文件比较大,Windows 上为可以使用总内存的 40%,大家能用 PowerShell 在 C 盘根目录看到这个休眠文件:

如图所示,这个休眠文件大约有 10 GB,这对一些磁盘容量较小的设备是一个不小的负担。另外如果设备使用的不是固态硬盘,如此大的文件加载时间可想而知也很慢。因此,开启「快速启动」以后,Windows 的关机功能确实是休眠,但在休眠之前,Windows 会退出所有应用并注销用户会话,再生成休眠文件;这时休眠文件就只占内存大小的 20% 了,「快速启动」体验自然也会变得更好。

以上两个例子说明,厂商并非一定要拘泥于 ACPI 的规范,如果有了新的需求,解决需求才是第一位的。那么,传统 S3 睡眠遇到了什么无法解决的需求呢?MicroSoft在其硬件开发文档中如此回答:

    电源管理架构的目的是满足不断增长的用户需求,包括:

    客户要求他们的计算机随时可用,即使在关闭时也是如此……

    在插电或者使用电池时,客户都希翼减少 PC 使用的电量

S3 睡眠也许能做到节能,但离随时可用差了不少。比如,大家希翼电脑上的 IM App也和手机一样,可以及时接收消息,但 S3 状态处理器无法工作,就更不用提接收消息了;再比如,大家也希翼电脑可以像手机一样按下指纹就能解锁,系统需要先花上大概 5 秒从 S3 切换到 S0,才能识别指纹进行解锁;又比如大家想使用 Windows 下的语音助手,如果系统处于 S3 睡眠状态,那么收音、网络设备都处于 D3 关闭状态,这时语音助手就没有办法响应,而让系统整个保持在 S0,这样整机功耗就无法控制了。

看到这里,读者可能会想:这不就是智能手机上的即开即用的使用体验吗?确实如此,新型待机正是希望将智能手机的即开即用体验带到 Windows 上。
新型待机

早在 Windows 8 时代,MicroSoft就认识到了 S3 睡眠模式的不足,那时,MicroSoft希望 PC 能够在睡眠模式下也能正常连接网络,所以MicroSoft推出了一个新式的睡眠模式并命名为连接待机(Connected Standby),即在保证系统和设备处于 S0 响应速度的基础上,又能有 S3 的功耗控制。而在 Windows 10 中重新更名为新型待机。

图注:图片修改自WinHEC Fall 2017

传统 S3 待机控制 CPU 功耗的方法很简单,断开 CPU/SoC 部分的供电即可,这时芯片里的寄存器全部清空变成了 0;但在唤醒时,需要重新初始化寄存器,这就是从 S3 恢复成 S0 时需要一点时间的原因,当然这个时间远比从 S4 恢复所需要的短得多。

但现在连这一点初始化的时间都不能要了,也就意味着需要 CPU/SoC「记住」之前寄存器的状态。因此,CPU/SoC 内部就需要有一枚专门的芯片按照下图的步骤,一步步把对应寄存器区域的状态保存在 CPU/SoC 内部的 nvram 中,再切断电源。这样就让设备实现了在 S0 响应速度的基础上,又能有 S3 的功耗控制。

所需要功耗从上到下依次变小,且只有每层的任务都完成以后才会操作下一层的目标

首先,CPU/SoC 外部的所有设备都必须进入低功率模式, 也就是 Sx 对应的 Dx 为最低的设备电源状态。接下来,将网络和无线电设备置于低功率模式,在此期间,这些设备通常会使用很少的一部分电源以维护连接,并在必要时唤醒 CPU/SoC 。

在 CPU/SoC 外部的所有设备(包括通信设备)都断电后,CPU/SoC 的芯片组和非处理器核心也将进入低功率模式,这可以进一步节约能源;在这之后,就是处理核心 CPU 和 GPU 以及位于最后的一些其他电路了。如果中间有任何一个部件拒绝进入低功耗状态,那么整个链路就会中断,重新回到 S0。英特尔将这一系列状态称之为低功耗 S0 状态(low power S0 idle),代号为S0ix,每让一层设备进入低功耗状态则为 S0ix 中的 x 加上一,因此在 CPU 和 GPU 停止工作以前的状态也常常被称作 S0i3 休眠状态。

所以,新型待机对 PC 上的芯片组等设备有一定的要求。以管理员权限运行终端命令powercfg /a,若结果含有Standby(S0 low power idle),则说明你的设备为新型待机。使用新型待机的设备,不支撑 S1-S3 睡眠模式:

硬件设备的省电还不够,App也有做相应的准备。这方面,新型待机和 S3 睡眠一样,都将运行的应用挂起到 RAM。和 S3 状态不一样的是,新型待机目的是在睡眠状态下仍能完成一些任务,因此,部分活动享有新型待机下的豁免权。

MicroSoft称这些应用活动为激活器,前面提到过新型待机状态下,网络甚至是 CPU 都可能不工作,这些激活器的作用就是将这些设备短时间唤醒,实行某些指令。这些激活器全都是 Windows 内置的系统服务,例如负责接收 UWP 应用通知的 WNS、负责处理 Windows 更新的 WU、负责管理网络连接的 NCSI……它们的存在使 Windows S0ix 待机状态时也能收到通知,并可以处理后台维护任务。

以 UWP 后台任务为例,大家在 Windows 设置中的应用 > 应用和功能 > 设置中看到一项后台应用权限,这个权限控制的就是在待机时,应用实行后台任务的能力。默认的「电源已优化」选项意思是根据 PC 连接电源的情况,决定是否实行任务。

当激活器唤醒部分硬件设备时,新版 Windows 还会限制它们能够使用的资源量,例如 UWP 后台刷新任务只允许活动 5 秒,5 秒后则会被终止,硬件设备也会再次进入低功耗状态。需要注意的是,和 S3 睡眠模式不同,这些任务并不会导致系统被唤醒至完全工作状态,除了需要唤醒的少部分设备外,其他硬件仍处于低功耗状态,所有第三方应用、服务也仍被挂起。

除了被激活器唤醒的小部分时间中,新型待机 PC 的功耗和 S3 相当。如下图所示,运行powercfg /spr生成的电池报表显示,在 2022 年 4 月 16 日 2 - 11 时的新型待机过程中,App(SW)、硬件(HW)100% 处于低功耗状态,笔记本电量消耗了 3%:

上面的报表还显示,在进入睡眠模式前,有一个关闭屏幕(Screen Off)阶段。这种设计很符合直觉,按下睡眠按钮后,PC 直接关闭屏幕,将应用挂起到 RAM、切换硬件设备状态都在用户无感知的息屏期间完成,这也是误触了睡眠功能后,立即唤醒 PC 花费时间比正常情况稍长的原因。从关闭屏幕到睡眠的间隔对应着设置面板中的相关选项,一般建议将两个时间统一:

当然新型待机模式和传统待机一样,点击电源按钮,或者操作键盘鼠标,PC 就会切换为 S0 完全开启状态。因为系统本身就处于 S0,部分设备也不需要经历 D3 到 D0 的高延迟状态切换,所以新型待机的唤醒可以达到 1 秒以内,MicroSoft称之为「instant on」。IntelEvo? 认证主打的「即时唤醒」也正是得益于新型待机。

当然为了进一步增强 S0ix 的省电效果,新型待机还有一个机制叫做自适应休眠:当新型待机期间耗电量超过 5%,系统会直接进入最深一级的 S0i5 状态,这个状态理论上功耗为 0 瓦。有这个机制的存在,有时候将笔记本合盖后,你会发现第二天再打开时就无法用键鼠唤醒了。如下表所示,由于某些App活动,我的笔记本待机耗电达到了 5%(264),接着,PC 就直接进入了休眠模式(265),电量停止消耗。

综上所述,在一台采用新型待机的 PC 中,进入睡眠模式步骤如下:

    电源管理器决定进入 S0 低功耗模式;

    屏幕关闭;

    告知运行中的桌面应用和 UWP 在规定时间内完成最后的操作,之后将它们挂起到内存;

    通知硬件设备进入相应的低功耗模式;

    有通知或后台任务任务的需要时,激活器唤醒部分设备,实行操作;

    完成任务或者超过唤醒时限时,再次让设备进入低功耗模式。

大家的第二个问题也就迎刃而解了。让大家回到文章开头,新型待机又是怎么制造出了高达 50℃ 的合盖笔记本呢?
对新型待机的批评

事实上,新型待机推行以来,批评的声音此起彼伏,文章开头的资讯只是其中一例。这些批评一部分确实和新型待机有关,也有一部分则应当归咎于误操作。

虽然MicroSoft在宣传中将新型待机功耗和 S3 并称,但毫无疑问的是,由于传统待机状态下没有任何后台活动,设备也大都处于关闭状态,耗电量极小。

但新型待机状态下,一些设备可能并不会进入低功耗状态,甚至是拒绝进入低功耗状态;此外新型待机也有唤醒 SoC 处理指令的机制,所以,新型待机的耗电量必然不会比 S3 更好,但并没有到不能接受的程度,从前面的报表中可以看出,9 个小时的待机时间耗电量为 3%。

因此,一个非常普遍的观点是新型待机相较于传统待机耗电量更大,甚至有Surface 用户称睡眠模式下短时间内电量骤降 20%。的确,既要即时启动又要不耗电的黑魔法是不存在的,但 20% 实属夸张,如果机器电池状况良好,那么唯一可能的说明是 PC 根本没有进入睡眠模式。

那么,为什么 PC 会无法进入睡眠模式呢?答案很有可能是 Windows 的电源请求机制。

试想,大家正在观看一部 2 个小时的影片,PC 依旧死板地遵照设置,3 分钟无操作直接息屏睡眠,这样的体验实在很差。正是为了解决这些情况,应用可以发送电源请求,系统扫描到电源请求后不会发送切换状态的指令。电源请求可以使用powercfg /requests看到:

音视频应用之外,其他应用也有可能发送电源请求,它们会阻止闲置的 PC 睡眠,电量消耗自然会高。不过,当大家明确要求 PC 睡眠时,这些应用也会被停止,只需要将合盖/电源按钮的功能设置为睡眠,然后实行这些操作即可。

除了对耗电量的批评,还有人认为新型待机只是假睡,因为他们发现,书包里的 PC 风扇仍在工作。本质上,这是不信任其激活和唤醒机制。

根据前面对新型待机原理的讲解,大家知道,和 S3 状态一样,除了豁免的少数应用活动,待机状态下传统应用、第三方系统服务都被挂起到内存,它们没有办法唤醒机器。最有可能将机器唤醒至 S0 完全开启状态的并非App,而是外设。例如,如果 PC 外接了鼠标,并且在不关闭鼠标的情况下直接合盖放进背包,那么,鼠标只要受挤压轻微移动,PC 就会退出睡眠状态。这种情况并非新型待机独有,唯一的解决方案是装包之前,拔出或者关闭外设的电源。

还有一种情况,前面提到过,Windows 是可以在待机状态下实行更新操作的。根据MicroSoft的设计,如果连接了网络,那么 Windows 可以在待机状态后台下载已有的更新,如果还连接了电源,那么 Windows 也能安装更新甚至重启设备。如果更新下载任务繁重,风扇确实可能会工作,由于此时为合盖状态,散热条件差,很可能造成热量堆积。要是厂商将待机模式下的风扇设计为完全不工作,那么此时可能会更热。

由网络连接引发的问题可以通过禁用新型待机的连接解决。部分设备上的设置面板提供了「允许待机时使用 Wifi」之类的选项,如果没有提供的话,则可以直接修改注册表:在HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Power新建名为EnforceDisconnectedStandby的 DWORD,值为1。这样,就可以禁止待机时网络下载。其代价是大家无法在待机状态下收取邮件等需要联网的通知。

不过,文章开头的案例大概率并非由以上原因导致。NotebookCheck 并没有给出完整的测试数据和步骤,但能确定的是,根据该文章发布两天后的注释,文章中的测试机并没有安装最新驱动。而戴尔则早在文章发布 5 个月前释出了针对现代待机的修复补丁,Elevenforum也有因驱动引发待机异常问题的讨论。理论上,新型待机工作需要硬件设备的紧密配合,如果驱动出错,那么待机温度异常也是有可能的。

总而言之,如果新型待机异常,可以通过管理员权限运行powercfg /spr获得待机的时间、软硬件活动、唤醒事件等信息,再从以下方向排查:

    驱动程序是否为最新;

    是否有应用阻止 PC 睡眠;

    是否连接了会唤醒 PC 的外设;

    是否在待机过程中进行了大量网络活动,如系统更新?

不管用户愿意与否,新型待机都会在更多的设备上应用。就我个人而言,用极少量的待机耗电,换取无需关机、随时可用的 PC 使用体验,这笔交易不算亏。然而,由于 PC 上缺少统一推送渠道,UWP 多年来普及缓慢,新型待机离智能手机一样的使用体验还有很长一段路要走。

相关内容
2022 年 SaaS 的趋势预测

SaaS 这个行业还在不断地快速增长。据 Gartner 的一项调查显示,预计 2022 年 SaaS 的支出将增长 40%。企业“每年还要在 SaaS 上面额外支出 200 亿美金”。 SaaS 引擎正在加速,以实现闪电般的快速增长。

SaaS顶流Salesforce的发展史

1999年,贝尼奥夫创立了Salesforce,初衷是把它打造成一个世界级的SFA互联网企业。销售出身的本尼奥夫是个营销鬼才,除了免费试用和限量赠送,早期“NO software”的示威口号让Salesforce在4个月便登上华尔街日报头条,直到现在,被用来在客户间推荐和宣传的Dreamforce大会,已经拥有了上亿的观看量。

搜狐现在怎么样了?卖掉搜狗后,媒体和游戏业务增长如何?

关于搜狐,除了把搜狗卖给Tencent,外界谈论的常常是掌门人张朝阳,他的言论,他的物理课。至于企业本身,搜狐近些年似乎总在核心叙事之外。

Meta一站式硬件商店,meta开了一家线下店

Meta(原脸书)在美国加州湾区开了一家线下店,打出“Meta一站式硬件商店”的名号。5月9日,它正式开业了。

电子发票SaaS的未来

与其他所有的新变革都会对现有游戏规则造成冲击一样,新生的电子发票系统,也在无形之中松动了传统发票服务市场的传统格局,为行业带来了全新的改变。

2022年,中国互联网云厂商的情况

局势已经清晰,谁能在新的角斗场里占据高地,谁就能率先跑出新的商业模型。驱除雾霾,这是新的良性发展,也是在新的外部力量干预下,一个被迫断臂成长的互联网云计算新蓝图。

下一代互联网的Web3.0,在中国将拥有怎样的市场前景?又将呈现出怎样的发展路径?

2021年,在国内为元宇宙“疯狂”的时候,海外市场则在猛烈推进Web3.0。该年底,美国一场国会听证会,向这一领域传达出前所未有的友好态度。

“微信农场”登上热搜第一,茶饮店或许能从中获取新思路?

前不久,“微信农场”登上热搜第一,网友发现微信状态中竟然偷偷上线了“农场功能”,网友们都玩“疯”了,各种动物开始占据了微信状态.....奶茶也不例外。 微信新功能的火爆,貌似是在给奶茶店“发红包”,茶饮店或许能从中获取新思路?

大家
定制
咨询
联系
在线咨询
您的浏览器版本太低

请升级您的浏览器: Internet Explorer11 或以下浏览器: Firefox  /  Chrome  /  360极速浏览器

XML 地图 | Sitemap 地图