web-dev-qa-db-fra.com

Comment identifier le coupable de mon lent arrêt de Windows?

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?

29
wizlog

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:

  1. Téléchargez le SDK Windows, puis installez Windows Performance Toolkit à l'aide de celui-ci.

  2. Ouvrez une invite de commande en tant qu'administrateur, puis exécutez:

    cd %ProgramFiles%\Microsoft Windows Performance Toolkit

  3. Si vous souhaitez obtenir de l'aide ultérieurement, vous pouvez saisir xbootmgr -help ainsi que xperf /?.

  4. Faites une trace de redémarrage comme ceci:

    xbootmgr -trace shutdown -traceFlags BASE+DIAG+LATENCY -noPrepReboot

  5. Après le démarrage, une trace sera générée dans les deux minutes.

  6. 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.

  7. Vous verrez une interface graphique avec différents graphiques, la flèche à gauche vous permet d’ajouter ou de supprimer des graphiques.

  8. 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.

  9. 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é .

  10. 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.

  11. Vous pouvez trouver plus d’informations sur le fonctionnement des graphiques et des tableaux ici .

  12. 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.

31
Tamara Wijsman

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 :

enter image description here

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%:

enter image description here

Le graphique final montre Utilisation du disque par processus :

enter image description here

En filtrant, je réalise que tout cela est causé par WinInit.exe:

enter image description here

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:

enter image description here

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:

  • Démarrer -> Exécuter -> SecPol.msc
    • Paramètres de sécurité, stratégies locales, options de sécurité
    • Arrêt: effacer le fichier d'échange de mémoire virtuelle

enter image description here

J'ai donc désactivé l'option et relancé xbootmgr. Maintenant, mon arrêt est de 22 secondes:

enter image description here

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.

22
Ian Boyd