Consultas comuns de monitoramento WQL

12

Quais consultas WQL você usaria para monitorar gargalos típicos do Windows? Qual você usaria para obter dados semelhantes a 'top' ou 'netstat'? Em que intervalo você pesquisaria?

Aqui estão alguns que eu acho úteis.

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
Yancy
fonte
Coisas excelentes, isso também é útil para programadores de aplicativos. Grande parte desse material não está disponível diretamente através de nenhuma chamada da API do Win32; O WMI é útil, mas não discutido tanto quanto deveria!
Andon M. Coleman

Respostas:

7

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.

quux
fonte
Obrigado pela descrição detalhada. Eu converti para um wiki da comunidade. Penso que outra faceta desta questão são os intervalos de votação. Alguns gargalos aparecerão apenas brevemente, outros podem ser amostrados com menos frequência.
Yancy
Bem, na maioria das vezes, procuramos gargalos reativamente (porque algum problema foi observado) em vez de proativamente (apenas vigiando em caso de gargalo). Em ambos os casos, porém, os gráficos perfmon por alguns minutos são muito mais úteis do que os instantâneos point-in-time.
quux