¿Cómo puedo identificar al culpable de mi lento cierre de Windows?

30

Mi computadora está tardando mucho en apagarse.

¿Cómo puedo identificar al culpable? No quiero esperar minutos para que mi computadora se apague ...

¿Hay algún programa que pueda usar para rastrear cuánto tiempo lleva apagarse?

wizlog
fuente
1
No tenemos idea de cómo está configurado su sistema y qué podría estar ejecutándose en segundo plano
azar
1
OK ... vi que alguien más lo preguntó, luego lo borré cuando estaba componiendo una respuesta muy larga y completa ... (sentí un poco de pena por mí)
wizlog
Siempre puede sugerirlo para el blog
azar
2
Mantenga presionado el botón de encendido durante varios segundos.
Daniel R Hicks
55
Esta pregunta es válida, puedo responder objetivamente para que su problema se resuelva. No hay nada ambiguo (el problema es que su tiempo de apagado tarda demasiado), vago (quiere acelerar su apagado), incompleto (los detalles no son necesarios, por supuesto, cada computadora es diferente, pero eso no hace que la técnica para identificar al culpable de manera diferente), demasiado amplio (puede que pienses así, pero no veo ninguna otra pregunta para solucionar el cierre, por lo que esta es una pregunta realmente valiosa ; creo que sería amplio si quiere acelerar otras cosas) ) o retórica (implica xperf).
Tamara Wijsman

Respuestas:

31

Windows proporciona contadores de rendimiento , así como el seguimiento de eventos, que permite a las aplicaciones realizar análisis de rendimiento para que se pueda determinar la causa de los problemas de rendimiento, entre los que existen hay un kit de herramientas excepcional: el kit de herramientas de rendimiento de Windows disponible en el SDK de Windows .

En este kit de herramientas encontrará xbootmgr.exe, destinado al análisis de rendimiento de transición de encendido / apagado de Windows .

Aunque el documento vinculado anterior entra en todos los detalles para cada transición de encendido / apagado, aquí está la idea general sobre el rastreo y el análisis de la transición de apagado utilizando xbootmgry la GUI xperf:

  1. Descargue el SDK de Windows, luego instale Windows Performance Toolkit usándolo.

  2. Abra un símbolo del sistema como administrador, luego ejecute:

    cd %ProgramFiles%\Microsoft Windows Performance Toolkit

  3. Si desea ayuda en el futuro, puede escribir xbootmgr -helptambién xperf /?.

  4. Haga un seguimiento de reinicio como este:

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

  5. Después del arranque, generará una traza en dos minutos.

  6. La traza se ha guardado %ProgramFiles%\Microsoft Windows Performance Toolkit, puede arrastrarla xperf.exey se abrirá en una GUI.

  7. Verá una GUI con diferentes gráficos, la flecha en el lado izquierdo le permite agregar / eliminar gráficos.

  8. Mire los gráficos y vea si puede identificar algo fuera de lo común, puede seleccionar un intervalo y acercarlo si lo desea. Haga clic derecho y desactive cuando quiera ver el conjunto.

  9. Para cada gráfico, puede hacer clic con el botón derecho para obtener tablas de resumen para el intervalo seleccionado actualmente .

  10. En estas tablas, ordene por peso o por tiempo para determinar en qué está gastando más. Tenga en cuenta que puede arrastrar alrededor de las columnas, por lo que, por ejemplo, la tabla de E / S le permite verificar el proceso de uso más alto, así como la ruta de uso más alta.

    El divisor (una columna de encabezado amarillo) hace que las columnas a la derecha muestren el total de las columnas a la izquierda. Entonces, si tiene Path primero y luego Process, puede abrir el árbol de un archivo para ver qué procesos han accedido a él y luego obtener los totales para esa combinación de proceso / archivo.

  11. Puede encontrar más información sobre cómo funcionan los gráficos y las tablas aquí .

  12. Si de alguna manera necesita bajar para mirar los rastros de la pila; haga otro seguimiento de arranque y agregue el -stackWalk profileparámetro, establezca _NT_SYMBOL_PATH y haga clic derecho en cualquier gráfico y habilite "Cargar símbolos". Esto le permitirá verificar qué funciones está llamando realmente, aunque en general no necesitará esto para un apagado; pero puede permitir cosas como descubrir que su firewall está interfiriendo con su depurador como programador. Bastante ingenioso ...

Buena suerte, espero que puedas encontrar al culpable. Si no es así, suelte el rastro y lo buscaremos ...

Tenga en cuenta que los DPC son llamadas de procedimiento diferido y las interrupciones son interrupciones de software , ambas están relacionadas con controladores / hardware.

Tamara Wijsman
fuente
1
Increíble respuesta útil. Cualquier tutorial sobre ETW es extraordinariamente útil; Es un área de Windows sin documentación y sin GUI para guiar.
Ian Boyd
@Tom Wijsman Los enlaces deben actualizarse
Moab
Ahora es parte del Kit de evaluación e implementación de Windows, se puede encontrar un enlace, por ejemplo, en msdn.microsoft.com/en-us/windows/hardware/commercialize/test/… o simplemente buscando "Windows ADK". Durante la instalación, es posible seleccionar el Performance Toolkit.
Andreas Reiff el
Ahora bien, es también parte ..., porque todavía está disponible en el SDK.
Tamara Wijsman
22

Mis paradas estaban tardando mucho en correr. Lo que sigue es mi ejemplo con la respuesta de Tom .

El primer gráfico muestra el problema, E / S de disco :

ingrese la descripción de la imagen aquí

Mi apagado tarda más de un minuto y todo es E / S en el disco duro.

El siguiente gráfico, Disk Utilization, muestra que una unidad está casi al máximo al 100% de uso:

ingrese la descripción de la imagen aquí

El gráfico final muestra la utilización del disco por proceso :

ingrese la descripción de la imagen aquí

Filtrando, me doy cuenta de que todo es causado por WinInit.exe:

ingrese la descripción de la imagen aquí

Al hacer clic con el botón derecho en cualquiera de los gráficos del disco duro y seleccionar Tabla de resumen , puedo obtener los detalles de a qué archivos se accedió mediante qué proceso:

ingrese la descripción de la imagen aquí

Pasé 56.4 segundos de mi apagado WinInitescribiendo 6.7GB en C:\hiberfil.sys.


Pero la pregunta es ¿por qué Windows escribe en mi archivo de hibernación al apagar ?

Luego recordé una opción que había activado para borrar ese archivo de paginación al apagar:

  • Inicio -> Ejecutar -> SecPol.msc
    • Configuración de seguridad, políticas locales, opciones de seguridad
    • Apagado: borrar el archivo de paginación de memoria virtual

ingrese la descripción de la imagen aquí

Así que deshabilité la opción y corro xbootmgrnuevamente. Ahora mi apagado es de 22 segundos:

ingrese la descripción de la imagen aquí

Ahora 9sel 22scierre se gasta Systemescribiendo en algún unknownarchivo. Eso podría ser digno de más investigación.

Pero por ahora he resuelto mi apagado minuto y medio.


Fui más lejos y resolví mi apagado lento de 22 segundos. De t = 12sa t = 21smostró 100% de utilización de disco , pero cero E / S de disco . Fue desconcertante.

Hasta que durante un apagado oí el sonido familiar de uno de mis discos girando. El apagado se detuvo durante 9 segundos porque Windows intentaba acceder a un disco que se había dormido. Nueve segundos después, la unidad responde y, un momento después, la máquina se apaga.

Irónico que Windows despierte un disco para decirle que es hora de irse a dormir.

Eso haría que mi apagado real fuera de 13.5 segundos. Eso podría valer más investigación. Pero por ahora he resuelto mi apagado de 22 segundos.

Ian Boyd
fuente
1
+1 Me alegro de que lo hayas resuelto en tu caso, ¡y buena publicación!
Tamara Wijsman el
1
Estas respuestas merecen una publicación de blog, ¿no crees? ;)
Ivo Flipse el