Mon ordinateur met très longtemps à s’éteindre.
Comment puis-je identifier le coupable? Je ne veux pas attendre quelques minutes que mon ordinateur s'éteigne ...
Existe-t-il un programme que je peux utiliser pour suivre le temps nécessaire à l’arrêt?
Windows fournit compteurs de performance ainsi que suivi des événements , ce qui permet aux applications d'effectuer une analyse des performances afin de pouvoir identifier la cause des problèmes de performances. toolkit exceptionnel: Le Windows Performance Toolkit disponible dans le Windows SDK .
Dans cette boîte à outils, vous trouverez xbootmgr.exe
, destiné à Analyse des performances de la transition Windows activée/désactivée .
Bien que le document lié ci-dessus entre dans tous les détails pour chaque transition marche/arrêt, voici l'idée générale de suivre et d'analyser la transition d'arrêt à l'aide de xbootmgr
et de l'interface graphique xperf:
Téléchargez le SDK Windows, puis installez Windows Performance Toolkit à l'aide de celui-ci.
Ouvrez une invite de commande en tant qu'administrateur, puis exécutez:
cd %ProgramFiles%\Microsoft Windows Performance Toolkit
Si vous souhaitez obtenir de l'aide ultérieurement, vous pouvez saisir xbootmgr -help
ainsi que xperf /?
.
Faites une trace de redémarrage comme ceci:
xbootmgr -trace shutdown -traceFlags BASE+DIAG+LATENCY -noPrepReboot
Après le démarrage, une trace sera générée dans les deux minutes.
La trace a été enregistrée dans %ProgramFiles%\Microsoft Windows Performance Toolkit
, vous pouvez la faire glisser sur xperf.exe
et elle sera ouverte dans une interface graphique.
Vous verrez une interface graphique avec différents graphiques, la flèche à gauche vous permet d’ajouter ou de supprimer des graphiques.
Regardez les graphiques et voyez si vous pouvez identifier quelque chose qui sort de l'ordinaire, vous pouvez sélectionner un intervalle et zoomer dessus si vous le souhaitez. Faites un clic droit et dézoomez quand vous voulez voir le tout.
Pour chaque graphique, vous pouvez cliquer avec le bouton droit de la souris pour obtenir des tableaux récapitulatifs pour l'intervalle actuellement sélectionné .
Dans ces tableaux, effectuez un tri en fonction du poids ou du temps afin de déterminer les dépenses les plus importantes. Veuillez noter que vous pouvez faire glisser les colonnes, ainsi, par exemple, le tableau d’E/S vous permet de vérifier le processus utilisant le plus élevé ainsi que le chemin le plus élevé.
Le diviseur (une colonne d'en-tête jaune) fait en sorte que les colonnes à droite de celui-ci affichent le total pour les colonnes à gauche. Ainsi, si vous avez d’abord le chemin, puis le processus, vous pouvez ouvrir l’arborescence d’un fichier pour voir quels processus l’ont accédé, puis vous obtenez les totaux pour cette combinaison processus/fichier.
Vous pouvez trouver plus d’informations sur le fonctionnement des graphiques et des tableaux ici .
Si vous avez besoin d'une manière ou d'une autre de descendre pour examiner les traces de la pile; Faites une autre trace de démarrage et ajoutez le paramètre -stackWalk profile
, définissez la variable _NT_SYMBOL_PATH , cliquez avec le bouton droit de la souris sur un graphique et activez l'option "Charger les symboles". Cela vous permettra de vérifier quelles fonctions il appelle réellement. En général, vous n'en aurez pas besoin pour un arrêt; mais cela peut permettre par exemple de découvrir que votre pare-feu interfère avec votre débogueur en tant que programmeur. Assez chouette ...
Bonne chance, j'espère que vous pourrez trouver le coupable. Si ce n'est pas le cas, laissez tomber la trace et nous examinerons pour vous ...
Veuillez noter que les DPC sont appels de procédure différée et que les interruptions sont interruptions logicielles , les deux sont liés aux pilotes/matériel.
Mes arrêts prenaient beaucoup de temps. Ce qui suit est mon exemple avec réponse de Tom .
Le premier graphique montre le problème, Disque I/O :
Mon arrêt prend plus d’une minute et c’est l’ensemble des E/S sur disque dur.
Le graphique suivant, Utilisation du disque , indique qu'un lecteur atteint presque son maximum d'utilisation à 100%:
Le graphique final montre Utilisation du disque par processus :
En filtrant, je réalise que tout cela est causé par WinInit.exe
:
En cliquant avec le bouton droit de la souris sur l'un des graphiques de disque dur et en sélectionnant Tableau récapitulatif , je peux obtenir les détails des fichiers accédés par quel processus:
J'ai passé 56,4 secondes à mon arrêt en écrivant 6,7 Go en WinInit
à C:\hiberfil.sys
.
Mais la question est pourquoi Windows écrit-il dans mon fichier de veille prolongée sur fermer?
Puis je me suis souvenu d'une option que j'avais activée pour effacer ce fichier de pagination à l'arrêt:
J'ai donc désactivé l'option et relancé xbootmgr
. Maintenant, mon arrêt est de 22 secondes:
Désormais, 9s
of the 22s
shutdown est dépensé par System
en écrivant dans un fichier unknown
. Cela pourrait être digne d'une enquête plus approfondie.
Mais pour l'instant, j'ai résolu mon arrêt minute et demie.
je suis allé plus loin et j'ai résolu mon arrêt lent de 22 secondes. De t = 12s
à t = 21s
indiquait 100% Utilisation du disque , mais zéro Disque I/O . C'était déroutant.
Jusqu'à ce que, pendant un arrêt, j'entende le son familier de l'un de mes disques. L'arrêt a été bloqué pendant 9 secondes car Windows tentait d'accéder à un disque qui était allé en veille. Neuf secondes plus tard, le lecteur répond et un instant plus tard, la machine s’éteignit.
Il est ironique que Windows réveille un disque pour lui dire qu'il est temps de s'endormir.
Cela ferait mon arrêt réel de 13,5 secondes. Cela pourrait valoir plus d’investigation. Mais pour l'instant j'ai résolu mon 22 deuxième arrêt.