Pourquoi les ordinateurs mettent-ils du temps à revenir d'hibernation?

22

L'hibernation est censée écrire le contenu de la RAM sur le disque, et le retour de l'hibernation est censé remplir la RAM avec le contenu enregistré. Pourquoi le retour de l'hibernation est-il lent, par exemple, le système ne répond généralement pas pendant un certain temps?

enchante
la source
1
Vous devriez essayer un ordinateur qui utilise un disque SSD, tel qu'un MacBook Pro. C'est presque instantané, la plupart du temps.
Stewart
1
capturer une trace d'hibernation / reprise avec xbootmgr et analyser ce qui est lent: msfn.org/board/index.php?showtopic=140247
magicandre1981
J'utilise hibernate sur mon ordinateur portable de travail, mais pour accélérer, je ferme d'abord toutes mes applications (en utilisant un petit utilitaire appelé closeall ntwind.com/software/utilities/close-all.html )
Morgan T.

Réponses:

19

La cause principale est les E / S disque. La lecture et l'écriture sur un disque physique sont beaucoup plus lentes que depuis la RAM. Lorsque votre ordinateur sort du disque (hibernation), il doit également mettre sous tension les composants, ce qui peut provoquer un certain ralentissement. Cela dépend fortement de l'ordinateur. Un SSD aura presque la même vitesse de reprise depuis le disque que depuis la RAM. Certains ordinateurs vous permettent de déplacer la souris avant que le bélier ne soit complètement rempli à nouveau, ce qui entraîne de faibles temps de réponse.

Remarque: Supposons que vous disposez de 8 Go de RAM et d'un SSD avec un débit de 400 Mo / s. Il faudra toujours 8 * 1024 Mo / 400 Mo / s = 20,48 s. Ce n'est pas la même vitesse que la reprise de la RAM.

En supposant un débit de RAM de 15 000 Mo / s, le temps de reprise est de 0,55 seconde.

Wolfizen
la source
5
Reading and writing to a physical disk is much slower than from RAM. Oui, mais la lecture est plus rapide que l'écriture, alors pourquoi faudrait-il autant de temps pour lire le disque dur que pour l'écrire?
Synetech
1
@Synetech est-ce? Si vous chronométrez juste l'hibernation de frapper l'option à la suppression de l'écran (par opposition à l'arrêt de l'activité du lecteur), le système d'exploitation le supprime probablement tôt, il semble donc qu'il n'a pas calé. Si vous mesurez l'arrêt via le temps d'E / S, il existe plusieurs possibilités. Avec un SDD, je vérifierais si le fichier d'échange est fragmenté car les SSD sont plus rapides lors des écritures aléatoires que des lectures aléatoires. Sinon, je suppose que la désactivation est plus lente en raison de retards dans le redémarrage de certains composants matériels qui ont été arrêtés non pas en raison des performances d'E / S.
Dan Neely
@DanNeely, en fait je sais ce que tu veux dire. J'ai souvent été ennuyé que lorsque je clique sur Hibernation, l'écran s'éteigne rapidement, mais le lecteur lui-même continue de se débattre pendant un certain temps (souvent une minute ou deux de plus). C'est vraiment ennuyeux parce que vous ne pouvez pas simplement ramasser un ordinateur portable et le jeter dans le sac car le disque tourne et le déplacer augmenterait les risques de collision (la veille est meilleure pour un arrêt rapide). Cependant, je sais aussi ce que l'enthousiasme dit; parfois un CV prend du temps (enfin Windows reprend assez vite, mais la LED HDD reste allumée longtemps).
Synetech
@Synetech encore une autre raison de souhaiter que les SSD soient suffisamment bon marché pour être universels.
Dan Neely
3

Alors que la RAM est très rapide, le disque dur est exactement le contraire. Imaginez que vous deviez copier le contenu de votre RAM, qui pourrait être d'environ 16 Go, à partir du disque dur. C'est 4 DVD. Voir?

KamikazeCZ
la source
3

C'est un compromis. Tirons-nous tout ce qui était en RAM avant l'hibernation du disque dans la RAM en une seule fois, ou seulement un petit peu à la fois, selon les besoins?

Nous savons tous que la lecture d'un secteur à partir d'un disque en rotation prend pratiquement le même temps que l'écriture de ce secteur sur le même disque en rotation - le temps de recherche + rotation. Nous pouvons donc nous attendre à ce que l'écriture d'informations de la RAM sur le disque (en veille prolongée) prenne à peu près le même temps que la lecture de cette même RAM à partir du disque (reprise de la mise en veille prolongée). Mais cela ne se produit pas de cette façon, en raison de la pagination de la demande.

Si le système d'exploitation a tout tiré en même temps, la reprise de la mise en veille prolongée prendrait des dizaines de secondes, mais après cela, cela agirait de la même manière que si vous n'aviez jamais hiberné du tout.

Les programmeurs de système d'exploitation choisissent généralement la pagination de la demande à la place. En d'autres termes, le système d'exploitation ne tire que peu à la fois du disque, selon les besoins. Cela a l'avantage que la reprise de la mise en veille prolongée prend beaucoup moins de temps avant de commencer à répondre au clavier et aux clics de souris. D'un autre côté, lorsque vous utilisez quelque chose pour la première fois après l'hibernation, il y a un petit mais notable délai lorsque le système d'exploitation se met enfin à le charger. Cela se produit même lorsque "la première fois" que vous utilisez quelque chose peut se produire plusieurs minutes après la mise en veille prolongée. Ainsi, après avoir repris une mise en veille prolongée (c'est-à-dire après avoir vu un écran qui semble être plus ou moins identique à l'écran juste avant la mise en veille prolongée), travailler avec la machine peut sembler lent pendant un certain temps.

Comme l'a souligné Synetech, il y a un peu de psychologie humaine également impliquée: Parce que l'écran s'éteint tout de suite au début de l'hibernation, il semble qu'il s'éteigne rapidement. Et l'utilisateur peut immédiatement continuer avec tout ce que vous voulez faire. Mais après une reprise de l'hibernation, l'utilisateur essaie de faire quelque chose, et les petits retards sont ennuyeux car ils gênent ce que l'utilisateur essaie de faire.

David Cary
la source
2

Je vois ce que tu veux dire. Il semble en effet que la LED HDD clignote longtemps après la sortie de l'hibernation.

Quelques explications raisonnables ont été données sur les retards dus au démarrage du matériel (et à l'accélération du pilote?) Et à la fragmentation (vous remarquerez qu'un système fraîchement sorti de l'usine va généralement hiberner et reprendre assez rapidement tandis qu'un système qui a été utilisé pendant un certain temps le fera). être beaucoup plus lent à le faire). Il y a quelques explications supplémentaires pour ce comportement.

Lorsque vous hibernez, Windows vide la mémoire RAM du lecteur. Malgré des vitesses élevées pour lire la RAM et écrire sur le disque (même avec un fichier d'hibernation défragmenté sur un gros lecteur vide), il faut encore un certain temps pour écrire plusieurs gigaoctets (vous remarquerez que l'hibernation et la reprise d'un système avec de petites quantités de RAM est farouchement rapide). L'écran s'éteint rapidement, mais le lecteur (et la carte mère, les ventilateurs, etc.) restent tous en marche pendant un certain temps jusqu'à ce qu'il termine de vider la RAM sur le disque. (Assurez-vous de ne pas jeter un ordinateur portable avec un disque dur avant d'avoir terminé et d'éteindre complètement le lecteur).

Vous pouvez effectuer des tests expérimentaux pour mesurer le temps qu'il faut entre cliquer sur Veille prolongée et mettre le système hors tension, et le temps qu'il faut à partir du moment où vous voyez l' écran Reprise de Windows jusqu'à ce que le voyant du disque dur cesse de clignoter. Ils seront probablement à peu près égaux. (Windows essaie de donner l'impression qu'il sort de l'hibernation très rapidement en écrivant puis en lisant le noyau et tout le reste dans le fichier d'hibernation, afin qu'il puisse se remettre en marche immédiatement et continuer à se charger dans le reste du en arrière-plan et au besoin jusqu'à ce que tout soit repris - vous pouvez voir ce comportement en action car l'écran de connexion s'affiche très rapidement.)

Pourquoi alors semble-t-il que la reprise prend plus de temps. Il y a deux explications à cela.

  1. C'est psychologique . Comme Dan l'a souligné, parce que l'écran s'éteint immédiatement lorsque vous hibernez, il semble qu'il s'éteigne rapidement, tandis que vous voyez le processus de reprise complet (écran d'ouverture et LED HDD clignotant).

  2. C'est de la pagination. Étant donné que la plupart des gens utilisent la mise en veille prolongée au lieu de l'arrêt, car ils veulent éviter de quitter les programmes et de manière à pouvoir reprendre là où ils se sont arrêtés, cela signifie que lorsque Windows reprend, il y a un tas de programmes déjà en cours d'exécution et consommant déjà de la mémoire. Parce qu'un temps considérable s'est écoulé depuis la dernière fois que le gestionnaire de mémoire de Windows a vérifié le système, il finira probablement par faire un tas d'échanges de mémoire car, de son point de vue, certains programmes sont en sommeil depuis un certain temps et d'autres l'ont devenir actif. Cet échange prend bien sûr un certain temps et écrase le lecteur pendant un certain temps.

Le résultat final est probablement une combinaison de facteurs et d'interactions entre l'activation matérielle, la pagination, la psychologie et la fragmentation.

Si vous êtes à la hauteur, vous pouvez déterminer définitivement (au moins sur votre système) quel est le goulot d'étranglement en effectuant quelques tests simples tels que l'utilisation de Process Monitor pour observer l'activité du lecteur / fichier pendant que Windows hiberne et reprend pour voir si tout cela la raclée est due à l'accès à hiberfil.sysou pagefile.sys.

Synetech
la source
1
j'aime l'approche psychologique. L'hibernation sur les vieux disques durs ordinaires est mal conçue de manière UX, ou elle n'aurait jamais dû exister.
smonff