Requêtes de surveillance WQL courantes

12

Quelles requêtes WQL utiliseriez-vous pour surveiller les goulots d'étranglement typiques de Windows? Lesquelles utiliseriez-vous pour obtenir des données similaires à «top» ou «netstat»? À quel intervalle sonderiez-vous?

En voici quelques-unes que je trouve utiles.

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
la source
Excellent, cela est également utile aux programmeurs d'applications. La plupart de ces éléments ne sont pas disponibles directement via un appel API Win32; WMI est utile mais pas discuté autant qu'il devrait l'être!
Andon M. Coleman

Réponses:

7

C'est vraiment une grande question , et c'est dommage qu'elle n'ait pas obtenu plus d'amour!

Ma théorie de base de l'analyse des goulots d'étranglement est de traiter le système comme une boîte avec 4 sortes de ressources finies: processeur, mémoire, disque et réseau . Je veux donc obtenir des chiffres de base pour chacun d'eux afin de déterminer la santé de la boîte. Je veux des chiffres faciles à interpréter: élevé est mauvais, faible est bon. 0 est le meilleur, mais jamais parfaitement réalisable (après tout, nous avons acheté l'ordinateur pour travailler , hein?). Une fois que je vois laquelle des quatre ressources est le principal goulot d'étranglement, je peux déterminer quel programme ou processus consomme toutes les ressources et prendre une décision éclairée quant à savoir si j'ai besoin d'augmenter cette ressource - ou d'ajuster le programme / processus à utiliser moins de la ressource.

Je formaterai les principaux compteurs de performances que j'utilise, à partir de cet article , en tant que requêtes WMIC, car aucun script n'est requis (bien que cela soit certainement possible!). Vous pouvez saisir chacune de ces requêtes directement dans la console cmd:

wmic path Win32_PerfFormattedData_PerfOS_System get ProcessorQueueLength

Ci-dessus se trouve la longueur de la file d'attente du processeur . Cela indique combien de threads attendent dans la file d'attente d'être traités par le CPU. Les chiffres élevés sont mauvais, les chiffres faibles sont bons. En général, je considère qu'une valeur <10 est un système sain.

wmic path Win32_PerfFormattedData_PerfOS_Memory get PagesInputPerSec

Ci-dessus se trouve la mémoire, le nombre de pages entrées par seconde , la vitesse à laquelle les pages sont lues à partir du disque pour résoudre les erreurs de page matérielle. Des erreurs de page matérielle se produisent lorsqu'un processus fait référence à une page de la mémoire virtuelle qui ne se trouve pas dans la mémoire physique et doit être récupérée à partir du disque. Ce compteur fonctionne mieux dans la vue graphique de Perfmon. Sur un ordinateur sain (sans goulot d'étranglement), vous verrez des pointes occasionnelles lorsque les données sont lues du disque dans la RAM, plus vous voyez de pointes et plus elles montent, plus le système est limité en mémoire. Si le système reste souvent à une valeur non nulle pendant des périodes plus longues que, disons, cinq secondes, vous avez probablement un système goulot d'étranglement de mémoire.

wmic path Win32_PerfFormattedData_PerfDisk_PhysicalDisk get AvgDiskQueueLength, name

Ci-dessus se trouve PhysicalDisk, la longueur moyenne de la file d'attente de disque . Je considère que cela est l'indicateur clé de la santé du système, car les goulots d'étranglement de la mémoire vont également embourber le disque en raison d'un échange excessif de fichiers d'échange - et augmenteront souvent l'utilisation du processeur. Il affichera un élément pour chaque disque monté ainsi qu'un total de tous les disques. Un disque unique performant aura cette valeur à 2 ou moins. Pour les matrices, divisez le nombre de broches par la longueur de la file d'attente (par exemple: 4 broches dans la matrice divisées par une longueur de file d'attente de 8 = 2, ce qui signifie que la matrice fonctionne bien).

wmic path Win32_PerfFormattedData_Tcpip_NetworkInterface get OutputQueueLength, PacketsReceivedErrors, Name, currentbandwidth

Et enfin, ci-dessus, nous avons les performances de la carte réseau. Plus précisément , l'interface réseau, la longueur de la file d'attente de sortie et les erreurs de paquets reçus . Ces deux compteurs nous permettent de savoir combien de paquets attendent d'être envoyés et combien de paquets entrants ont provoqué des erreurs qui ont probablement entraîné des retransmissions. Nous voulons que les deux nombres restent à zéro. Dans cette requête, j'obtiens également la bande passante actuelle de la carte réseau qui est une information utile.

Une fois que j'ai déterminé quelle ressource est surutilisée, je dépend généralement de Process Explorer ou de l'objet de processus de Perfmon pour découvrir quel processus est le porc de ressource.

quux
la source
Merci pour la rédaction détaillée. Je me suis converti en wiki communautaire. Je pense qu'une autre facette de cette question est l'intervalle entre les sondages. Certains goulots d'étranglement n'apparaissent que brièvement, d'autres peuvent être échantillonnés avec moins de fréquence.
Yancy
Eh bien, le plus souvent, on recherche des goulots d'étranglement de manière réactive (car un problème a été observé) plutôt que de manière proactive (être juste à l'affût en cas de goulot d'étranglement). Dans les deux cas, cependant, les graphiques perfmon sur quelques minutes sont bien plus utiles que les instantanés ponctuels.
quux