Mon ordinateur met très longtemps à s'éteindre.
Comment 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?
Mon ordinateur met très longtemps à s'éteindre.
Comment 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?
Réponses:
Windows fournit des compteurs de performances ainsi que le suivi des événements qui permet aux applications d'effectuer une analyse des performances afin que l'on puisse identifier la cause des problèmes de performances, parmi ceux qui existent, il existe une boîte à outils exceptionnelle: la boîte à outils de performances Windows disponible dans le SDK Windows .
Dans cette boîte à outils, vous trouverez xbootmgr.exe
, destiné à l' analyse de performance de transition Windows On / Off .
Bien que le document lié ci-dessus rentre dans tous les détails de chaque transition marche / arrêt, voici l'idée générale sur le suivi et l'analyse de 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 en l'utilisant.
Ouvrez une invite de commande en tant qu'administrateur, puis exécutez:
cd %ProgramFiles%\Microsoft Windows Performance Toolkit
Si vous voulez de l' aide à l'avenir, vous pouvez taper 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, il générera une trace dans les deux minutes.
La trace a été enregistrée dans %ProgramFiles%\Microsoft Windows Performance Toolkit
, vous pouvez la faire glisser 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 / supprimer des graphiques.
Regardez les graphiques et voyez si vous pouvez identifier quelque chose hors de l'ordinaire, vous pouvez sélectionner un intervalle et zoomer dessus si vous le souhaitez. Faites un clic droit et dézoomez lorsque vous voulez voir le tout.
Pour chaque graphique, vous pouvez cliquer avec le bouton droit pour obtenir des tableaux récapitulatifs pour l'intervalle actuellement sélectionné .
Dans ces tableaux, triez en fonction du poids ou du temps pour savoir à quoi il dépense le plus. Veuillez noter que vous pouvez faire glisser les colonnes, ainsi, par exemple, le tableau d'E / S vous permet de vérifier le processus d'utilisation le plus élevé ainsi que le chemin d'utilisation le plus élevé.
Le séparateur (une colonne d'en-tête jaune) fait en sorte que les colonnes à droite affichent le total des colonnes à gauche. Donc, si vous avez d'abord Path puis Process, vous pouvez ouvrir l'arborescence d'un fichier pour voir quels processus y 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 devez en quelque sorte descendre pour regarder les traces de la pile; faites une autre trace de démarrage et ajoutez le -stackWalk profile
paramètre, définissez le _NT_SYMBOL_PATH et faites un clic droit sur n'importe quel graphique et activez "Charger les symboles". Cela vous permettra de vérifier quelles fonctions il appelle réellement, mais en général vous n'en aurez pas besoin pour un arrêt; mais cela peut permettre des choses comme découvrir que votre pare-feu interfère avec votre débogueur en tant que programmeur. Assez astucieux ...
Bonne chance, j'espère que vous pourrez trouver le coupable. Sinon, laissez tomber la trace et nous allons chercher pour vous ...
Veuillez noter que les DPC sont des appels à procédure différée et que les interruptions sont des interruptions logicielles , les deux étant liées aux pilotes / matériel.
Mes arrêts étaient longs à exécuter. Ce qui suit est mon exemple avec la réponse de Tom .
Le premier graphique montre le problème, E / S disque :
Mon arrêt prend plus d'une minute et ce sont toutes les E / S du disque dur.
Le graphique suivant, Utilisation du disque montre qu'un lecteur est presque au maximum à 100% d'utilisation:
Le graphique final montre l' utilisation du disque par processus :
En filtrant, je me rends compte que tout est causé par WinInit.exe
:
En cliquant avec le bouton droit sur l'un des graphiques du disque dur et en sélectionnant Tableau récapitulatif , je peux obtenir les détails des fichiers auxquels le processus a accédé:
56,4 secondes de mon arrêt ont été consacrées à l' WinInit
écriture de 6,7 Go C:\hiberfil.sys
.
Mais la question est de savoir pourquoi Windows écrit dans mon fichier d'hibernation à l' arrêt ?
Ensuite, je me suis souvenu d'une option que j'avais activée pour effacer ce fichier d'échange à l'arrêt:
J'ai donc désactivé l'option et exécuté à xbootmgr
nouveau. Maintenant, mon arrêt est de 22 secondes:
Maintenant 9s
l' 22s
arrêt est passé en System
écrivant dans un unknown
fichier. Cela pourrait mériter une enquête plus approfondie.
Mais pour l'instant, j'ai résolu mon arrêt d'une minute et demie.
je suis allé plus loin et résolu mon arrêt lent de 22s. De t = 12s
à t = a 21s
montré 100% d' utilisation du disque , mais aucune E / S disque . C'était déroutant.
Jusqu'à ce que pendant un arrêt j'entende le son familier d'un de mes disques qui tourne. L'arrêt a été bloqué pendant 9 secondes car Windows tentait d'accéder à un disque en veille. Neuf secondes plus tard, le lecteur répond, et un instant plus tard, la machine s'est éteinte.
Ironique, Windows réveille un disque pour lui dire qu'il est temps de dormir.
Cela ferait mon arrêt réel 13,5 secondes. Cela pourrait mériter une enquête plus approfondie. Mais pour l'instant, j'ai résolu mon arrêt de 22 secondes.