Esta é uma pergunta realmente ótima , e é uma pena que não tenha conseguido mais amor!
Minha teoria básica da análise de gargalos é tratar o sistema como uma caixa com 4 tipos de recursos finitos: processador, memória, disco e rede . Então, eu quero obter números básicos para cada um deles para determinar a saúde da caixa. Quero números fáceis de interpretar: alto é ruim, baixo é bom. 0 é o melhor, embora nunca seja perfeitamente possível (afinal compramos o computador para fazer o trabalho , não é?). Depois de ver qual dos quatro recursos é o principal gargalo, posso determinar qual programa ou processo está consumindo todos os recursos e tomar uma decisão informada sobre a necessidade de aumentar esse recurso - ou ajustar o programa / processo a ser usado menos do recurso.
Formato os principais contadores de desempenho que utilizo, neste artigo , como consultas WMIC, porque nenhum script é necessário (embora seja certamente possível!). Você pode inserir cada uma dessas consultas diretamente no console do cmd:
wmic path Win32_PerfFormattedData_PerfOS_System get ProcessorQueueLength
Acima está o comprimento da fila do processador . Isso indica quantos threads estão esperando na fila para serem tratados pela CPU. Números altos ruins, números baixos bons. Geralmente, considero um valor <10 um sistema saudável.
wmic path Win32_PerfFormattedData_PerfOS_Memory get PagesInputPerSec
Acima está Memória, Entrada de páginas por segundo , a taxa na qual as páginas são lidas do disco para solucionar falhas de página. As falhas de página física ocorrem quando um processo se refere a uma página na memória virtual que não está na memória física e deve ser recuperada do disco. Esse contador funciona melhor na visualização gráfica do Perfmon. Em um computador saudável (sem gargalos), você verá picos ocasionais à medida que os dados são lidos do disco para a RAM. Quanto mais picos você vir, e quanto mais altos eles forem, mais memória o sistema terá. Se o sistema geralmente permanecer com um valor diferente de zero por períodos superiores a, digamos, cinco segundos, você provavelmente terá um sistema com gargalo de memória.
wmic path Win32_PerfFormattedData_PerfDisk_PhysicalDisk get AvgDiskQueueLength, name
Acima está PhysicalDisk, comprimento médio da fila de disco . Considero que esse é o principal indicador da integridade do sistema, pois os gargalos de memória também atrapalham o disco devido à troca excessiva de arquivos de páginas - e muitas vezes aumentam a utilização da CPU. Ele mostrará um item para cada disco montado, bem como um total de todos os discos. Um disco único com bom desempenho terá esse valor em 2 ou menos. Para matrizes, divida o número de eixos-árvore pelo comprimento da fila (por exemplo: 4 eixos-árvore na matriz divididos por uma fila de 8 = 2, o que significa que a matriz está tendo um bom desempenho).
wmic path Win32_PerfFormattedData_Tcpip_NetworkInterface get OutputQueueLength, PacketsReceivedErrors, Name, currentbandwidth
E, finalmente, acima, temos o desempenho da NIC. Especificamente Interface de Rede, Comprimento da Fila de Saída e Erros de Pacotes Recebidos . Esses dois contadores nos informam quantos pacotes aguardam o envio e quantos pacotes de entrada causaram erros que provavelmente resultaram em retransmissões. Queremos que os dois números permaneçam em zero. Nesta consulta, também recebo a largura de banda atual da NIC, que é uma informação útil.
Depois de determinar qual recurso está sendo usado em excesso, normalmente dependo do objeto de processo do Process Explorer ou do Perfmon para descobrir qual processo é o porco de recursos.