Delen via


Scenariohandleiding: Prestatieproblemen in Windows oplossen

In deze scenariohandleiding wordt uitgelegd hoe u Performance Monitor gebruikt om gegevens te verzamelen en hoe u de gegevens gebruikt om het knelpunt te beperken dat de computer traag maakt. Het introduceert algemene benaderingen en probeert de concepten voor probleemoplossing uit te leggen.

Prestatiemeter gebruiken om prestatiegegevens vast te leggen

Elke volledige versie van Windows wordt geleverd met een hulpprogramma voor Postvak IN met de naam Performance Monitor. U kunt dit hulpprogramma gebruiken om prestatiegerelateerde informatie over verschillende aspecten van het Windows-systeem bij te houden met behulp van prestatiemeteritems die zijn ingebouwd in Windows, die ons meer informatie bieden over het cpu-gebruik (Central Processing Unit) of geheugengebruik.

Elke teller wordt op dezelfde eenvoudige manier samengesteld:
[Performance counter object]\<Instance>\<Counter Name>

Bijvoorbeeld:
[Processor Information]\<CPU 0\>\% Processor Time

Als u de prestatiegegevens van de tellers wilt opslaan, kunt u de gegevensverzamelaarsets in Prestatiemeter gebruiken. Zie de volgende schermafbeelding:

Schermopname van Prestatiemeter en Gegevensverzamelaarsets.

Als u deze gegevensverzamelaarsets wilt maken, kunt u de grafische gebruikersinterfaces (GUI) of de logman.exe opdracht gebruiken.

Als u een gegevensverzamelaarset wilt maken, voert u de volgende opdracht uit in een opdrachtpromptvenster met verhoogde bevoegdheid:

logman.exe create counter PerfLog-15Sec-Contoso -o "c:\perflogs\Contoso_PerfLog-15sec.blg" -f bincirc -v mmddhhmm -max 800 -c "Hyper-V Dynamic Memory Balancer (*)\*" "Hyper-V Hypervisor Virtual Processor(*)\*" "Hyper-V Hypervisor Logical Processor(*)\*" "\LogicalDisk(*)\*" "\Memory\*" "\Cache\*" "\Network Interface(*)\*" "\Paging File(*)\*" "\PhysicalDisk(*)\*" "\Processor(*)\*" "\Processor Information(*)\*" "\Processor Performance(*)\*" "\Process(*)\*" "\Process V2(*)\*" "\Redirector\*" "\Server\*" "\System\*" "\Server Work Queues(*)\*" "\Terminal Services\*" -si 00:00:15

Als u de teller wilt starten, voert u de volgende opdracht uit in een opdrachtpromptvenster met verhoogde bevoegdheid:

logman.exe start PerfLog-15Sec-Contoso

Met deze opdracht wordt een "flight box recorder"-achtige monitor op uw systeem gegenereerd. De monitor registreert prestatiegegevens elke 15 seconden (zie -si 00:00:15 voor het interval). Telkens wanneer de collectorset wordt gestart, moet de impact op het systeem kleiner zijn dan 1%, en wordt niet meer dan 800 MB (megabytes) aan ruimte op uw lokale harde schijf gebruikt. Als u de computer opnieuw opstart, moet u de opdracht uitvoeren om de monitor opnieuw te starten.

Als u de teller wilt stoppen, voert u de volgende opdracht uit in een opdrachtpromptvenster met verhoogde bevoegdheid:

logman.exe stop PerfLog-15Sec-Contoso

De gegevensverzamelaarset volgt ook het principe van [Performance counter object]\<Instance>\<Counter Name>. Het tellerobject heet 'Geheugen', omdat dit object geen exemplaar heeft. De reden hiervoor is dat er één geheugen in Windows is, maar er mogelijk meer dan één harde schijf of CPU is.

U hebt nu een gegevensverzamelaarset waarmee gegevens elke 15 seconden worden vastgelegd. 15 seconden wordt gekozen vanwege een beperking van het hulpprogramma dat wordt gebruikt om de gegevens te analyseren: Prestatiemeter.

Er kunnen maximaal 1000 gegevenspunten in een grafiek worden weergegeven. Als de gegevensverzamelaar is geconfigureerd voor het vastleggen van gegevens elke seconde, kan de grafiek alleen de gegevens in 16 minuten en 40 seconden weergeven. Als er meer gegevens in het logboek staan, worden deze gegevenspunten samengevat en gecombineerd. De opname wordt aangeroepen als een high-densityopname.

Dit kan leiden tot een situatie waarin de grafiek geen nauwkeurige getallen weergeeft. U kunt dit herkennen door naar de grafiek te kijken en deze te vergelijken met de minimum- of maximumwaarden.

In dit voorbeeld bekijkt u de teller % niet-actieve tijd van het exemplaar _Total voor de tellerobjectprocessor. Op basis van de minimumwaarde moet de grafiek de blauwe lijn bereiken (bij 32%), maar dit is niet waar. Aangezien het getal en de grafiek niet overeenkomen, moet u controleren hoeveel voorbeelden er zijn binnen de weergegeven periode (22 minuten en 01 seconden). Wanneer u de muisaanwijzer boven beweegt, ziet u in een fly-out hoeveel voorbeelden er in dit gegevenspunt staan. Zoals u kunt zien, zijn er 10 voorbeelden. Daarom wordt het hulpprogramma gedwongen deze samen te vatten en te combineren, omdat dit een opname was met een interval van één seconde.

Schermopname van de minimumwaarde prestatiemeter.

Windows vereenvoudigen

Nu u het prestatiemeteritemlogboek hebt, gaan we Windows vereenvoudigen op een manier die de analyse helpt. Hiervoor moet u het systeem opsplitsen in de logische onderdelen: geheugen, opslag, CPU en netwerk.

Schermopname van de logische onderdelen van het systeem.

Naast het toewijzen van sommige prestatiemeterobjecten aan de fysieke resource, is het belangrijk om te onthouden dat Windows is onderverdeeld in twee belangrijke gebieden: kernel- en gebruikersmodus.

Kernel verwijst naar het besturingssysteem (besturingssysteem) en stuurprogramma's (dit omvat ook uw antivirusfilterstuurprogramma). De kernel wordt weergegeven in Windows door een logische constructie met de naam Systeemproces, die altijd de proces-id 4heeft. Om veiligheidsredenen is dit gebied sterk beschermd. Zelfs met hulpprogramma's voor Postvak IN, zoals Prestatiemeter, kan er slechts een beetje informatie van worden verkregen. U kunt bijvoorbeeld zien hoeveel niet-gepaginade pool er in gebruik is, maar er is geen informatie over wie deze gebruikt.

In de gebruikersmodus worden alle toepassingen (moderne Appx, services en uitvoerbare bestanden) uitgevoerd. Met Performance Monitor krijgt u informatie over elk proces.

De 18 belangrijkste tellers introduceren

Ter vereenvoudiging worden in de volgende secties de 18 belangrijkste tellers en de bijbehorende drempelwaarden geïntroduceerd, onderverdeeld in de fysieke resources waaraan ze zijn gerelateerd.

Storage

Primaire tellers In orde Waarschuwing Kritiek
\LogicalDisk(*)\Avg. Disk sec/Read < 15 ms > 25 ms > 50 ms
\LogicalDisk(*)\Avg. Disk sec/Write < 15 ms > 25 ms > 50 ms
\PhysicalDisk(*)\Avg. Disk sec/Read < 15 ms > 25 ms > 50 ms
\PhysicalDisk(*)\Avg. Disk sec/Write < 15 ms > 25 ms > 50 ms

Notitie

Korte pieken kunnen worden getolereerd. U moet langere latentieperioden (over één minuut of langer) onderzoeken.

Deze tellers vertegenwoordigen latentie. Latentie wordt gedefinieerd door hoeveel tijd het kost om de informatie op te halen. Vanuit het perspectief van schijfprestaties moet u de installatie nader bekijken. Voor een normale harde schijf, in plaats van een SSD (solid-state harde schijf), heeft de schijf normaal gesproken een rotatiesnelheid van 5.400 revoluties per minuut (RPM). Dat betekent dat de schijf de spindel (waarbij de informatie als blokken wordt opgeslagen) 5400 keer per minuut draait. U moet de tijd kunnen berekenen die nodig is om elk blok van de schijf te lezen:

Eén blok / (RPM / 60) = latentie voor één blok

Eén blok / 5400 RPM / 60 = 0,011111 sec = 11 ms

Daarom moet de schijf in theorie elk blok binnen 11 ms kunnen lezen. Als er een latentie ~100 msis, moet de schijf ten minste acht keer het blok kunnen lezen, dus waarom is er een vertraging? Wordt de schijf overweldigd, en zo ja, wie gebruikt deze?

Als u wilt bepalen wie het gebruikt, kunt u nu het object Procesteller controleren.

Procestellers met betrekking tot schijfbewerkingen:

  • \Process(*)\IO-leesbewerkingen per seconde (leestijden voor processpecifieke schijven)
  • \Process(*)\IO-schrijfbewerkingen per seconde (schrijftijden voor processpecifieke schijven)

U kunt deze tellers gebruiken en proberen de latentie of het schijfgebruik te correleren met het procesgebruik.

We gaan verder met het volgende fysieke onderdeel.

Geheugen

Virtueel geheugen en fysieke geheugenmeteritems In orde Waarschuwing Kritiek
\Memory\Pool Paged Bytes | Pool Nonpaged Bytes Bytes 0–50% 60–80% 80–100%
\Memory\Available MBytes > 10% of ten minste 4 gigabyte (GB) gratis < 10% < 1% of minder dan 500 MB
\Memory\% vastgelegde bytes in gebruik 0–50% 60–80% 80–100%

In deze sectie worden de volgende tellers beschreven:

  • Gegroepeerde bytes
  • Niet-gepaginade bytes groep

Deze tellers vertegenwoordigen kernelbronnen die worden gedeeld door het hele systeem. Hoewel processen gepaginade en niet-gepaginade pools kunnen claimen, wordt dit voornamelijk gedaan door stuurprogramma's; Daarom zijn de gegevens niet zichtbaar voor Prestatiemeter. Hoewel de gepaginade pool naar het paginabestand kan worden gepaginad, kan de niet-gepaginade pool dat niet. Houd er rekening mee dat deze kernelbronnen afhankelijk zijn van het geheugen (RAM-geheugen (Random Access Memory) dat u in het systeem hebt. De limiet van de niet-gepaginade pool is 75% van uw RAM-geheugen en ze hebben rechtstreeks invloed op uw beschikbare MBytes. Beschikbare MBytes is de hoeveelheid RAM die beschikbaar is voor alle programma's, inclusief de kernel.

Als u de impact van uw proces op ram-gebruik wilt begrijpen, kunt u de volgende teller gebruiken:

Procesteller Opmerking
\Process(*)\Working Set Probeer te relateren aan beschikbare MBytes om de belangrijkste consument van uw RAM-geheugen te identificeren. De werkset wordt gedefinieerd als de hoeveelheid RAM (niet het paginabestand) die een proces op enig moment gebruikt.

Geheugen\% vastgelegde bytes in gebruik vertegenwoordigt het virtuele geheugen dat u in Windows hebt. Dit is de combinatie van het paginabestand en ram-geheugen, dat kan worden weergegeven in Taakbeheer op het tabblad Prestaties na het selecteren van geheugen:

Schermopname van het geheugen dat wordt weergegeven in Taakbeheer.

Dit systeem heeft 128 GB RAM-geheugen en een paginabestand van 128 GB, dus het vastgelegde geheugen is 256 GB. U kunt ook in één oogopslag kijken naar het geheugen van de groep Met pagina's en niet-pagina's .

Houd er bij het onderzoeken van geheugenproblemen rekening mee dat beide gebieden (kernel en gebruiker) in feite dezelfde fysieke resource delen. Als de computer weinig geheugen heeft, probeer dan te achterhalen wie deze gebruikt.

We gaan verder met de volgende fysieke resource.

CPU

Bij het oplossen van problemen met CPU-prestaties moet u het besturingssysteem opnieuw splitsen in kernel- en gebruikersmodus. De splitsing is echter gemakkelijker te begrijpen. De gebruikersmodus wordt vertegenwoordigd door een toepassing of service, met inbegrip van de toepassingen die worden uitgevoerd in de gebruikersmodus, die CPU-cycli verbruikt en geen andere hardware dan de CPU omvat. Als u toegang nodig hebt tot hardware, resulteert dit in de kernelmodus omdat het hulpprogramma moet communiceren met stuurprogramma's voor toegang tot GPU, opslag of netwerk.

Hieronder volgen een aantal voorbeelden:

  • SQL Server die een berekening uitvoert = Gebruikersmodus
  • SQL Server die logboekbestanden naar de schijf schrijft = kernelmodus
  • Bestandsserver die toegang heeft tot netwerkshares = kernelmodus

Laten we vervolgens kijken naar de primaire tellers:

Primaire tellers In orde Waarschuwing Kritiek
\Processor Information(*)\% Gebruikerstijd (gebruikersmodus) < 50% 50–80% > 80%
\Processor Information(*)\% Privileged Time (kernelmodus) < 30% 30–50% > 50%
\Processor Information(*)\% niet-actieve tijd >20% >10% <10%

Nogmaals, korte pieken zijn acceptabel, maar als u het gedurende meer dan één minuut ziet, begint u met onderzoeken.

Telkens wanneer een CPU wordt gebruikt, verbruikt de CPU % gebruikerstijd (gebruikersmodus) of % bevoegde tijd (kernelmodus). Als u een hoge CPU-situatie ondervindt (= lage percentage niet-actieve tijd), moet u erachter komen wie deze gebruikt door de volgende secundaire tellers te bekijken:

Secundaire tellers Opmerking
\Process(*)\% gebruikerstijd Houd er rekening mee dat u meer dan één actief proces hebt.
*\Process()\% Bevoegde tijd** Houd er rekening mee dat er slechts beperkte informatie over het systeemproces is. Het systeemproces is normaal gesproken het belangrijkste stuurprogramma voor % Bevoegde tijd als de proceshosts in deze logische constructie worden aangeroepen. Het is echter niet beperkt tot dit.

100% proces\% gebruikerstijd = één CPU. Als u 16 CPU's hebt, is het maximale gebruik dat een proces kan bereiken 1600 %. Zie de volgende schermafbeelding:

Schermopname van een procesmonitorgrafiek voor vier CPU's.

In dit voorbeeld hebt u een hulpprogramma gebruikt om cpu-gebruik (% gebruikerstijd) te simuleren. U hebt het hulpprogramma beperkt tot uitvoering op slechts vier CPU's (CPU's 12, 13, 14 en 15). Zodra vier threads actief zijn, wordt duidelijk hoe alle CPU's 100% bereiken terwijl de toepassing zelf (CPU-stress) 400% bereikt. In dit voorbeeld ziet u de relatie tussen het CPU-gebruik van CPU-stress en de CPU-belasting van de CPU's waarop de toepassing is beperkt. Het tot stand brengen van dit soort relaties helpt volledig inzicht te hebben in de onderliggende processen.

Dit brengt ons naar het laatste fysieke object.

Netwerk

Omdat Performance Monitor een lokaal hulpprogramma is, kunt u alleen basisinformatie uit het netwerk ophalen. De volgende tellers zijn echter nog steeds nuttig:

Primaire tellers In orde Waarschuwing Kritiek
\Network Interface(*)\Totaal aantal bytes per seconde < 50% 50–80% > 80%
\Network Interface(*)\Bytes Verzonden per seconde * * *
\Network Interface(*)\Bytes Ontvangen per seconde * * *

Notitie

Meer informatie voor cellen die zijn gemarkeerd met stersymbolen (*): de werkbelasting van \Network Interface(*)\Bytes Sent/sec en \Network Interface(*)\Bytes Received/sec moet afhankelijk zijn van de rol van de server. Het aantal verzonden bytes per seconde is bijvoorbeeld meestal hoger dan het aantal ontvangen bytes per seconde op een streamingserver. Het aantal ontvangen bytes per seconde is daarentegen over het algemeen hoger dan de bytes die per seconde worden verzonden op een Back-upserver die een back-up uitvoert.

De waarden zijn gerelateerd aan de snelheid van de netwerkkaart en u moet de berekening uitvoeren. Als u dit doet, moet u er rekening mee houden dat de netwerksnelheid wordt gemeten in bits en 8 bits = 1 byte. Als u dus een netwerkkaart van 1 GB hebt, kan uw doorvoer 125 MB per seconde bereiken.

Hoewel het bytestotaal per seconde helpt u inzicht te krijgen in het totale gebruik van uw netwerkkaart, kunnen de andere twee tellers u helpen weten of u meer gegevens ontvangt of verzendt. Als u deze informatie hebt, kunt u deze vergelijken met het verwachte gedrag. Als u uw netwerk wilt onderzoeken, is er een andere toolset nodig, omdat u end-to-end-traceringen van beide zijden nodig hebt om het netwerkgedrag volledig te begrijpen.

Conclusie

Deze scenariohandleiding eindigt met de uitsplitsing en fysieke onderdelen van een Windows-systeem. Wanneer u een knelpunt heeft op fysieke onderdelen, ondervindt uw systeem problemen. En dit heeft ook invloed op uw toepassing.

We hopen dat deze scenariohandleiding u kan helpen om basiskennis te krijgen van Performance Monitor en hoe u uw systeem voorbereidt op een 'black box'-opname, zoals een flightrecorder. Als u meer hulp nodig hebt bij het analyseren van de gegevens, kunt u contact met ons opnemen door een ondersteuningsticket te openen.