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

30

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?

wizlog
la source
1
Nous n'avons aucune idée de la façon dont votre système est configuré et de ce qui pourrait fonctionner en arrière
aléatoire
1
OK ... J'ai vu quelqu'un d'autre le demander, puis je l'ai supprimé car je composais une réponse très longue et complète ... (senti un peu désolé pour moi)
wizlog
Vous pouvez toujours le suggérer pour le blog
aléatoire
2
Appuyez sur le bouton d'alimentation et maintenez-le enfoncé pendant plusieurs secondes.
Daniel R Hicks
5
Cette question est valide, je peux y répondre objectivement afin que son problème soit résolu. Il n'y a rien d'ambigu (le problème est que son temps d'arrêt est trop long), vague (il veut accélérer son arrêt), incomplet (les détails ne sont pas nécessaires, bien sûr chaque ordinateur est différent mais cela ne fait pas la technique pour identifier le coupable différemment), trop large (vous pourriez le penser, mais je ne vois pas d'autre question de dépannage de l'arrêt, donc c'est une question vraiment précieuse à poser; je pense que ce serait large s'il veut accélérer d'autres choses ) ou rhétorique (il s'agit de xperf).
Tamara Wijsman

Réponses:

31

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 xbootmgret de l'interface graphique xperf:

  1. Téléchargez le SDK Windows, puis installez Windows Performance Toolkit en l'utilisant.

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

    cd %ProgramFiles%\Microsoft Windows Performance Toolkit

  3. Si vous voulez de l' aide à l'avenir, vous pouvez taper xbootmgr -helpainsi 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, il générera une trace dans les deux minutes.

  6. La trace a été enregistrée dans %ProgramFiles%\Microsoft Windows Performance Toolkit, vous pouvez la faire glisser xperf.exeet 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 / supprimer des graphiques.

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

  9. Pour chaque graphique, vous pouvez cliquer avec le bouton droit pour obtenir des tableaux récapitulatifs pour l'intervalle actuellement sélectionné .

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

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

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

Tamara Wijsman
la source
1
Incroyable réponse utile. Tous les didacticiels sur ETW sont extrêmement utiles; c'est un domaine de Windows sans documentation ni interface graphique à guider.
Ian Boyd
@Tom Wijsman Les liens doivent être mis à jour
Moab
Maintenant, il fait partie du kit d'évaluation et de déploiement de Windows, un lien peut être trouvé, par exemple à msdn.microsoft.com/en-us/windows/hardware/commercialize/test/… ou simplement en recherchant "Windows ADK". Lors de l'installation, il est possible de sélectionner simplement Performance Toolkit.
Andreas Reiff
Maintenant, il fait également partie ..., car il est toujours disponible dans le SDK.
Tamara Wijsman
22

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 :

entrez la description de l'image ici

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:

entrez la description de l'image ici

Le graphique final montre l' utilisation du disque par processus :

entrez la description de l'image ici

En filtrant, je me rends compte que tout est causé par WinInit.exe:

entrez la description de l'image ici

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

entrez la description de l'image ici

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:

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

entrez la description de l'image ici

J'ai donc désactivé l'option et exécuté à xbootmgrnouveau. Maintenant, mon arrêt est de 22 secondes:

entrez la description de l'image ici

Maintenant 9sl' 22sarrêt est passé en Systemécrivant dans un unknownfichier. 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 21smontré 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.

Ian Boyd
la source
1
+1 Heureux que vous l'ayez résolu dans votre cas, et bon message!
Tamara Wijsman
1
Ces réponses méritent un article de blog, vous ne pensez pas? ;)
Ivo Flipse