Consultas comunes de monitoreo de WQL


12

¿Qué consultas WQL usarías para monitorear los cuellos de botella típicos de Windows? ¿Qué utilizarías para obtener datos similares a 'top' o 'netstat'? ¿En qué intervalo votarías?

Aquí hay algunos que encuentro útiles.

SELECT PercentDiskTime, AvgDiskQueueLength, DiskReadBytesPerSec, DiskWriteBytesPerSec FROM Win32_PerfFormattedData_PerfDisk_PhysicalDisk

SELECT Caption, CommittedBytes, AvailableBytes, PercentCommittedBytesInUse, PagesPerSec, PageFaultsPerSec FROM Win32_PerfFormattedData_PerfOS_Memory

SELECT PercentProcessorTime FROM Win32_PerfFormattedData_PerfOS_Processor

SELECT Caption, WorkingSet, PageFaultsPerSec,IOReadBytesPerSec, IOWriteBytesPerSec, ThreadCount, HandleCount FROM Win32_PerfFormattedData_PerfProc_Process

SELECT Caption, BytesReceivedPerSec, BytesSentPerSec FROM Win32_PerfFormattedData_Tcpip_NetworkInterface

Excelente material, esto también es útil para los programadores de aplicaciones. Gran parte de este material no está disponible directamente a través de ninguna llamada a la API de Win32; ¡WMI es útil pero no se discute tanto como debería ser!
Andon M. Coleman

Respuestas:


7

Esta es una gran pregunta , ¡y es una pena que no haya recibido más amor!

Mi teoría básica del análisis de cuellos de botella es tratar el sistema como una caja con 4 tipos de recursos finitos: procesador, memoria, disco y red . Así que quiero obtener números básicos para cada uno de estos para determinar la salud de la caja. Quiero números que sean fáciles de interpretar: alto es malo, bajo es bueno. 0 es lo mejor, aunque nunca se puede lograr perfectamente (después de todo, compramos la computadora para hacer el trabajo , ¿eh?). Una vez que veo cuál de los cuatro recursos es el cuello de botella principal, puedo proceder a determinar qué programa o proceso está consumiendo todos los recursos, y tomar una decisión informada sobre si necesito aumentar ese recurso o ajustar el programa / proceso para usar menos del recurso.

Formatearé los principales contadores de rendimiento que uso, de este artículo , como consultas de WMIC, porque no se requieren secuencias de comandos (¡aunque ciertamente es posible!). Puede ingresar cada una de estas consultas directamente en la consola cmd:

wmic path Win32_PerfFormattedData_PerfOS_System get ProcessorQueueLength

Arriba está la longitud de la cola del procesador . Esto indica cuántos hilos están esperando en la cola para ser manejados por la CPU. Números altos malos, números bajos buenos. Generalmente considero que un valor <10 es un sistema saludable.

wmic path Win32_PerfFormattedData_PerfOS_Memory get PagesInputPerSec

Arriba está Memoria, Entrada de páginas por segundo , la velocidad a la que se leen las páginas del disco para resolver fallas de página duras. Las fallas de página duras ocurren cuando un proceso hace referencia a una página en la memoria virtual que no está en la memoria física y debe recuperarse del disco. Sin embargo, este contador funciona mejor en la vista gráfica de Perfmon. En una computadora en buen estado (sin cuellos de botella), verá picos ocasionales a medida que los datos se leen del disco a la memoria RAM, a medida que aumentan los picos, y cuanto más aumentan, más memoria tiene el sistema. Si el sistema a menudo permanece en un valor distinto de cero por períodos más largos que, digamos, cinco segundos, probablemente tenga un sistema de cuello de botella en la memoria.

wmic path Win32_PerfFormattedData_PerfDisk_PhysicalDisk get AvgDiskQueueLength, name

Arriba está el disco físico, longitud promedio de la cola del disco . Considero que este es el indicador clave del estado del sistema, ya que los cuellos de botella de la memoria también obstruirán el disco debido al intercambio excesivo de archivos de página, y a menudo impulsarán la utilización de la CPU. Mostrará un elemento para cada disco montado, así como un total de todos los discos. Un disco único con buen rendimiento tendrá este valor en 2 o menos. Para las matrices, divida el número de husos por la longitud de la cola (por ejemplo: 4 husos en la matriz dividido por una longitud de la cola de 8 = 2, lo que significa que la matriz está funcionando bien).

wmic path Win32_PerfFormattedData_Tcpip_NetworkInterface get OutputQueueLength, PacketsReceivedErrors, Name, currentbandwidth

Y finalmente, arriba tenemos rendimiento NIC. Específicamente la interfaz de red, la longitud de la cola de salida y los errores de paquetes recibidos . Estos dos contadores nos permiten saber cuántos paquetes están esperando ser enviados y cuántos paquetes entrantes causaron errores que probablemente resultaron en retransmisiones. Queremos que ambos números permanezcan en cero. En esta consulta también obtengo el ancho de banda actual de la NIC, que es información útil.

Una vez que he determinado qué recurso se usa en exceso, generalmente dependo de Process Explorer o del objeto de proceso de Perfmon para descubrir qué proceso es el cerdo de recursos.


Gracias por la redacción detallada. Me he convertido a una wiki comunitaria. Creo que otra faceta de esta pregunta son los intervalos de votación. Algunos cuellos de botella solo aparecerán brevemente, otros pueden tomarse muestras con menos frecuencia.
Yancy

Bueno, la mayoría de las veces se buscan cuellos de botella de forma reactiva (porque se ha observado algún problema) en lugar de ser proactivo (solo estar atento en caso de un cuello de botella). En cualquier caso, sin embargo, los gráficos de perfmon durante unos pocos minutos son mucho más útiles que las instantáneas de un punto en el tiempo.
quux
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.