Typeperf: Desde el símbolo de comando

Una vez conocidos los contadores de rendimiento instalados en el equipo, podemos monitorizar el rendimiento. Para ello, iniciaremos Typeperf seguido de una lista de contadores, por ejemplo:

Typeperf "MemoriaBytes disponibles"

*El sistema que yo uso es en español.

typeperf01

Typeperf comienza de inmediato la monitorización de los bytes disponibles de memoria y los va mostrando en la ventana en tiempo real; continuará hasta que usemos la secuencia de teclas CRTL+C para finalizar la sesión.

Si queremos monitorizar más de un contador sólo tenemos que añadirlos entrecomillados siguiendo al anterior,

Typeperf "MemoriaBytes disponibles" "MemoriaBytes de caché" "MemoriaPáginas/s"

typeperf02

Como alternativa, podemos tener las rutas en un archivo y referenciarlo en el comando usando el parámetro –cf, parecido a Relog.

Si queremos hacerlo a equipos remotos:

Typeperf "\EquipoMemoriaBytes disponibles" o, Typeperf "MemoriaBytes disponibles" –s Equipo

De forma predeterminada las medidas o muestras de los datos de rendimiento son de una vez por segundo hasta que se pulsa CRTL+C.

Nosotros no podemos hacer que el comando se ejecute durante dos horas y se detenga (al menos desde sus parámetros), pero si podemos especificar el número de muestras o medidas a tomar durante su sesión, alcanzado dicho número se cerrará. Para ello utilizaremos el parámetro –sc seguido del número, por ejemplo si queremos 100 muestras:

Typeperf "MemoriaBytes disponibles"sc 100

Lo que supone 100 segundos.

También podemos modificar la frecuencia de muestreo, sabemos que es una por segundo, 86400 en un día. Así que para hacerlo usaremos el parámetro –si seguido del nuevo muestro en segundos, si lo queremos cada 5 minutos entonces 5*60=300:

Typeperf "MemoriaBytes disponibles"si 300

Y finalmente un par de cuestiones: dirigir la salida hacia un archivo de registro y/o cambiar el formato del mismo.

Redirigir la salida puede hacerse, como siempre hemos hecho desde el propio símbolo del sistema:

Typeperf "MemoriaBytes disponibles" > rutanombre_archivo

o, y mejorándolo creo, usar el parámetro del comando –o junto al –f y así redirigir y establecer el formato del archivo de salida.

Typeperf "MemoriaBytes disponibles" -o rutanombre_archivo.extensionf tipo_formato

Donde extensión irá en consonancia(*.csv, *.tsv, *.log) con el tipo_formato (bin, csv, tsv, SQL)

Utilizando Typeperf: recogiendo datos

Antes de poder monitorizar el rendimiento en un equipo necesitamos conocer qué contadores se encuentran disponibles en el mismo. Aunque un juego predeterminado de contadores de rendimiento se instala junto al sistema operativo, los contadores actuales en un determinado equipo dependerá de muchas cosas: sistema operativo instalado, ya que cada uno instala un juego distinto de contadores predeterminados; servicios y aplicaciones instaladas, ya que muchas de ellas puede que proporcionen su propio juego de contadores en el momento de instalarlas; si los contadores se han deshabilitado o se han corrompido.

Recuperar una lista de todos los contadores (sin instancias) disponibles en un equipo es tan sencillo como usar Typeperf con el parámetro –q.

Typeperf –q  NOTA: Os recomiendo redirigirlo a un archivo, sea con Typeperf –q > rutatypeperf.txt o Typeperf –q –o  rutatypeperf.txt

De forma sucesiva, Typeperf muestra en pantalla las rutas de los contadores de rendimiento instalados en el equipo. Extraídas de la ejecución del comando en un Win7:

Processor Information(*)Marcas de estado del procesador
Processor Information(*)% de frecuencia m xima
Processor Information(*)Frecuencia del procesador
Processor Information(*)Estado de detenci¢n
Processor Information(*)% de tiempo en prioridad
Processor Information(*)Transiciones C3/s
Processor Information(*)Transiciones C2/s
Processor Information(*)Transiciones C1/s
Processor Information(*)% de tiempo C3
Processor Information(*)% de tiempo C2
Processor Information(*)% de tiempo C1
Processor Information(*)% de tiempo de inactividad
Processor Information(*)Velocidad de DPC
Processor Information(*)DPC en cola/s
Processor Information(*)% de tiempo de interrupci¢n
Processor Information(*)% de tiempo de DPC
Processor Information(*)Interrupciones/s
Processor Information(*)% de tiempo privilegiado
Processor Information(*)% de tiempo de usuario
Processor Information(*)% de tiempo de procesador

Si queremos incluir las instancias usaremos el parámetro –qx.

Typeperf –qx  NOTA: Os recomiendo redirigirlo a un archivo, sea con Typeperf –qx > rutatypeperf.txt o Typeperf –qx –o  rutatypeperf.txt

La lista ya puede ser grande con el –q así que el –qx es mucho mayor, por ello si lo redirigimos a un archivo de texto los tendremos todos.

También podemos recuperar la lista de contadores desde equipos remotos, para ello usaremos la ruta UNC:

Typeperf –q \Equiporemoto  Typeperf –q \EquiporemotoMemory

Typeperf no proporciona ninguna vía de conexión con usuario y contraseña alternativos, pero podemos conectar con el equipo remoto primero usando

net use \Equiporemotoipc$ /user:USUARIO CONTRASEÑA y usar el comando en el equipo remoto.

Utilizando Typeperf: sintaxis

La herramienta Typeperf proporciona una alternativa desde la línea de comandos al monitor del sistema. Puede proporcionarnos una lista de valores de contador de rendimiento en ejecución, dándonos un control detallado del rendimiento en tiempo-real. También supone menor sobrecarga que el monitor del sistema, lo que puede ser importante si el equipo que estamos controlando es ya lento o bajo rendimiento.

Para asistir en la construcción de procedimientos de control automatizados, Typeperf dispone de una manera fácil de recuperar una lista de todos los contadores de rendimiento instalados sobre un determinado equipo.(Aunque es posible ver el conjunto de contadores de rendimiento instalados con el monitor del sistema, no hay forma de revisarlos o de guardar la lista entera.) Con Typeperf, podemos listarlos y guardar la lista en un archivo de texto que puede editarse después para usarse como archivo de configuración con Logman o Relog. Este diseño es un complemento pues a Logman y Relog.

Typeperf es compatible con un conjunto de parámetros en tiempo de ejecución para la definición de consultas de registro de contador,y junto a opciones, reunir contadores en tiempo-real. Los parámetros utilizan una sintaxis y llevan a cabo funciones similares a Logman y Relog.

Parámetro

Sintaxis

Función

Observaciones

Consulta -q {Path [Path…] Devuelve una lista de contadores, uno por línea con su ruta. o para dirigir la salida a un archivo de texto.
Consulta extendida -qx {Path [Path…] Devuelve una lista de contadores con instancias. La salida es pormenorizada.
Archivo configuración -config nombre_archivo Uso de los parámetros definidos en el archivo. Cada contador con su ruta en una línea.
Contadores -c {Path [Path…] Especifica contadores a recoger. -cf archivo para utilizar un archivo.
Intervalo de muestra -si [[HH:]MM:]SS] Especifica intervalo de muestra para reunir datos. Predeterminado 1 segundo.
# de muestras -sc muestras Número de muestras de datos a reunir.  
Nombre archivo salida -o (archivo) Nombre de archivo de salida, si no existe lo creará. Redirige la salida hacia un archivo. Predeterminado stdout(la pantalla normalmente)
Formato archivo -f {bin|csv|tsv|SQL} Elección del formato del archivo de salida. Predeterminado csv.
Equipo -s Equipo Especifica el equipo del que queremos la información. Si no se indica equipo se asume que es el equipo local.

Resumiendo archivos de registro con Relog

Relog nos permite reducir el tamaño de los archivos de salida creados mediante la escritura de uno de cada n registros, donde n es un parámetro que nosotros especificamos usando la opción –t. Esto tiene el efecto de resumir el intervalo y las medias de contadores. Los intervalos son algo como ProcessorInterrupts/sec y Process% Processor Time que informan un ratio de actividad sobre la medida del intervalo. Las medias como Physical DiskAvg.Disk sec/transfer son las que informan un valor de media sobre la medida.

El parámetro –t nos permite extraer cada enésimo registro desde los registros de contador de entrada y pasarlos al archivo de salida. –t 40 selecciona cada 40 registros; –t 4 selecciona cada 4 registros. Si el registro de contador de entrada original se guardó con una muestra de intervalo de una vez cada 15 segundos, usando Relog con el parámetro –t 4 resulta en un archivo de salida con datos grabados en intervalos de un minuto. El mismo archivo de salida con –t 240 resulta en datos grabados en intervalos de 1 hora.

Resumiendo usando Relog supone un nuevo muestreo del archivo de entrada. El archivo resultante no es sólo más conciso además contiene valores de contador resumidos sobre intervalos largos. Podemos esperar que algunos datos se han atenuado como resultado de este orden de resumen, pero nada que distorsionaría la normalidad de la distribución subrayada y sea difícil de interpretar.

No todos los contadores que reunimos pueden resumirse con este estilo, sin embargo, para un contador instantáneo como MemoryAvailable Bytes, relog simplemente baja las observaciones de muestra. Si usamos relog con contadores instantáneos con extensión suficientemente larga, podríamos encontrarnos con un archivo de salida con tan pocas observaciones que no tendríamos una muestra lo suficientemente grande para interpretar las mediciones de manera significativa. En este punto es probablemente mejor usar una lista de contadores con relog para disminuir los contadores instantáneos desde el archivo de salida.

Administrar registros de rendimiento: Relog

Unión de registros de contador con Relog

Podemos utilizar Relog para unir datos de múltiples registros de rendimiento en un único archivo. Se especifica la ruta y los nombres de archivos de los diversos registros de rendimiento como parte del parámetro inicial:

relog c:registrosregistro1.blg c:registrosregistro2.blg c:registrosregistro3.blg –o c:misRegistrosRegistroDestino.blg –a

Usamos el parámetro –a para indicarle a Relog que debe añadir la salida de cualesquiera datos al archivo de salida cuando se unen datos de múltiples registros.

Los registros almacenados en equipos remotos también pueden unirse mediante el uso de la ruta UNC en lugar de la ruta local.

relog \servidor01registrosreg1.blg \servidor02registrosreg2.blg \servidor03registrosreg3.blg –o cmisRegistrosRegDestino.blg –a –f blg

Las rutas individuales no deben superar los 1024 caracteres.

Formato del archivo de salida de Relog

Relog es compatible con los mismos formatos de archivos de entrada y salida como Logman a excepción del binario circular y de establecer tamaños límite de archivo. Si se crea un nuevo archivo de salida éste tendrá el formato binario de forma predeterminada. Relog sólo puede añadir datos sobre archivos existentes, y los archivos de entrada y salida están en formato binario.

Cuando creamos un nuevo archivo de salida podemos usar el parámetro –f para especificar uno de los formatos: bin (formato binario, predeterminado), csv (valores separados por comas), tsv (Valores separados por tabulación) o SQL (formato SQL).

Filtrar archivos de registro con Relog

Relog tiene capacidad de filtrado, que puede usarse para la extracción de datos de rendimiento desde un registro de contador de entrada basado en los siguientes criterios:

  • Una lista de contadores, especificados con sus rutas.
  • Un rango especificado de fecha y hora.

Sólo los contadores que cumplan los criterios especificados se escribirán en el archivo de salida que Reglog cree.

Filtrado por contador   Se basa en una lista de contadores, especificados en la la línea de comandos o en un archivo de configuración. Relog grabará en el archivo designado de salida sólo aquéllos valores de los contadores especificados.

relog c:registrosreg01.txt –o c:registrosnuevoreg.txt –f csv –c "MemoryAvailable Bytes"

Para la extracción de datos de más de un contador, se incluye cara ruta del contador como parte del parámetro –c.

relog c:registrosreg01.txt –o c:registrosnuevoreg.txt –f csv –c "MemoryAvailable Bytes" "MemoryPages/sec" "MemoryCache Bytes"

Nota: Relog no realiza monitorización por sí mismo; todo lo que hace es recoger datos desde registros de rendimiento existentes. Si especificamos un contador que no se encuentra en ninguno de los archivos de entrada, el contador no aparecerá en el archivo de salida.

Si nuestro registro de entrada contiene datos de múltiples equipos, se incluye el nombre del equipo como parte de la ruta del contador.

relog c:registrosreg01.txt –o c:registrosnuevoreg.txt –f csv –c "\EQUIPOMemoryAvailable Bytes"

En lugar de escribir una gran cantidad de contadores de rendimiento como parte del comando, podemos usar un archivo de configuración, un simple archivo de texto conteniendo las rutas de cada contador en una fila.

Para filtrar los archivos de entrada que sólo tengan aquéllos contadores que estén en el de salida, usar el parámetro –cf seguido de la ruta del archivo de configuración.

Filtrado por fecha   Relog proporciona la habilidad de extraer subconjuntos de datos basados en fecha y hora. Para ello se especifica la hora de comienzo (parámetro –b) y la hora final (parámetro –e) como parte de nuestro comando. Tanto uno como otro parámetros expresan fechas y horas usando el formado mm-dd-yyyy hh:mm:ss, més día año, hora, minuto y segundos, la hora se expresa en formato 24 horas.

relog c:registrosreg01.txt –f csv –o c:registrosNuevoreg.txt –b 07-07-2009 09:30:00 –e 07-08-2009 11:00:00

Si sólo indicamos las horas, se asume la fecha del día actual.

relog c:registrosreg01.txt –o c:registrosNuevoreg.txt –b 09:30:00 –e 11:00:00

Administrar registros de rendimiento

Tanto Las Alertas y registros de rendimiento como Logman nos permiten cierta flexibilidad en la recogida de estadísticas de rendimiento. La herramienta Relog (relog.exe) es una herramienta de línea de comandos que nos permite administrar los registros de contador que hemos creado. Con Relog podemos llevar a cabo las siguientes tareas:

  • Combinar múltiples registros de contador en un único archivo de registro. Podemos listar los nombres de archivo de todos los contadores que queremos que Relog procese separadamente, o podemos usar caracteres comodín (como *) para identificarlos. Los registros que combinemos pueden contener contadores de un sólo equipo o de varios.
  • Crear resúmenes de archivos de salida desde un archivo o archivos de entrada.
  • Editar el contenido de un registro contador, permitiendo saltar los contadores por nombre o todos aquéllos que no han recogido datos durante un intervalo de tiempo determinado.
  • Convertir datos de contador de un formato a otro.

Nota: Logman puede recoger datos de rendimiento en múltiples equipos y guardarlos en un sólo archivo de registro. Sin embargo, esto puede resultar en una cantidad de tráfico considerable e indeseado. Relog nos permite monitorizar el rendimiento localmente, y entonces recuperar los datos según se necesiten. Colocando los comando de Relog en un archivo de lotes, los datos pueden recuperarse de forma programada, en momentos que el tráfico de la red es bajo.

La herramienta Relog

Relog necesita dos parámetros: la ruta de un archivo existente (de entrada) y la ruta para un archivo (de salida) nuevo(parámetro –o).

relog C:archivodeentrada.blg –o C:archivonuevodesalida.blg

Relog reune datos desde uno o más registros de rendimiento y los combina en un archivo de salida único. Podemos especificar un archivo de entrada único o una cadena de archivos de entrada.

relog C:archivodeentrada.blg c:archivodeentrada2.blg c:archivodeentrada3.blg –o c:archivonuevodesalida.blg

Sintaxis

Parámetro

Sintaxis

Función

Notas

Archivo configuración -config archivo Usa los parámetros definidos en este archivo. Usar –i en el archivo de configuración como emplazamiento para una lista de archivos de entrada.
Contadores -c {ruta [ruta …] Especifica los contadores del archivo de entrada que queremos escribir en el archivo de salida. Si no se especifican, se escribirán todos. Usar –cf archivo para valores de contador de un archivo existente.
Resumen intervalo -t n Escribir la salida cada n intervalo de los archivos de entrada. Predeterminado para crear salidas cada intervalo de entrada.
Nombre archivo de salida -o {ruta|DSN!RegistroContador} Especifica el archivo de salida. Obligatorio.
Formato archivo registro -f bin | bincirc |csv | tsv| SQL Elección del formato del archivo de salida. Predeterminado formato binario.
Añadir -a Añade la salida desde la sesión de registro a un archivo existente. Sólo para archivos binarios de entrada y salida.
Comenzar Relogging -b M/D/YYYY H:MM:SS [{AM|PM}] Especifica la fecha y la hora de inicio del archivo de salida.  
Finalizar Relogging -e M/D/YYYY H:MM:SS [{AM|PM}] Especifica la fecha y la hora de fin del archivo de salida.  

Siguiendo con Logman

Con Logman podemos programar opciones que nos permitan la programación de la recogida de datos en horas específicas durante el día. Mediante intervalos de muestra diferentes podemos tener también a Logman recogiendo datos en intervalos regulares. Lo que no podemos hacer es programar la recogida de datos de en horarios irregulares. Por ejemplo: los 10 primeros minutos de cada hora.

Podemos con Typeperf hacerlo. Creamos un archivo de lotes que configure Typeperf  para tomar muestras sólo 10 minutos y luego programamos que el archivo de lotes se ejecute una vez cada hora con el Administrador de tareas.

Sin embargo, ya que Logman es scriptable, podemos combinar WSH y Logman para programar la recogida de datos usando intervalos irregulares. Un script:

   1: Set WshShell = WScript.CreateObject("WScript.Shell")

   2: Do

   3:     WshShell.Run "%COMPSEC% /c logman -start dns_log"

   4:     Script.Sleep 300000

   5:     WshShell.Run "%COMPSEC% /c logman -stop dns_log"

   6:     WScript.Sleep 3300000

   7: Loop

Inicia Logman y se para por cinco minutos, tiempo que Logman recoge datos, luego lo detiene y permanece 55 minutos inactiva hasta volver a activar el Ciclo(Loop).

   1: Set WshShell = WScript.CreateObjetc("WScript.Shell")

   2: For i = 1 to 24

   3:     WshShell.Run "%COMPSEC /c logman -start dns_log"

   4:     WScript.Sleep 300000

   5:     WshShell.Run "%COMPSEC /c logman -stop dns_log"

   6:     WScript.Sleep 3300000

   7: Next i

   8: WScript.Quit

Este hace lo mismo pero se ejecuta 24 veces, una vez cada hora.