Los contadores de rendimiento: Procesador

Procesador

Processor(_Total)% Processor Time Counter (Procesador(*)% de tiempo de procesador)

Tipo de contador: Intervalo (% Ocupado)
Descripción: Media de uso global del procesador en el intervalo. Cada intervalo en el que el procesador no ejecuta el hilo IDLE se supone que está ocupado por alguna carga de trabajo real.
Medición: Se toma una muestra del estado del procesador una vez cada periodo del intervalo por una función de medida del sistema. El contador % de tiempo de procesador se computa desde un ratio de muestras comparadas entre su ejecución e IDLE.
(100% – ((Muestras – Idle) / Muestras * 100)
Uso: Indicador del uso global del procesador.
Rendimiento: Indicador para determinar si el procesador es un cuello de botella.
Programación: Tendencia y previsión del uso del procesador.
Que hace: Periodos sostenidos de uso del 100% pueden significar un proceso fuera de control.
Alerta de umbral: 80/90%
Medidas relacionadas: Processor(_Total)% Privileged Time (Procesador(*)% de tiempo privilegiado)
Processor(_Total)% User Time (Procesador(*)% de tiempo de usuario)
Processor(n)% Processor Time (Procesador(*)% de tiempo de procesador)
Process(n)% Processor Time (Proceso(*)% de tiempo de procesador)
Thread(n/Index#)% Processor Time (
Subproceso(*)% de tiempo de procesador)

 

SystemProcessor Queue Lenght Counter (SistemaLongitud de la cola del procesador)

 

Tipo de contador: Instantáneo
Descripción: Número de subprocesos que se han observado como retrasados en la cola del procesador y que esperan para su programación de ejecución. Se ordenan por prioridad, la mayor prioridad se programa para ejecutarse en cuanto el procesador entra en el subproceso IDLE.
Medición: Se toma una muestra cada periodo de tiempo de un intervalo. La muestra informa el valor último visto en la medida, obtenido por la función de medida del procesador que se ejecuta periódicamente.
Uso: Muchos procesos de programas están dormidos en estados voluntarios de espera. El subconjunto de subprocesos activos establece un límite superior práctico de la longitud de la cola del procesador que puede observarse.
Rendimiento: Indicador secundario para determinar si el procesador es un cuello de botella.
Programación:
Que hace: Una indicación de la limitación de la capacidad del procesador por causa de excesivos retrasos de aplicaciones.
Alerta de umbral: Longitud mayor de 5.
Medidas relacionadas: Thread(parent-processIndex#)Thread State (Subproceso(*)Estado de subproceso)

Los contadores de rendimiento: el sistema

Los contadores disponibles en un equipo que ejecuta Windows Server 2003 son diversos y son utilizados para informar sobre el sistema, las aplicaciones y el rendimiento.

** Hay que tener en cuenta el idioma del sistema operativo. Yo suelo usarlo en inglés y le aplico el MUI en español para los usuarios que no se encuentran cómodos con este idioma. Lo digo por los nombres de contador, intentaremos poner el nombre usado en ambos idiomas pero prima siempre el original en inglés.

Disponibilidad del Sistema

SystemSystem Up Time (SistemaTiempo de actividad del sistema)

Tipo de contador: Tiempo transcurrido
Descripción: Nos muestra el tiempo, en segundos, que el equipo lleva activo desde el último inicio/reinicio.
Medición: Sus valores son acumulados hasta que se reinicia el sistema.
Uso: Indicador primario de la disponibilidad del sistema.
Rendimiento:  
Programación:
Que hace: Informa de la disponibilidad del sistema.
Alerta de umbral:
Medidas relacionadas: Process(n)Elapsed Time (Proceso(*)Tiempo transcurrido)

Process(n)Elapsed Time (Proceso(*)Tiempo transcurrido)

Tipo de contador: Tiempo transcurrido
Descripción: Nos muestra el tiempo, en segundos, que el proceso lleva activo desde el último inicio/reinicio.
Medición: La instancia de proceso sólo existe durante un intervalo en el cual se encontró al proceso en ejecución al final del intervalo. Los valores son acumulados a través de intervalos medidos mientras el proceso se está ejecutando.
Uso: Indicador primario de la disponibilidad de la aplicación. En el caso de servicios del sistema, comparándolo con SystemSystem Up Time (SistemaTiempo de actividad del sistema) nos servirá para determinar si la aplicación ha estado disponible continuamente desde que el equipo se inició/reinició.
Rendimiento:  
Programación:
Que hace: Informa de la disponibilidad del sistema.
Alerta de umbral:
Medidas relacionadas: SystemSystem Up Time (SistemaTiempo de actividad del sistema)

Otras posibles mediciones que nos sirvan para ver la disponibilidad del sistema pueden ser los contadores: TCPConnections Active (TCPv4Conexiones activas) y ServerServer Sessions (ServidorSesiones del servidor), que indican el estado de la conectividad de red. Un sistema que está en ejecución y no puede comunicarse con otros equipos es más que probable que esté inutilizable. En caso de hosting web, habría que separar los contadores de FTP ServiceFTP Service Uptime () y Web ServiceService Uptime ().

Configurar archivos seguimiento con Logman

También podemos usar Logman para generar los archivos de seguimiento de sucesos.

Sintaxis:

Comando de logman

Qué hace

create trace <nombre> Crea una colección de consultas o de registro de contador o de sesión de seguimiento.
update <nombre> Actualiza una colección existente modificando los parámetros.
delete <nombre> Elimina una colección existente.
query <nombre> Lista las colecciones definidas y su estado sin el <nombre> con él mostrará las propiedades de la colección especificada. Si es en equipos remotos añadiremos la opción –s.
query providers <proveedor> Mostrará en pantalla una lista de los parámetros que pueden establecerse para el proveedor especificado, sus valores y descripciones de lo que habilitan. Esto depende del proveedor.
start <nombre> Inicia una sesión manualmente.
stop <nombre> Detiene una sesión manualmente.

Las colecciones creadas con Logman tienen las mismas propiedades de configuración que las creadas con el elemento de Alertas y registros de rendimiento, y desde el podemos ver cualquier colección que hayamos creado con Logman. Asimismo, si usamos el parámetro –query con Logman para ver una lista de colecciones en el equipo, también veremos los creados desde Alertas y registros de rendimiento.

El conmutador –ets se usa para establecer una sesión de seguimiento de sucesos interactiva. Sin él, Logman asume que la colección es programada. Cuando usamos –ets, Logman no verá ninguna configuración de sesión previamente guardada. Los parámetros se le pasan directamente a la sesión sin guardarse o programarse. Con el conmutador –ets podemos crear múltiples sesiones de seguimiento de sucesos por ventana de consola.

Un ejemplo de secuencia de comandos:

logman create trace «miseguimiento» –pf deIIS.txt –bs 64 –o miseguimiento.etl
logman start «miseguimiento» –ets
logman stop «miseguimiento» –ets

La sesión iniciada con el segundo comando NO es la única creada por el primero. El segundo comando iniciará la sesión miseguimiento con la configuración predeterminada ya que se ha especificado –ets sin otros argumentos. Sin embargo, este mismo comando no borrara la configuración guardada por el primer comando.

Por contra, si no se especifica –ets:

logman create trace «miseguimiento» –pf deIIS.txt –bs 64 –o miseguimiento.etl
logman start «miseguimiento»
logman stop «miseguimiento»

El segundo y tercer comando recuperan la configuración de la sesión guardada, inician y paran la sesión. Si observamos la secuencia ésta es como una sesión interactiva pero sin –ets, los comandos pasan por el servicio de programación, incluido su inicio/detención.

Proveedores

El subcomando –query providers nos permite determinar desde qué proveedores de seguimiento podemos reunir datos de seguimiento.

logmanqueryproviders 

*Por supuesto si la aplicación o servicio asociado al proveedor no está activa en el equipo, el proveedor no está habilitado para recoger los sucesos correspondientes.

Algunos proveedores disponen de opciones adicionales que podemos seleccionar entre los sucesos que estos proveedores pueden seguir.

Parámetros de Logman para el seguimiento:

Parámetro

Sintaxis

Función

Observaciones

Activar proveedor(es) de seguimiento -p {GUID} [(flags[,flags…])] Level | Proveedores a utilizar en la sesión. Con –pf archivo para usar los de un archivo de configuración.
Tamaño búfer -bf valor Tamaño en KB del búfer de la sesión. En caso de ocurrir sucesos más rápido que su guardado en disco y para evitar su pérdida, un tamaño grande de búfer será de gran ayuda.
Número de búferes nb min max Cantidad mínima/máxima de búferes para la sesión. El mínimo predeterminado es el número de procesadores más 2 y como máximo 25.
Establecer opciones de modo de seguimiento -mode [modo[modo…]] El modo puede ser globalsequence, localsequence o pagedmemory. La opción pagedmemory utiliza búferes de memoria paginable.
Resolución del reloj -ct {system | perf | ciclo} perf y ciclo usan 100 ns de temporizador contra un ms del reloj del sistema. ciclo usa menos tiempo de proceso.
perf proporciona una resolución de temporizador más exacto.
Creación e inicio de sesión de seguimiento -ets Iniciar una sesión usando los parámetros definidos en el símbolo del sistema para esta sesión.  
Equipo -s Equipo Especifica el equipo del que se quieren recoger los contadores. Si no se especifica se toma el equipo local.
Sesión en tiempo real -rt Muestra en pantalla los datos en tiempo real. No los guarda en ningún archivo.  
Seguimiento en modo usuario -ul El seguimiento se realiza en modo usuario. En este modo, un proveedor puede habilitarse para la sesión de seguimiento de sucesos.
Nombre archivo de salida -o {Ruta | Se especifica el archivo de salida, si no existe, se crea. Es obligatorio. Los archivos son en formato binario con la extensión *.etl.
Nombrado archivos – v {NNNNNN | MMDDHHMM} Genera archivos con nombres únicos sea numerándolos consecutivamente o añadiendo la hora y la fecha al nombre.  
Vaciado de búferes -ft [[HH]:MM:]SS Los búferes se vacían después del tiempo especificado.  
Límite tamaño archivo -max valor Tamaño máximo del archivo o BD en MB. El registro finaliza al alcanzar el tamaño.
LoggerName ln LoggerName Un nombre definido de usuario para la sesión. Predeterminadamente este nombre es el de la colección.
Añadir -a Añade los datos de salida a un archivo existente.  
Comienzo sesión -b M/D/YYYY H:MM:SS [{AM | PM}] Inicia la sesión en la fecha y hora designada.  
Fin de sesión -e M/D/YYYY H:MM:SS [{AM | PM}] Finaliza la sesión en la fecha y hora designada. Con –r se establece la duración de sesión.
duración -rf [[HH:]MM:]SS Finaliza la sesión pasado el tiempo especificado. Con –e se establece la fecha y hora de finalización.
Repetir -r Repetición cada día a la misma hora. El periodo de tiempo se basa en alguna de las opciones –b con –rf, o –b con –e. uso conjuntamente con las opciones –cnf, –v y –rc.
Inicio y detención de colección -m [start] [stop] Inicio y detención de la sesión interactiva manualmente.  
Usuario y contraseña -u usuario contraseña Se especifica usuario y contraseña para acceso a equipo remoto.  

Marcas de hora de suceso

Si las entradas de sucesos aparecen como fuera de hora, podemos necesitar usar un reloj de alta resolución. Algunas veces, si usamos la hora del sistema como reloj, la resolución (10ms) puede no ajustarse lo suficiente para ciertas secuencias de sucesos. Cuando un conjunto de sucesos muestran el mismo valor de marca de hora, el orden en que aparecen en el visor de sucesos no garantiza que sea en el mismo orden en que sucedieron. Si observamos que algo de esto está pasando, usaremos perf –que tiene una resolución más ajustada (100ns). Con Logman, el parámetro –ct perf obliga al uso del reloj perf.

Comprobación del límite de tamaño del archivo.

Si especificamos un límite de tamaño de archivo con la opción –max, el sistema de archivos en el que queremos crear el archivo de seguimiento lo evalúa antes de iniciar la sesión para ver si existe el espacio suficiente para ejecutar adecuadamente el seguimiento. Este límite de tamaño sólo se lleva a cabo cuando el archivo se almacena en la unidad del sistema. Si éste tuviera espacio insuficiente, la sesión fallará, apareciendo un error genérico de smlogsvc en el visor de sucesos.

Informes del seguimiento de sucesos.

Con Tracerpt.exe podemos convertir uno o más archivos *.etl al formato *.csv y ver su contenido.

tracerpt archivo.etl –o archivo.csv

Estos archivos podemos abrirlos con Excel y ver, secuencialmente, lo grabado.

Si se usa la opción –report con alguno de los proveedores, windows kernel trace, IIS, spooler o AD, se generan tablas adicionales en el informe que contienen los datos relacionados con un pre-formato. Por ejemplo:

tracerpt archivo.etc archivo2.etl –report archivo.html –f html

Investigación de eventos

En Windows disponemos de la posibilidad de seguimiento de eventos ETW (Event Tracing for Windows). Este seguimiento puede terminar en un informe relacionado a los eventos de rendimiento cuando estos ocurren, eventos como:

  • Cambios de contexto
  • Errores de página
  • Solicitudes E/S de archivo
  • Creación y finalización de procesos
  • Creación y finalización de hilos
  • Solicitudes de conexión, envíos y recepciones TCP.

Además, aplicaciones como IIS o el propio Directorio Activo también están preparados para ofrecernos un diagnóstico sobre el seguimiento de eventos. En IIS por ejemplo, el controlador HTTP, Inetinfo, filtro ISAPI, peticiones CGI e incluso peticiones ASP, que proporcionan eventos de inicio y fin de solicitudes específicas nos permiten seguir el camino seguido por una solicitud GET HTTP individual en diferentes etapas de su proceso por entre dichos componentes.

Seguimiento de eventos no sólo graba cuando ocurren los eventos, sino que también captura información especifica que puede usarse para identificar el propio evento y la aplicación que lo causa. Los eventos se registran en un archivo que podemos consultar. El seguimiento de eventos es una técnica que la podemos utilizar para diagnosticar problemas de rendimiento que no nos son fáciles de resolver mediante otras herramientas ya vistas.

Como gran beneficio tenemos a su gran precisión. Podemos saber exactamente que ha pasado y cuando. Aunque en su contra hay inconvenientes que debemos conocer. Uno de los  inconvenientes es la posibilidad de que se generen cantidades de datos muy grandes y que complican su propio análisis. Otro es que un análisis manual resulta complejo, aunque Windows Server 2003 incluye una herramienta llamada tracerpt.exe que simplifica la cosa. Si deseamos conocer un contador solamente de entre muchos eventos, lo normal sería usar el monitor del sistema, si por el contrario, necesitamos entender con detalle la secuencia de eventos asociados a un problema de rendimiento, entonces usar Seguimiento de eventos, que nos proporcionará una extensa variedad de eventos de sistema y aplicaciones.

TRACERPT

Investigar datos en Windows Server 2003 se compone de recoger y reunirlos usando sesiones de registro que los graben en un archivo. Podemos crear y administrar las sesiones de seguimiento con Log manager. Contamos además con los registros de seguimiento facilitados por Alertas y registros de rendimiento en la consola de Rendimiento que nos ofrece ciertas facilidades interactivas para definir sesiones de seguimiento de eventos, iniciarlas o detenerlas. Aunque estas facilidades interactivas no sean más que un subconjunto de opciones de definición de seguimiento de las que dispone Logman. Logman tiene además la ventaja que puede usarse junto a scripts para automatizar todos los aspectos del registro de seguimiento de eventos. Tracerpt.exe formatea los datos y proporciona varios informes integrados.

En una sesión de seguimiento, nos comunicamos con los proveedores de datos de seguimiento seleccionados que son los responsables de informar siempre que ocurran los eventos. Cuando un evento ocurre, el proveedor devuelve información sobre el mismo evento a la sesión de seguimiento, normalmente el servicio de Alertas y registros de rendimiento y éste a su vez graba una entrada en el archivo de registro.

Los registros de seguimiento se guardan en formato binario y con la extensión *.etl. Podemos usar archivos de seguimiento circular o secuencial. Y como con los registros de contadores podemos establecer su límite de tamaño. Cuando un archivo circular alcanza el límite establecido el registro de eventos sigue, desde el inicio del archivo y reemplazando los datos antiguos, en uno secuencial la sesión de seguimiento finaliza.

Luego, para ver los archivos de una forma aceptable necesitamos una herramienta de análisis como Tracerpt.exe que procesa el archivo de registro de salida y transforma los datos binarios en CSV (separado por comas). Disponemos también de informes usando la opción –report de tracerpt.

Alertas y registros de rendimiento

Cuando abrimos el monitor de rendimiento observamos en el árbol del panel izquierdo la función de Alertas y registros de rendimiento y de ella cuelgan tres componentes: registros de contador, registros de seguimiento y alertas.

registroseguimiento01

Podemos crear registros de seguimiento desde aquí cuando queramos, con capacidades similares a las que hay disponibles para los registros de contador, como:

  • Administrar múltiples sesiones de registro de seguimiento desde una única consola(Aunque podemos tener definidas muchísimas más sesiones, hay un límite de 32 activas simultáneamente).
  • Iniciar y detener manualmente, bajo demanda, automáticamente o programando el horario de cada registro de las sesiones.
  • Detener cada registro según el tiempo transcurrido o del tamaño actual del archivo.
  • Especificar esquemas de nombrado automático e indicar un programa que se ejecutará cuando un registro de seguimiento se detiene.

El proceso del servicio de Alertas y registros de rendimiento Smlogsvc.exe es el responsable de ejecutar las funciones del registro de seguimiento que hayamos definido.

Configurar un registro de rendimiento

  1. Pulsamos en Registros de seguimiento en la consola (ver imagen anterior), en el panel derecho se nos mostrarán, si las hubiesen, las ya definidas. 
  2. Clic derecho sobre el panel, el menú contextual nos muestras dos opciones de creación de nuevos registros:
    registroseguimiento02
  3. Se nos pide un nombre para el registro:
    registroseguimiento03
    y se muestra el cuadro de configuración.
    registroseguimiento04
  4. Elegiremos entre los eventos del proveedor del sistema o de alguno de los proveedores de aplicación disponibles. Clic en el botón de Estado de proveedores para ver aquéllos proveedores específicos que están instalados en el equipo.
    registroseguimiento08
  5. Pasaremos por el resto de pestañas: Archivos de registro, Programación y Avanzadas para establecer las diferentes opciones.
    registroseguimiento05 registroseguimiento06
    registroseguimiento07

Los proveedores de eventos

Los proveedores de eventos son los responsables del envío de información sobre un evento al servicio de alertas y registro de rendimiento en cuanto ocurre. De forma predeterminada, en la pestaña General, la opción Proveedores que no son de sistema está marcada para mantener el registro de seguimiento por encima de un mínimo. Pulsaremos en el botón Agregar para incluir datos desde estos proveedores en el registro de seguimiento. Entre los proveedores de aplicaciones están Active Directory, MMQ, IIS, y la cola de impresión.

Si pulsamos en Sucesos registrados por el proveedor del sistema, se usa un proveedor compilado para eventos del kernel de Windows para monitorizar los procesos, hilos y otras actividades. Marcaremos las casillas que deseamos definir para el seguimiento.

*Creación /eliminación de procesos y/o subprocesos.

*E/S de disco

*TCP/IP de red

*Errores de página

*Detalles de archivo

Antes de conectar el seguimiento de una clase de suceso debemos tener claro el impacto sobre el rendimiento que causará. Si queremos hacer una prueba, con el monitor del sistema podemos seguir algunos contadores que usen sucesos que el proveedor del kernel pueda seguir durante varios minutos, comprobaremos entonces el tamaño de los archivos producidos y el sobreuso consumido por el seguimiento, que será proporcional a los sucesos ocurridos.

SistemaOperaciones de lectura de archivo/s (SystemFile Data Operations/sec)

SistemaOperaciones de control de archivo/s (SystemFile Control Operations/sec)

MemoriaErrores de página/s (MemoryPage faults/sec)

TCPv4Segmentos/s (TCPv4Segments/sec)

Configuración de las propiedades del registro

Las hojas de propiedades nos permiten establecer el seguimiento automatizado. Las opciones de archivo y programación son similares a las disponibles para registro de contadores. La pestaña de archivos de registro se usa para seleccionar el tipo de archivo y las opciones de nombrado automático. En la de programación podremos escoger las opciones de inicio manual o automático, establecer la hora en la que queremos que termine la sesión, determinando una hora o especificando una duración en segundos, minutos, horas, o días; o también indicando que se detenga cuando el archivo de registro alcance su tamaño límite especificado.

Pestaña

Configuración

Notas

General Selección de proveedores

Cuenta y contraseña.

Podemos reunir datos desde el equipo local únicamente. Configura los sucesos del proveedor del sistema.

Podemos usar Ejecutar como (Run As) para proporcionar usuario y contraseña en caso de equipos remotos.

Archivos de registro Tipo de archivo.

Nombrado automático.

Los archivos de seguimiento son archivos binarios con la extensión *.etl. Podemos seleccionar o binarios circulares –cuando llegan al final comienzan de nuevo por el principio del archivo sobrescribiendo los existentes-, o binarios secuenciales. Configuración de ubicación, nombre y tamaño de archivo.

Podemos elegir una secuencia de números a añadir o la hora y la fecha, para identificar al archivo.

Programación Métodos de inicio/detención manual o automáticos.

Horas de inicio/detención automáticos.

Detención automática cuando el archivo alcanza su límite de tamaño.

Proceso cuando el archivo se cierra.

Podemos especificar que se detenga la recogida de datos cuando el archivo esté lleno.

Inicio y detención según la hora del día, o especificar la hora de inicio y su duración.

En casos de recogida de datos continua, iniciar un archivo nuevo en cuanto el archivo se cierra. También podemos iniciar automáticamente la ejecución de un comando al cerrarse el archivo.

Avanzada Tamaño de búfer.

Búferes mínimos y máximos.

Transferencia de datos desde el búfer al archivo de registro.

Aumentar el número de búferes en caso de seguimiento de demasiados sucesos.

El tiempo máximo en segundos, que las entradas de seguimiento se mantienen en memoria sin transferirse al archivo de seguimiento en el disco.

¿Cómo obtienen los datos las herramientas de rendimiento?

Monitor del sistema, alertas y registros de rendimiento, Logman, Relog y Typeperf, todas sacan información de alguna parte: usando librerías dinámicas como intermediarias, las PDH(Performance Data Helper). Cada una de las herramientas citadas colecta contadores usando el interfaz PDH, luego es responsable ella misma de realizar los cálculos de conversión de los datos de los intervalos de contadores y de formatearlos para generar informes y archivos de salida.

Las *dll de rendimiento (Perflib) proporcionan los datos para todas las medidas de los contadores en el monitor del sistema. El sistema operativo provee de un conjunto básico de librerías de rendimiento para monitorizar el comportamiento de los recursos, como la memoria, procesador, discos, adaptadores de red y protocolos. Por supuesto hay muchas otras aplicaciones y servicios dentro de Windows Server 2003 que proporcionan sus propias *dll que instalan contadores y que podemos usar para montorizar sus operaciones. Todas estas librerías instaladas en el equipo están registradas en las sub-claves de Performance bajo la clave HKLMSYSTEMCurrentControlSetServicesnombre_del_servicio.

perfdelsistema

perfWEB

Library Archivo y ruta de la *.dll
Open Punto de entrada para la rutina a llamar cuando se inicie una sesión.
Open Timeout El tiempo que esperará para llamar a la rutina de Open antes de caducar.
Collect Punto de entrada para llamar a cualquier intervalo de muestra para recuperar datos del contador.
Collect Timeout El tiempo de espera antes de caducar la llamada a la rutina Collect.
Close Punto de entrada para la rutina de cierre a llamar para limpieza antes de terminar.

Estos campos se usan por las rutinas PDH para cargar las *.dll, inicializarlas para su uso en la recogida de datos de rendimiento y cerrarlas cuando la sesión termina.

Para ahorrar espacio en el registro, las variables REG_MULTI_SZ de texto grandes que componen nombres y texto explicativo de los contadores de rendimiento se guardan en archivos de cadenas de texto fuera del registro. Estos archivos están mapeados dentro del registro, como si fuesen claves normales para usuarios y aplicaciones. Los archivos son:

  • %windir%system32perfc009.dat
  • %windir%system32perfh009.dat

Al guardarlos separadamente se indica el ID del lenguaje del país: 09 = inglés, 0A=español,…

perfFILES

El proceso de PDH al ser requerido por una aplicación de monitorización de rendimiento sería:

  1. PDH accede a los archivos perfc00A.dat y perfh00A.dat (si el lenguaje es el español) que contiene el texto que define los objetos de rendimiento y los nombres de los contadores instalados en el equipo, junto con sus textos explicativos asociados.
  2. PDH realiza inventario de la clave HKLMSYSTEMCurrentControlSetServicesnombre_del_servicio para determinar que *.dll de Perflib están disponibles en el equipo.
  3. Para cada clave hallada, PDH carga la *.dll Perflib.
  4. Después de la carga de *.dlls, PDH llama a la rutina Open. La rutina devuelve la información que describe los objetos y contadores que la *.dll soporta. La aplicación de monitorización podrá usar esta información para montar un menú de selección de objetos y contadores como el formulario Añadir contadores del monitor del sistema.
    agregarcontadores
  5. En el primer intervalo de muestra, PDH llama a la rutina Collects para reunir los contadores de rendimiento, la aplicación puede realizar llamadas PDH adicionales para formatear estos contadores para mostrarlos por pantalla.
  6. Cuando termina, PDH llama a la rutina Close para todas las Perflibs activas hasta que finalizan su procesamiento con corrección.

El procesamiento PDH oculta la mayoría de detalles de estos pasos en aplicaciones de monitorización, como el monitor del sistema y Log manager. La herramienta Extensible Counter List (exctrlst.exe, incluida en las Windows Support Tools de Windows Server 2003) ilustra el paso 2 del procesamiento. Si la iniciamos desde el símbolo del sistema (escribiendo exctrlst en una cmd) obtenemos:

exctrlst

Es decir, un completo inventario de librerías de rendimiento (DLLS) registradas en el equipo.

* Si una llamada a una función Perflib falla o devuelve error, las rutinas PDH añaden un campo opcional a la sub-clave Disable Performance Counters. Se genera un mensaje de error en el registro de eventos si PDH halla un error. Si se establece un marcador en la sub-clave, las rutinas PDH no intentarán cargar, ni recoger datos desde dicha librería hasta que se resuelva el fallo y se eliminen los marcadores mediante la herramienta Extensible Counter List siempre mejor que editando el registro.

* Aún así, disponemos de entradas en el registro en HKLMSOFTWAREMicrosoftWindowsNTCurrentVersionPerflib que pueden ayudarnos cuando suframos problemas dentro de las *.dll.