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

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *