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.