Почему компьютеры медленно возвращаются из спящего режима?

22

Спящий режим должен записывать содержимое ОЗУ на диск, а возвращение из спящего режима должно заполнять ОЗУ сохраненным содержимым. Почему медленный возврат из спящего режима, например, система в течение некоторого времени вообще очень не отвечает?

enthrops
источник
1
Вы должны попробовать компьютер, который использует твердотельный накопитель (SSD), например MacBook Pro. Это почти мгновенно, большую часть времени.
Стюарт
1
Захватите трассировку гибернации / возобновления с помощью xbootmgr и проанализируйте, что происходит медленно: msfn.org/board/index.php?showtopic=140247
magicandre1981
Я использую hibernate на своем рабочем ноутбуке, но чтобы ускорить его, я сначала закрываю все свои приложения (используя небольшую утилиту под названием closeall ntwind.com/software/utilities/close-all.html )
Morgan T.

Ответы:

19

Основная причина - дисковый ввод-вывод. Чтение и запись на физический диск намного медленнее, чем из оперативной памяти. Когда ваш компьютер возобновляет работу с диска (гибернация), он также должен включать компоненты, что может вызвать некоторое замедление работы. Это сильно зависит от компьютера. SSD будет иметь почти такую ​​же скорость возобновления с диска, как и из RAM. Некоторые компьютеры позволяют перемещать мышь до того, как оперативная память снова будет полностью заполнена, что приводит к снижению времени отклика.

Примечание. Предположим, у вас 8 ГБ ОЗУ и SSD с пропускной способностью 400 МБ / с. Это все равно займет 8 * 1024 МБ / 400 МБ / с = 20,48 с. Это не та же скорость, что и резюме из ОЗУ.

Предполагая пропускную способность ОЗУ 15 000 МБ / с, время возобновления составляет 0,55 секунды.

Wolfizen
источник
5
Reading and writing to a physical disk is much slower than from RAM. Да, но чтение быстрее, чем запись, так почему бы читать HDD намного дольше, чем писать?
Synetech
1
@ Synetech это? Если вы просто синхронизируете режим гибернации от включения опции до отключения экрана (в отличие от остановки работы диска), ОС, вероятно, отключает его раньше, так что похоже, что он не остановился. Если вы измеряете время выключения через IO, есть несколько возможностей. С SDD я бы проверил, фрагментирован ли файл подкачки, потому что SSD быстрее при случайной записи, чем при случайном чтении. В противном случае я бы предположил, что dehibernate медленнее из-за задержек перезапуска некоторых аппаратных компонентов, которые были выключены не из-за производительности ввода-вывода.
Дэн Нили
@DanNeely, на самом деле я знаю, что вы имеете в виду. Меня часто раздражало, что, когда я нажимаю на Hibernate, экран быстро выключается, но сам привод все еще работает в течение довольно долгого времени (часто минуты или двух). Это действительно раздражает, потому что вы не можете просто взять ноутбук и бросить его в сумку, так как диск все еще вращается, и его перемещение увеличит шансы на поломку головы (режим ожидания лучше для быстрого выключения). Тем не менее, я также знаю, что говорит энтропс; иногда возобновление занимает много времени (хорошо, Windows возобновляет работу довольно быстро, но индикатор жесткого диска остается гореть в течение длительного времени).
Synetech
@Synetech - еще одна причина желать, чтобы твердотельные накопители были достаточно дешевыми, чтобы быть универсальными.
Дэн Нили,
3

Хотя ОЗУ очень быстро, жесткий диск с точностью до наоборот. Представьте, что вам нужно скопировать содержимое вашей оперативной памяти, которая может быть около 16 ГБ, с жесткого диска. Это 4 DVD. Видеть?

KamikazeCZ
источник
3

Это компромисс. Извлекаем ли мы все, что было в ОЗУ до перехода в режим гибернации, обратно с диска в ОЗУ одновременно или только по мере необходимости?

Все мы знаем, что чтение сектора с вращающегося диска занимает практически столько же времени, сколько и запись этого сектора на тот же вращающийся диск - время поиска + вращения. Таким образом, можно ожидать, что запись информации из ОЗУ на диск (в спящем режиме) займет примерно то же время, что и чтение той же самой ОЗУ с диска (возобновление из спящего режима). Но этого не происходит из-за пейджинга спроса.

Если операционная система загрузит все сразу, то выход из спящего режима займет десятки секунд, но после этого он будет действовать так же, как если бы вы вообще никогда не спали.

Программисты ОС обычно выбирают пейджинг по требованию . Другими словами, ОС тянет с диска только немного по мере необходимости. Преимущество этого в том, что для возврата из спящего режима требуется гораздо меньше времени, прежде чем он начнет реагировать на нажатия клавиш клавиатуры и мыши. С другой стороны, когда вы впервые используете что-то после спящего режима, есть небольшая, но заметная задержка, когда ОС наконец-то доходит до загрузки. Это происходит даже тогда, когда «первый раз» вы используете что-то, может быть через несколько минут после спящего режима. Таким образом, после выхода из режима гибернации (т. Е. После того, как вы видите экран, который кажется более или менее идентичным экрану непосредственно перед режимом гибернации), работа с машиной может на некоторое время показаться вялой.

Как указала Synetech, здесь задействована и человеческая психология: поскольку в начале спящего режима экран выключается сразу же, кажется, что он быстро выключается. И пользователь может немедленно продолжить все, что вы хотели сделать. Но после выхода из спящего режима пользователь пытается что-то сделать, и небольшие задержки раздражают, потому что мешают тому, что пользователь пытается сделать.

Дэвид Кэри
источник
2

Я знаю, что Вы имеете ввиду. Действительно, кажется, что светодиод HDD долго мигает после выхода из спящего режима.

Было дано несколько разумных объяснений относительно задержек из-за запуска оборудования (и ускорения драйверов?) И фрагментации (вы заметите, что новая система с завода обычно переходит в спящий режим и возобновляет работу довольно быстро, в то время как система, которая использовалась в течение некоторого времени, будет быть намного медленнее, чтобы сделать это). Есть несколько дополнительных объяснений этого поведения.

Когда вы переходите в спящий режим, Windows сбрасывает ОЗУ на диск. Несмотря на высокую скорость чтения ОЗУ и записи на диск (даже при дефрагментированном файле гибернации на большом пустом диске), для записи нескольких гигабайт все равно требуется много времени (вы заметите, что система находится в спящем режиме и возобновляет работу системы с небольшими объемами ОЗУ). очень быстро). Экран быстро отключается, но накопитель (и материнская плата, вентиляторы и т. Д.) Некоторое время остаются включенными, пока не завершится сброс оперативной памяти на диск. (Следите за тем, чтобы ноутбук с жестким диском не швырялся, пока он не закончит работу и не выключит диск полностью).

Вы можете провести несколько экспериментальных тестов, чтобы измерить время, которое требуется от нажатия кнопки гибернации до выключения системы, и времени, которое требуется с момента появления экрана « Возобновление Windows» до тех пор, пока индикатор жесткого диска не перестанет мигать. Скорее всего, они будут примерно равны. (Windows пытается создать впечатление, что она очень быстро восстанавливается из режима гибернации, сначала записывая, а затем считывая ядро ​​и прочее в файл гибернации, чтобы он мог сразу же вернуться к работе и продолжить загрузку, а затем продолжить загрузку в остальных в фоновом режиме и по мере необходимости, пока все не будет возобновлено - вы можете увидеть это поведение в действии, потому что экран входа в систему отображается очень быстро.)

Почему тогда кажется, что возобновление занимает больше времени. Есть два объяснения этому.

  1. Это психологическое . Как указал Дэн, поскольку при выключении экрана экран сразу выключается, кажется, что он быстро выключается, а вы видите весь процесс возобновления (начальный экран и мигающий светодиод жесткого диска).

  2. Это пейджинг. Поскольку большинство людей используют режим гибернации вместо завершения работы, потому что они хотят избежать выхода из программ и так, чтобы они могли выбрать, где они остановились, это означает, что, когда Windows возобновляет работу, существует множество программ, которые уже работают и уже потребляют память. Поскольку с момента последней проверки диспетчера памяти Windows в системе прошло значительное количество времени, он, вероятно, в конечном итоге выполнит кучу перестановок памяти, поскольку, с его точки зрения, некоторые программы некоторое время бездействовали, а другие стать активным. Этот обмен, конечно же, занимает некоторое время и некоторое время прерывает работу накопителя.

Конечным результатом, вероятно, является сочетание факторов и взаимодействий между активацией оборудования, разбиением на страницы, психологией и фрагментацией.

Если вы готовы, вы можете окончательно выяснить (по крайней мере, в вашей системе), что является узким местом, выполнив несколько простых тестов, таких как использование Process Monitor для наблюдения за работой диска / файла, в то время как Windows находится в спящем режиме и возобновляет работу, чтобы увидеть, все ли молотить из-за доступа к hiberfil.sysили pagefile.sys.

Synetech
источник
1
Мне нравится психологический подход. Спящий режим на старых старых жестких дисках плохо спроектирован UX или никогда не должен был существовать.
Smonff