休眠状态应将RAM内容写出到磁盘,休眠状态恢复应将保存的内容填充回RAM。为什么从休眠中恢复很慢,例如,系统通常在相当长的时间内没有响应?
休眠状态应将RAM内容写出到磁盘,休眠状态恢复应将保存的内容填充回RAM。为什么从休眠中恢复很慢,例如,系统通常在相当长的时间内没有响应?
Answers:
主要原因是磁盘I / O。读写物理磁盘要比从RAM慢得多。当您的计算机从磁盘恢复(休眠)时,它还必须打开组件电源,这可能会导致速度降低。这在很大程度上取决于计算机。SSD从磁盘和RAM的恢复速度几乎相同。某些计算机允许您在再次完全填满滑枕之前四处移动鼠标,从而缩短响应时间。
注意:假设您有8GB的RAM和具有400MB / s吞吐量的SSD。仍然需要8 * 1024MB / 400MB / s = 20.48s。这与从RAM恢复的速度不同。
假设RAM吞吐量为15,000MB / s,则恢复时间为0.55秒。
Reading and writing to a physical disk is much slower than from RAM.
是的,但是读取比写入快,那么为什么读取HDD比写入要花这么长时间?
这是一个权衡。我们是否需要将休眠状态下的所有内容从磁盘一次全部拉回RAM,或者一次仅一次拉回休眠状态?
我们都知道,从旋转的磁盘读取扇区所需的时间几乎与将该扇区写入同一旋转的磁盘所需的时间相同-搜索+旋转时间。因此,我们可能希望将信息从RAM写入磁盘(在休眠状态下)与从磁盘读取相同的RAM(从休眠状态恢复)所需的时间大致相同。但是由于需求分页,这种情况不会发生。
如果操作系统一次投入所有操作,则从休眠状态恢复将需要数十秒,但在此之后,其作用将与您从未休眠过一样。
操作系统程序员通常选择按需分页。换句话说,根据需要,操作系统一次只从磁盘中提取一点点。这样做的好处是,从休眠状态恢复后,开始响应键盘和鼠标单击所需的时间要少得多。另一方面,当您在休眠后第一次使用某些东西时,操作系统终于可以加载它时,会有一个很小但明显的延迟。即使“第一次”使用某些东西在休眠后几分钟后,也会发生这种情况。因此,从休眠模式恢复后(即,看到的屏幕看上去与休眠之前的屏幕大致相同)之后,使用计算机可能会出现一段时间的呆滞。
正如Synetech所指出的那样,还涉及到一些人类心理:由于屏幕在休眠开始时立即关闭,因此好像它可以快速关闭。用户可以立即继续进行您想做的其他事情。但是从休眠状态恢复后,用户正在尝试执行某项操作,而小的延迟却很烦人,因为它们阻碍了用户正在尝试执行的操作。
我知道你的意思。从休眠状态恢复后,HDD LED确实确实闪烁了很长时间。
对于由于启动硬件(和驱动程序加速?)和碎片引起的延迟,已经给出了一些合理的解释(您会注意到,刚出厂的系统通常会休眠并快速恢复,而使用了一段时间的系统会这样做的速度要慢得多)。关于此行为,还有更多的解释。
休眠时,Windows将RAM刷新到驱动器。尽管读取RAM和写入磁盘的速度很高(即使在大的空驱动器上有碎片整理的休眠文件),写入数GB的数据仍需要花费相当长的时间(您会注意到,休眠和恢复具有少量RAM的系统的过程)速度很快)。屏幕快速关闭,但是驱动器(以及主板,风扇等)都保持运行一段时间,直到将RAM刷新到磁盘为止。(确保在完成并完全关闭驱动器之前,不要将带有HDD的笔记本电脑丢到身边)。
您可以进行一些实验测试,以测量从单击“ 休眠”到关闭系统电源所花费的时间,以及从看到“正在恢复Windows”屏幕到HDD LED停止闪烁所花费的时间。它们可能近似相等。(Windows确实尝试通过先写入然后将内核和填充内容读取到休眠文件中来使其看起来非常快速地从休眠中恢复,以便Windows可以立即备份并运行,然后继续在其余部分中加载背景,并根据需要将其恢复,直到您将其全部恢复为止。由于登录屏幕显示得非常快,因此您可以看到此行为的实际执行情况。)
为什么然后看来恢复需要更长的时间。有两种解释。
这是心理上的。正如Dan所指出的,由于在休眠状态时屏幕会立即关闭,因此在您看到整个恢复过程(打开屏幕和HDD LED闪烁)的同时,它似乎很快关闭了。
正在传呼。由于大多数人希望避免退出程序而使用休眠而不是关闭程序,因此他们可以在中断的地方继续工作,这意味着Windows恢复时,已经有很多程序在运行并且已经在消耗内存。因为自从上一次Windows的内存管理器在系统上检查以来已经过去了很长时间,所以它可能最终会进行大量的内存交换,因为从其角度来看,某些程序处于休眠状态一段时间,而另一些程序则处于休眠状态。变得活跃。当然,这种交换需要一段时间,并且会使驱动器损坏一段时间。
最终结果可能是硬件激活,分页,心理和碎片之间因素和相互作用的组合。
如果您愿意,可以通过执行一些简单的测试(例如在Windows休眠并恢复以查看是否所有这些情况时使用Process Monitor观察驱动器/文件的活动)来确定(至少在系统上)瓶颈是什么。抖动是由于访问hiberfil.sys
或引起的pagefile.sys
。