Typowe zapytania monitorujące WQL

12

Jakich zapytań WQL użyłbyś do monitorowania typowych wąskich gardeł systemu Windows? Którego byś użył do uzyskania danych podobnych do „top” lub „netstat”? W jakim odstępie czasu sondowałbyś?

Oto kilka, które uważam za pomocne.

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
źródło
Doskonałe rzeczy, przydatne również dla programistów aplikacji. Wiele z tych rzeczy nie jest dostępnych bezpośrednio przez jakiekolwiek wywołanie Win32 API; Przydatne, ale nie omówione tak dużo, jak powinno być WMI!
Andon M. Coleman,

Odpowiedzi:

7

To naprawdę świetne pytanie i szkoda, że ​​nie zyskało więcej miłości!

Moją podstawową teorią analizy wąskiego gardła jest traktowanie systemu jako pudełka zawierającego 4 rodzaje skończonych zasobów: procesor, pamięć, dysk i sieć . Chcę uzyskać podstawowe liczby dla każdego z nich, aby określić kondycję pudełka. Chcę liczb łatwych do interpretacji: wysoka jest zła, niska jest dobra. 0 jest najlepsze, choć nigdy nie jest w pełni osiągalne (w końcu kupiliśmy komputer do pracy , co?). Gdy zobaczę, który z czterech zasobów jest głównym wąskim gardłem, mogę przystąpić do ustalenia, który program lub proces zjada wszystkie zasoby, i podjąć świadomą decyzję, czy muszę zwiększyć ten zasób - czy dostroić program / proces do użycia mniej zasobów.

Sformatuję główne liczniki wydajności, których używam, z tego artykułu , jako zapytania WMIC, ponieważ nie jest wymagane żadne skrypty (chociaż na pewno jest to możliwe!). Możesz wprowadzić każde z tych zapytań bezpośrednio do konsoli cmd:

wmic path Win32_PerfFormattedData_PerfOS_System get ProcessorQueueLength

Powyżej znajduje się długość kolejki procesora . To pokazuje, ile wątków czeka w kolejce na obsługę procesora. Wysokie liczby złe, niskie dobre dobre. Ogólnie rzecz biorąc, uważam wartość <10 za zdrowy system.

wmic path Win32_PerfFormattedData_PerfOS_Memory get PagesInputPerSec

Powyżej znajduje się pamięć, liczba stron na sekundę , szybkość odczytu stron z dysku w celu rozwiązania trudnych błędów strony. Twarde błędy strony występują, gdy proces odnosi się do strony w pamięci wirtualnej, która nie znajduje się w pamięci fizycznej i musi zostać pobrana z dysku. Ten licznik działa jednak najlepiej w widoku wykresu Perfmon. Na zdrowym (nie wąskim gardle) komputerze od czasu do czasu zobaczysz skoki danych, gdy dane są odczytywane z dysku do pamięci RAM, im więcej skoku widzisz, a im wyższy, tym więcej ograniczeń pamięci w systemie. Jeśli system często utrzymuje niezerową wartość przez okresy dłuższe niż, powiedzmy, pięć sekund, prawdopodobnie masz wąskie gardło systemu.

wmic path Win32_PerfFormattedData_PerfDisk_PhysicalDisk get AvgDiskQueueLength, name

Powyżej znajduje się PhysicalDisk, średnia długość kolejki dysku . Uważam to za kluczowy wskaźnik kondycji systemu, ponieważ wąskie gardła pamięci również zapadną na dysku z powodu nadmiernej zamiany plików stronicowania - i często również zwiększą wykorzystanie procesora. Wyświetli element dla każdego zamontowanego dysku, a także łącznie wszystkich dysków. Dobrze działający pojedynczy dysk będzie miał tę wartość 2 lub mniej. W przypadku tablic podziel liczbę wrzecion przez długość kolejki (np .: 4 wrzeciona w tablicy podzielone przez długość kolejki 8 = 2, co oznacza, że ​​tablica działa dobrze).

wmic path Win32_PerfFormattedData_Tcpip_NetworkInterface get OutputQueueLength, PacketsReceivedErrors, Name, currentbandwidth

I wreszcie, powyżej mamy wydajność NIC. W szczególności interfejs sieciowy, długość kolejki wyjściowej i otrzymane błędy . Te dwa liczniki informują nas, ile pakietów czeka na wysłanie i ile pakietów przychodzących spowodowało błędy, które prawdopodobnie spowodowały retransmisje. Chcemy, aby obie liczby pozostały na zero. W tym zapytaniu otrzymuję również bieżącą przepustowość karty sieciowej, która jest użyteczną informacją.

Po ustaleniu, który zasób jest nadużywany, zwykle polegam na Eksploratorze procesów lub obiekcie procesu Perfmon, aby dowiedzieć się, który proces jest świnią zasobów.

quux
źródło
Dziękuję za szczegółowy opis. Przekształciłem się w wiki społeczności. Myślę, że innym aspektem tego pytania są interwały sondowania. Niektóre wąskie gardła pojawią się na krótko, inne mogą być próbkowane z mniejszą częstotliwością.
Yancy,
Cóż, najczęściej szuka się wąskich gardeł raczej reakcyjnie (ponieważ zaobserwowano pewien problem), a nie proaktywnie (po prostu obserwując w przypadku wąskiego gardła). W obu przypadkach wykresy perfmona nawet przez kilka minut są znacznie bardziej przydatne niż migawki w określonym momencie.
quux