¿Por qué las computadoras tardan en regresar de la hibernación?

22

Se supone que la hibernación escribe los contenidos de RAM en el disco, y que al regresar de la hibernación se supone que debe llenar la RAM con los contenidos guardados. ¿Por qué el regreso de la hibernación es lento, por ejemplo, el sistema no responde en general durante bastante tiempo?

cautiva
fuente
1
Debe probar una computadora que use una unidad de estado sólido (SSD), como una MacBook Pro. Es casi instantáneo, la mayoría de las veces.
Stewart
1
Capture un seguimiento de hibernación / reanudación con xbootmgr y analice lo que es lento: msfn.org/board/index.php?showtopic=140247
magicandre1981
Uso hibernate en mi computadora portátil de trabajo, pero para acelerarlo primero cierro todas mis aplicaciones (usando una pequeña utilidad llamada closeall ntwind.com/software/utilities/close-all.html )
Morgan T.

Respuestas:

19

La causa principal es la E / S de disco. Leer y escribir en un disco físico es mucho más lento que desde la RAM. Cuando su computadora se reanuda desde el disco (hibernación), también tiene que encender los componentes, lo que puede causar cierta desaceleración. Esto depende mucho de la computadora. Un SSD tendrá casi la misma velocidad de reanudación desde el disco que desde la RAM. Algunas computadoras le permiten mover el mouse antes de que el carnero se haya vuelto a llenar por completo, lo que genera bajos tiempos de respuesta.

Nota: Suponga que tiene 8 GB de RAM y una SSD con un rendimiento de 400 MB / s. Todavía tomará 8 * 1024MB / 400MB / s = 20.48s. Esta no es la misma velocidad que la reanudación de RAM.

Suponiendo un rendimiento de RAM de 15,000MB / s, el tiempo de reanudación es de 0.55 segundos.

Wolfizen
fuente
55
Reading and writing to a physical disk is much slower than from RAM. Sí, pero leer es más rápido que escribir, entonces ¿por qué tomaría tanto más tiempo leer el HDD que escribirlo?
Synetech
1
@Synetech es? Si solo está cronometrando la hibernación para que no toque la opción en la pantalla en blanco (en lugar de que se detenga la actividad de la unidad), el sistema operativo probablemente lo esté bloqueando temprano, por lo que parece que no se detuvo. Si está midiendo el apagado a través del tiempo de E / S, hay algunas posibilidades. Con un SDD, verificaría si el archivo de página está fragmentado porque los SSD son más rápidos en escrituras aleatorias que en lecturas aleatorias. De lo contrario, especularía que deshibernate es más lento debido a retrasos en el reinicio de algunos componentes de hardware que se cerraron no debido al rendimiento de IO.
Dan Neely
@DanNeely, en realidad sé lo que quieres decir. A menudo me ha molestado que cuando hago clic en Hibernar, la pantalla se apaga rápidamente, pero el disco en sí sigue funcionando durante bastante tiempo (a menudo uno o dos minutos más). Esto es realmente molesto porque no puede simplemente levantar una computadora portátil y tirarla a la bolsa, ya que la unidad todavía gira y se mueve, aumentaría las posibilidades de un choque de cabeza (el modo de espera es mejor para un apagado rápido). Sin embargo, también sé lo que dice entusiasmes; a veces, un currículum toma mucho tiempo (bueno, Windows se reanuda bastante rápido, pero el LED del HDD permanece encendido durante mucho tiempo).
Synetech
@Synetech es otra razón para desear que los SSD sean lo suficientemente baratos como para ser universales.
Dan Neely
3

Si bien la RAM es muy rápida, el disco duro es exactamente lo contrario. Imagine que tiene que copiar el contenido de su RAM, que puede ser de unos 16 GB, del disco duro. Eso es 4 DVDs. ¿Ver?

KamikazeCZ
fuente
3

Es una compensación. ¿Extraemos todo lo que estaba en la RAM antes de la hibernación del disco a la RAM de una vez, o solo un poco a la vez, según sea necesario?

Todos sabemos que leer un sector desde un disco giratorio lleva prácticamente la misma cantidad de tiempo que escribir ese sector en el mismo disco giratorio: el tiempo de búsqueda + rotación. Por lo tanto, podríamos esperar que escribir información desde la RAM en el disco (en hibernación) tomaría aproximadamente el mismo tiempo que leer la misma RAM desde el disco (reanudar desde hibernación). Pero no sucede de esa manera, debido a la paginación de la demanda.

Si el sistema operativo extraía todo a la vez, reanudarlo desde la hibernación llevaría docenas de segundos, pero después de eso actuaría de la misma manera que si nunca hubiera hibernado en absoluto.

Los programadores de SO suelen elegir la paginación de demanda en su lugar. En otras palabras, el sistema operativo extrae solo un poco a la vez del disco, según sea necesario. Eso tiene la ventaja de que reanudar desde hibernar toma mucho menos tiempo antes de que comience a responder al teclado y al mouse. Por otro lado, cuando usa algo por primera vez después de la hibernación, hay un pequeño pero notable retraso cuando el sistema operativo finalmente llega a cargarlo. Eso sucede incluso cuando "la primera vez" que usa algo puede ser varios minutos después de la hibernación. Entonces, después de reanudar desde una hibernación (es decir, después de ver una pantalla que parece ser más o menos idéntica a la pantalla justo antes de la hibernación), trabajar con la máquina puede parecer lento por un tiempo.

Como señaló Synetech, también hay un poco de psicología humana involucrada: debido a que la pantalla se apaga inmediatamente al comienzo de la hibernación, parece que se apaga rápidamente. Y el usuario puede continuar de inmediato con cualquier otra cosa que desee hacer. Pero después de una reanudación de la hibernación, el usuario está tratando de hacer algo, y los pequeños retrasos son molestos porque se interponen en el camino de lo que el usuario está tratando de hacer.

David Cary
fuente
2

Yo sé lo que quieres decir. De hecho, parece que el LED HDD parpadea durante mucho tiempo después de reanudar la hibernación.

Se han dado algunas explicaciones razonables sobre los retrasos debidos al arranque del hardware (y la aceleración del controlador) y la fragmentación (notará que un sistema recién salido de la fábrica generalmente hibernará y se reanudará con bastante rapidez, mientras que uno que se ha utilizado durante algún tiempo lo hará ser mucho más lento para hacerlo) Hay un par de explicaciones más para este comportamiento.

Cuando hiberna, Windows descarga la RAM en la unidad. A pesar de las altas velocidades para leer RAM y escribir en el disco (incluso con un archivo de hibernación desfragmentado en una unidad grande y vacía), todavía lleva bastante tiempo escribir varios gigabytes (notará que hiberna y reanuda un sistema con pequeñas cantidades de RAM es muy rápido) La pantalla se apaga rápidamente, pero la unidad (y la placa base, los ventiladores, etc.) permanecen funcionando durante un tiempo hasta que termina de vaciar la RAM en el disco. (Asegúrese de no tirar una computadora portátil con un HDD hasta después de que haya terminado y apagado por completo la unidad).

Puede hacer algunas pruebas experimentales para medir el tiempo que lleva hacer clic en Hibernar hasta que el sistema se apaga, y el tiempo que lleva desde el momento en que ve la pantalla Reanudar Windows hasta que el LED del HDD deja de parpadear. Probablemente serán aproximadamente iguales. (Windows intenta hacer que parezca que reanuda la hibernación muy rápido escribiendo y luego leyendo el kernel y las cosas en el archivo de hibernación primero, para que pueda volver a funcionar de inmediato y luego continúe cargando el resto en el fondo y según sea necesario hasta que todo se haya reanudado; puede ver este comportamiento en acción porque la pantalla de inicio de sesión se muestra muy rápidamente).

¿Por qué entonces parece que reanudar toma más tiempo? Hay dos explicaciones para esto.

  1. Es psicologico . Como señaló Dan, debido a que la pantalla se apaga de inmediato cuando hiberna, parece que se apaga rápidamente, mientras ve todo el proceso de reanudación (pantalla de apertura y LED de HDD parpadeando).

  2. Es paginación. Dado que la mayoría de las personas usan hibernar en lugar de apagar porque quieren evitar salir de los programas y así poder continuar donde lo dejaron, significa que cuando Windows se reanuda, hay un montón de programas que ya se están ejecutando y que ya consumen memoria. Debido a que ha pasado una cantidad significativa de tiempo desde la última vez que el administrador de memoria de Windows verificó el sistema, es probable que termine intercambiando un montón de memoria ya que, desde su perspectiva, algunos programas han estado inactivos por un tiempo y otros tienen activarse Este intercambio, por supuesto, lleva un tiempo y agita el disco por un tiempo.

El resultado final es probablemente una combinación de factores e interacciones entre activación de hardware, paginación, psicología y fragmentación.

Si está preparado, puede descubrir definitivamente (al menos en su sistema) cuál es el cuello de botella al realizar algunas pruebas simples, como usar Process Monitor para observar la actividad de la unidad / archivo mientras Windows hiberna y reanuda para ver si todo eso la paliza se debe al acceso a hiberfil.syso pagefile.sys.

Synetech
fuente
1
Me gusta el enfoque psicológico. La hibernación en discos duros viejos y simples está mal diseñada en forma de UX, o nunca debería haber existido.
smonff