Resolver Problemas Consiga ayuda para problemas específicos con sus proyectos, procesos y tecnologías.

Obtenga información de los volcados de memoria con el Registro de Eventos de Windows

Administradores que sufren fallos en Windows Server pueden usar herramientas, como el Registro de Eventos de Windows, para localizar el problema.

Resolver los problemas y bloqueos de Windows Server puede ser uno de los más duros retos a los que se enfrenta un administrador. Cuando el servidor empieza a fallar, las cosas solo pueden ir de mal en peor. Muchas veces suele ser demasiado tarde para tratar de ver la causa del problema en el Monitor de Rendimiento de Microsoft, más conocido como Fermon, o para usar el Administrador de Tareas para cazar el proceso rebelde en el acto. El servidor se cuelga sin dar ninguna pista sobre la causa del problema y lo único que podemos hacer es pulsar el botón de reset para reiniciar el equipo.

¿Le resulta conocido?

¿Y que pasaría si, igual que los aviones tienen su caja negra, pudiésemos revivir los últimos segundos antes de que el servidor se quedase colgado?

En este artículo se describen dos de mis técnicas favoritas para resolver estos problemas, llamadas análisis del volcado del error y Registro de Eventos para Windows (ETW), y conocer la causa que provoca el fallo en el servidor.

Para empezar, doy por hecho que ya ha instalado el depurador de Windows y ha configurado el servidor para obtener un informe de errores, tal como describe este  artículo.

Sesiones de registro de eventos

El secreto es la herramienta de Registro de Eventos que Windows incluye en todas las versiones a partir de Vista y Windows Server 2008. Uno de estos registros se conoce como Circular Kernel Context Logger, o CKCL para abreviar. Consiste en un buffer circular  de 2 MB que registra continuamente las estadísticas de rendimiento del núcleo en la memoria.

Es posible poder acceder a estos datos a través de un volcado de memoria para saber qué ha pasado en los últimos segundos de actividad del núcleo. Extraer los datos del buffer amplía la utilidad del volcado y nos ofrece una imagen clara del servidor en el momento en que se cuelga, incluyendo los segundos anteriores al cuelgue.

Para activar el CKCL es necesario elegir qué núcleos deseamos incluir en el registro. Para ello accederemos a través de Computer Management o Perfmon para mostrar los diferentes informes o Data Collector Sets disponibles, tal como muestra la Figura 1. A continuación buscamos las sesiones de registro de eventos predefinidas, donde se incluye el CKCL.

A continuación es necesario mostrar las propiedades de la sesión de registro CKCL haciendo doble clic o haciendo clic con el botón derecho y seleccionando propiedades. En la pestaña Trace Providers, señalamos la propiedad llamada Keywords (Any) y pulsamos Edit… para elegir qué queremos controlar (procesos, archivos, etc.).

Event Trace Sessions

Figura 1. Sesiones de Registro de Eventos (pulsar para ampliar)

Finalmente, en la pestaña Trace Session, marcamos la casilla Enabled.

Una vez realizados los cambios solo nos queda hacer clic con el botón derecho sobre la sesión de registro CKCL y seleccionar Start As Event Trace Session. Con esto iniciamos el registro de eventos CKCL, que se muestra junto con las demás sesiones de registro ya establecidas, y que se muestran con el estado Running o En Ejecución.

Para automatizar el proceso de activación y arranque del CKCL después de reiniciar puede usarse el siguiente comando, en forma de script, para ejecutar con el Programador de Tareas. Solo tenemos que añadir a las Acciones del Programador de Tareas este script que activa el proceso directamente al arrancar el equipo:

Logman start "Circular Kernel Context Logger" –p "Circular Kernel Session Provider" (process,thread,img,file,driver) -ets

Con esto basta. Todo lo que hace falta ahora es esperar a que surja el siguiente problema. Cuando se produzca el fallo, use la combinación de teclas adecuada (Ctrl Derecho+ScrollLock dos veces) o el mecanismo NMI para forzar al sistema a volcar la memoria manualmente. Cuando el sistema se reinicie podremos usar el depurador de Windows para analizar el volcado de memoria.

Extrayendo datos de rendimiento de los volcados de memoria

Esta “mágica” extensión del depurador que nos permite obtener los datos desde el Registro de Eventos de Windows se llama ¡wmitrace. Hay dos comandos que deberá  aprender:

https://cdn.ttgtmedia.com/rms/misc/083012_perftracing_fig2.png

Figura 2. Lista de sesiones ETW capturadas en un volcado de memoria (pulsar para agrandar)

!wmitrace.strdump

!wmitrace.logsave [logger ID] [save location].etl

El primer comando, !wmitrace.strdump, se usa para mostrar todas las sesiones de Registro de Eventos que estaban activas en el momento del volcado de la memoria. En la lista se muestra el Circular Kernel Context Logger junto con otras sesiones, conteniendo cada una un "logger ID" para distinguirlas del resto. Como se muestra en la figura 2, el comando !wmitrace.strdump refleja que el ID del CKCL es 0x02.

https://cdn.ttgtmedia.com/rms/misc/083012_perftracing_fig3.png

Figura 3. Extracción de datos de rendimiento del volcado de memoria (pulsar para agrandar)

El comando !wmitrace.logsavese usa para extraer los datos de rendimiento de una sesión concreta de registro. En nuestro ejemplo, el comando apropiado para obtener los datos del registro CKCL en un registro de eventos (ETL) sería, tal como se ve en la Figura 3:

!wmitrace.logsave 2 c:\ckcl.etl

Una vez que se extraen los datos podemos utilizar el Analizador de Rendimiento de Windows (WPA) o Xperf para ver los datos. Tal como muestra la Figura 4, WPA muestra algunos problemas en la utilización de disco y de archivos antes del fallo:

https://cdn.ttgtmedia.com/rms/misc/083012_perftracing_fig4.png

Figura 4. Usando WPA para analizar los datos de rendimiento (pulsar para agrandar)

Resumen

Saber la causa del fallo en un servidor de Windows puede ser una tarea complicada. Pero con las herramientas y técnicas adecuadas, se puede usar ETW y el Depurador de Windows para poder extraer los datos de rendimiento del núcleo del momento del fallo. Una vez extraídos los datos, pueden analizarse con WPA o Xperf, pudiendo conocer cuál es la causa del fallo del servidor. Tenga en cuenta que en este artículo se emplea el registro CKCL, pero pueden crearse las sesiones de registro ETW con WPR o XPerf, cambiando las fuentes de datos y las opciones de registro.

SOBRE EL AUTOR

Bruce Mackenzie-Low, MCSE/MCSA, es consultor master de HP y ofrece soporte de tercer nivel en todo el mundo para productos basados en Microsoft-Windows, incluyendo Clústeres, Rendimiento y Análisis de Informes de Errores. Con más de 25 años de experiencia en Digital, Compaq y HP, Bruce es conocido por su capacidad para resolver problemas complejos. Ha enseñado sus conocimientos de forma intensiva a lo largo de su carrera, contagiando a su audiencia su entusiasmo por la tecnología.

Profundice más

Inicie la conversación

Envíenme notificaciones cuando otros miembros comenten sobre este artículo.

Por favor cree un Nombre de usuario para poder comentar.

- ANUNCIOS POR GOOGLE

Close