En este post queremos mostrar los principales rasgos, usos y contadores de la herramienta de Windows Performance Monitor. Esta es una herramienta primordial para identificar problemas de rendimiento en un servidor, ya que nos proporciona información de las principales “constantes vitales” de un servidor.

¿Qué es Performance Monitor?

Performance Monitor o perfmon es una herramienta visual para la recolección y análisis de los contadores de rendimiento (Performance Counters) ya sea en tiempo real o en modo diferido.

¿Qué características tiene Performance Monitor?

  • Interfaz Visual de usuario para administrar contadores de servidor y de aplicaciones. Perfmon no solo trabaja con contadores de servidor (procesador, memoria, red, disco físico etc), también permite utilizar contadores de otros programas como por ejemplo “SQL Server”.
  • Permite la captura de datos del servidor local o de un servidor remoto. Evidentemente para capturar datos en un servidor remoto son necesarios permisos en dicha máquina.
  • Los datos extraídos por performance monitor son exportables a distintos formatos (csv, blg, tsv).
  • Permite realizar análisis de forma manual configurando el monitor con distintos contadores, escalas etc…
  • Bueno para identificar tendencias, gracias a la representación gráfica lineal performance monitor facilita la identificación de periodos de alta actividad, picos, valles, comportamientos periódicos etc…
  • Distingue entre objetos de usuario y de sistema. Como veremos más adelante tanto en los Data Collector Sets (colectores de datos) como en los Reports performance monitor se organiza diferenciando entre objetos predefinidos (sistema) y objetos que creamos nosotros, los usuarios.
  • Reporta informes, si bien no es la característica en la que más destaca realiza informes a partir de los datos recogidos en los Data Collector Sets.
  • Permite conocer online los recursos consumidos, por los procesos, servicios y aplicaciones con Resource Monitor.
  • Admite el uso de templates (plantillas), si bien presenta problemas porque dependen de la versión y el services pack del sistema operativo ya que los archivos xml que generan son distintos.

Es el primer programa a aplicar para la identificación de problemas de rendimiento ya que nos va a orientar por donde puede ir los tiros. Si nosotros identificamos altos niveles de actividad en un período en uno o varios contadores eso nos indica de primera mano si hay problema y en donde (depende de la naturaleza de contador, si es de procesador, disco etc). Si el problema fuera en un servidor de SQL Server a partir de este punto podemos utilizar otras herramientas como SQL Server Profiler para profundizar en que sentencias están originando el problema. El mayor inconveniente es cuando no hay indicadores con picos muy altos y el error se “distribuye” entre varios contadores, otra pega importante es la interpretación de algunos contadores. Hay veces en los que los mismos valores de un contador no indican un problema per se sino que hay tenerlos en cuenta con las circunstancias en la que se han tomado, ejemplo, periodo de tiempo (debería ser significativo), volumen de muestras, número de valores cero, contadores generalistas que incluyen información de varios objetos del mismo tipo, etc.

Resource Monitor

Resource Monitor está organizado en varias pestañas:

  • Overview, pestaña general presenta desplegables de CPU, disco, red y memoria. En la parte derecha se muestran gráficas online de dichos contadores. Cuando seleccionas uno o varios procesos de la sección CPU estos actúan como un filtro en el resto de desplegables.
 Overview Resource Performance Monitor
  • CPU, presenta el mismo esquema que Overview desplegables en la parte central y gráficos online de la actividad de los procesadores. Los desplegables muestran los procesos, servicios, manejadores  y módulos asociados.

CPU Resource Performance Monitor

  • Memoria, como podemos apreciar muestra la cantidad de memoria utilizada por cada proceso así como un resumen de utilización de la memoria física.

Memoria Resource Performance Monitor

  • Disco, a nivel de resumen indica las lecturas, escrituras y total (lecturas + escrituras) de cada proceso y en el segundo desplegable muestra el detalle por cada fichero utilizado en un proceso.

Disk Resource Performance Monitor

  • Red, muestra los procesos que tienen actividad de red, la actividad de la red, conexiones TCP y puertos de escucha.

Network Resource Performance Monitor

Monitoring Tools

Esta es una de las principales funcionalidades ya que permite el análisis de la información recogida.

Performance-Monitor-Monitoring-tools_thumb_0A9213AC

A continuación vamos a ver las opciones más importantes que nos proporciona esta utilidad:

  • Change Graph Type, permite cambiar el tipo de gráfico.

Change-Graph-Type_thumb_75A09138

Existen tres opciones, line (línea, la habitual) histogram (histograma) es un gráfico de barras y report:
 Histogram-Graph_thumb_75A09138 Report-Graph_thumb_75A09138
  • HighLight, resalta el contador activo

HighLight_thumb_75A09138

Comentar sobre la imagen anterior que el monitor tiene un área resumen donde se muestra para el contador seleccionado el último valor, la media, el valor máximo, mínimo y la duración de la muestra.
  • AñadirQuitar Contador. Estas opciones permiten añadir o quitar contadores al monitor
  • Ventana Propiedades de Performance Monitor. Esta pantalla está está formada por cuatro pestañas:

General

Perfmon-Properties-General_thumb_75A09138

  • El check Legend permite visibilizar o invisibilizar la sección inferior de contadores
  • El check Value Bar permite visibilizar o invisibilizar la sección inferior que contiene los indicadores valor medio, máximo, duración etc
  • El check Toolbar permite visibilizar o invisibilizar la barra de herramientas

Source

Esta pestaña permite indicar si se muestra la actividad actual, se carga la información de los logs  o de una base de datos con dicha información. También se establece el intervalo de tiempo que se quiere visualizar con Time Range.

Source-Perfmon_thumb_75A09138

Data

En esta pestaña se añaden y se quitan los contadores y se establecen el color, la escala, el ancho y el estilo de la línea.

Data-Perfmon_thumb_75A09138

Graph

En esta pantalla se configuran opciones como el tipo de gráfico,si se muestran ejes horizontales y verticales, los valores del eje vertical, los tiempos en el eje horizontal y la escala en el eje vertical.

Graph-Performance-Monitor_thumb_238DE3F1

Appearance

Este formulario permite cambiar los colores y fuentes del monitor de análisis.

Appearance-Perfmon_thumb_238DE3F1

Reports en Performance Monitor

Como su nombre indica esta funcionalidad nos permite ver los informes generados por performance monitor a partir de los conjuntos de datos recopilados.

Reports_thumb_238DE3F1

Existen tres modos de visualizar un informe de performance monitor:

Modes-Report-Perfmon_thumb_238DE3F1

  • Reports. Como se puede ver en la imagen de abajo este informe está formado por desplegables que una vez extendidos se dividen en otros desplegables
Modo-Report_thumb_238DE3F1
  • Performance Monitor. Esta vista muestra los contadores visibles de un modo gráfico. La forma de utilizarlo es la comentada en la primera parte de este post.
 Performance Monitor Mode
  • Folder. Lista los archivos de la carpeta donde se almacena el informe tipo “report”, este informe es un archivo HTML

Data Collector Sets

Los data collector sets o conjuntos recopiladores de datos son conjuntos de contadores. Performance Monitor los organiza en recopiladores de usuario, de sistema y eventos de traza.

Data Collector Sets Performance Monitor

A continuación veremos cada uno de los conjuntos pero antes es conveniente distinguir entre contadores (performance counters) y trazas (Event trace data):

Event trace data registra eventos de aplicaciones que proporciona el sistema operativo, estos eventos se utilizan para identificar errores de software, hardware, sobreutilización de recursos etc. El objetivo principal es intentar reducir el tiempo en depurar errores dada la alta combinatoria existente entre programas y hardware.

Eventos:

  • Los eventos no recogen datos periódicamente a diferencia de los performance counters.
  • Los eventos devuelven datos detallados sin seguir un patrón determinado.

Contadores:

  • Están vinculados a un temporizador de sistema.
  • Con ellos se pueden realizar diagnósticos de alto nivel.

Los recopiladores de usuario pueden ser:

  • Performance Counters. Son los contadores de rendimiento típicos.
  • Event trace data. Como hemos indicado más arriba proporcionan información de sucesos que ocurren en programa.
  • System configuration information. Proporcionan información del registro.
  • Performance Counter Alert. Son alertas que se disparan cuando un contador supera un determinado valor umbral. Estas alertas se pueden grabar en el event viewer y reaccionar a ellas lanzando tareas.

Puesto que la cantidad de opciones y formularios es muy alta vamos a centrarnos en crear un data collector set de contadores de rendimiento (performance counter) definidos por el usuario.

Data Collector Sets definidos por el usuario

A continuación vamos a comentar como crear un recopilador (Data Collector Set):

1. Situarse sobre el icono User Defined y elegir la opción New Data Collector Set.

New-Data-Collector-Set_thumb_517B36A9

2. Indicar el nombre, elegir la opción Create manually (Advanced) y pulsar el botón next. La opción Create from a template, crearía un recopilador importando un xml que contiene los contadores pero como comentamos anteriormente presenta el inconveniente de que para importar es necesario que la plantilla proceda de la misma versión y services pack de sistema operativo ya que sino fallará.

New Data Collector Set Performance Monitor

3. Si queremos crear archivos de log para su posterior análisis escogemos la primera opción y señalamos aquellos tipos de datos a recopilar.

Type-Data-Data-Collector-Set_thumb_517B36A9

4. Para performance counter nos pedirá que agreguemos contadores. Pulsar botón Add. Importante en esta pantalla se fija el intervalo de muestreo y las unidades.

aDD-Counter-Performance-Counter4_thumb_517B36A9

5. Añadimos los contadores que queramos seleccionando previamente el servidor local o remoto, el contador y las instancias de ese contador. En la parte inferior si está seleccionado el check Show Description se muestra un breve comentario del contador. Una vez hecho esto se pulsa el Add. Esta operación se repite tantas veces como contadores necesitemos y una vez finalizado se pulsa el botón OK.

6. Escribimos la ruta donde se guardará el fichero y pulsamos next.

Performance-Counter-Path_thumb_517B36A9

7. Creamos el data collector set, seleccionando la opción abrir propiedades y pulsamos Finish.

Create-Perfmon_thumb_517B36A9

8. Establecemos el usuario donde que lanzará el proceso en la caja de texto Run As. Obviamente debe tener permisos suficientes.

Properties-General-Perfmon_thumb_3C89B436

9. La pestaña Directory aparte de la ruta permite establecer el subdirectorio y un patrón para el nombre de este en las cajas de texto Subdirectory y Subdirectory name format.

Directory-Perfmon_thumb_3C89B436

10. La pestaña Security permite configurar los permisos a las cuentas de usuario y Schedule establecer una programación de inicio del recopilador.

11. La pestaña Stop Condition establece las condiciones de finalización del proceso. Las opciones son:

  • Finalización del proceso después de … . Una vez seleccionada la opción Overall duration se establece el valor y las unidades en las que se medirá el tiempo.
  • Reiniciar los recopiladores cuando se lleguen a los siguientes límites… Opción Restart the data collector set at limits. En este caso se puede establecer una duración como en el caso anterior y/o un tamaño máximo en MB.

Stop Condition Performance Monitor

Contadores Más Característicos

Los contadores más característicos de performance monitor son los siguientes:

Procesador:

  • % Processor Time. Es el porcentaje de tiempo transcurrido que los procesadores emplean en ejecutar hilos de programas, esto es, el grado de actividad general de los procesadores.
  • % Idle Time. Es el porcentaje de tiempo transcurrido que los procesadores emplean en hilos inactivos, esto es, tiempo inactivo, evidentemente debería ser cero o lo más cercano a cero.
  • % Privileged Time. Es un subconjunto del contador % processor time orientado a indicar que tiempo utiliza el servidor en tareas propias del sistema operativo.
  • % User Time. Es un subconjunto del contador % processor time orientado a indicar que tiempo utiliza el servidor en programas de usuario (SQL Server, antivirus, offices…)

Memoria:

  • Pages/Sec. Este contador indica la frecuencia con la que el sistema usa el disco para almacenar o devolver los datos asociados a la memoria.
  • Pages Fault/Sec. Este contador es como el anterior con el matiz de que cuenta los errores. Es importante porque los errores implican retardos y porque podrían ser fallos de hardware.

Disco:

  • Disk Sec/Read. representa el tiempo medio que se tarda en leer en el disco.
  • Disk Sec/Write. muestra el tiempo medio que se tarda en escribir en el disco.
  • Current Disk Queue Length. representa el valor de la cola del disco en un momento determinado.
  • Avg. Disk Queue Length. representa el promedio de peticiones de lectura y escritura encoladas en un momento determinado.

Si se producen retardos en las lecturas y las escritura es posible que las colas se incrementen y denoten problema en el disco provocados por procesos.

Contadores de SQL Server

Para el análisis de la actividad de SQL Server es conveniente revisar los contadores de los siguientes grupos:

  • SQL Server Access Methods: Este grupo de contadores ofrece información sobre como se utilizan tablas e índices.
  • SQL Server Buffer Manager: Este grupo de contadores ofrece información sobre el buffer manages (cache hit ratio, free pages, life expentancy, etc).
  • SQL Server General Statistics: Este grupo de contadores proporciona información sobre logins, logouts, user connections.
  • SQL Server Latches: Este grupo de contadores proporciona información sobre pestillos (bloqueos cortos en memoria).
  • SQL Server Locks: Este grupo de contadores concentra la información de bloqueos e interbloqueos.
  • SQL Server SQL Statistics: Este grupo de contadores concentra la información del número de batches, compilaciones y recompilaciones.

Conclusión

A modo de síntesis podemos concluir lo siguiente:

  • Performance monitor es una herramienta para análisis y diagnóstico articulado en:

Resource Monitor

Monitoring Tools (performance monitor)

Reports

Data Collector Sets

  • Se describe el uso y configuración de performance monitor, los tipos de reports y data collector sets.
  • Dentro de los data collector sets, se muestran los pasos para crear uno de ellos, contadores más importantes y una lista de grupos de contadores de SQL Server.

Si os ha gustado el artículo, podéis encontrar más post relacionados en nuestro blog , y si queréis recibir las novedades al instante, os animamos a suscribiros a nuestra newsletter para estar siempre a la última en el sector 🙂