Delen via


PoolMon gebruiken om een geheugenlek in de kernelmodus te vinden

Als u vermoedt dat er een geheugenlek in de kernelmodus is, kunt u het hulpprogramma PoolMon gebruiken om te bepalen welke pooltag aan het lek is gekoppeld.

PoolMon (Poolmon.exe) bewaakt het geheugengebruik van de pool per pooltagnaam. Dit hulpprogramma is opgenomen in de Windows Driver Kit (WDK). Zie PoolMon voor meer informatie.

GFlags-poolinstellingen

Sommige GFlags-instellingen, zoals Speciale pool, hebben invloed op de wijze waarop geheugenpools worden gebruikt. Zie GFlags en Speciale pool configureren voor meer informatie.

PoolMon gebruiken

In de PoolMon-koptekst worden de totale gecachede en niet-gecachede poolbytes weergegeven. In de kolommen wordt het gebruik van de pool weergegeven voor elke pooltag. De weergave wordt elke paar seconden automatisch bijgewerkt. Voorbeeld:

Memory: 16224K Avail: 4564K PageFlts: 31 InRam Krnl: 684K P: 680K
Commit: 24140K Limit: 24952K Peak: 24932K Pool N: 744K P: 2180K

## Tag   Type  Allocs       Frees        Diff    Bytes       Per Alloc


CM    Paged   1283  ( 0)  1002  ( 0)   281  1377312   ( 0)  4901
Strg  Paged  10385 ( 10)  6658  ( 4)  3727   317952 ( 512)    85
Fat   Paged   6662  ( 8)  4971  ( 6)  1691   174560 ( 128)   103
MmSt  Paged    614  ( 0)   441  ( 0)   173    83456   ( 0)   482 

PoolMon heeft opdrachtsleutels waarmee de uitvoer wordt gesorteerd op basis van verschillende criteria. Selecteer de letter die bij elke opdracht hoort om de gegevens opnieuw te sorteren. Het duurt enkele seconden voordat elke opdracht werkt.

De sorteeropdrachten zijn onder andere:

Opdrachttoets Operatie
P Hiermee beperkt u de weergegeven tags tot niet-gepagineerde poolbytes, gepagineerde poolbytes of beide. Herhaaldelijk op P drukken doorloopt elk van deze opties, in die volgorde.
B Hiermee sorteert u tags op maximum bytegebruik.
M Hiermee sorteert u tags op maximale bytetoewijzingen.
T Hiermee sorteert u tags alfabetisch op tagnaam.
E Zorgt ervoor dat de weergave de pagina- en niet-paginatotalen onderaan opneemt.
A Sorteert tags op allocatiegrootte.
F Sorteert tags op vrije bewerkingen.
S Sorteert tags op het verschil tussen toewijzingen en vrijgaves.
Q Sluit PoolMon af.

Stuurprogrammanamen weergeven in PoolMon

U kunt de parameter PoolMon/g gebruiken om de namen van Windows-onderdelen en veelgebruikte stuurprogramma's weer te geven die elke pooltag toewijzen. Als u een probleem ondervindt in toewijzingen met een bepaalde tag, helpt deze functie u bij het identificeren van het problematische onderdeel of stuurprogramma.

De onderdelen en stuurprogramma's worden vermeld in de kolom Mapped_Driver, de meest rechtse kolom in de weergave. De gegevens voor de kolom Mapped_Driver zijn afkomstig uit pooltag.txt, een bestand dat is geïnstalleerd met de WDK.

De volgende opdracht toont het gebruik van de parameter /g om de kolom Mapped_Driver toe te voegen.

poolmon /g "C:\Program Files (x86)\Windows Kits\10\Debuggers\x64\triage\pooltag.txt"

Specifieke pools weergeven

Gebruik de parameter /i om pooltags weer te geven die beginnen met een specifieke tekenreeks, bijvoorbeeld Verbergen.

poolmon /iHid? /g "C:\Program Files (x86)\Windows Kits\10\Debuggers\x64\triage\pooltag.txt"

 Memory:33473120K Avail:20055132K  PageFlts:     5   InRam Krnl:10444K P:1843072K
 Commit:15035764K Limit:67027552K Peak:16677444K            Pool N:1023400K P:1955448K
 System pool information
 Tag  Type     Allocs            Frees            Diff       Bytes                 Per Alloc Mapped_Driver

 HidC Paged      1667 (   0)      1659 (   0)        8         896 (          0)         112 [hidclass.sys - HID Class d 
 HidC Nonp      17375 (   0)     17256 (   0)      119       19808 (          0)         166 [hidclass.sys - HID Class d 
 HidP Nonp       1014 (   0)       998 (   0)       16        6704 (          0)         419 [hidparse.sys - HID Parser]

Gebruik het hulpprogramma PoolMon om een geheugenlek te vinden

Hier volgt een methode om een geheugenlek te vinden met het hulpprogramma PoolMon:

  1. Start PoolMon.

  2. Als u hebt vastgesteld dat het lek zich in een niet-gepaginade pool voordoet, selecteert u P één keer. Als u hebt vastgesteld dat deze zich in een gepaginade pool voordoet, selecteert u P twee keer. Als u het niet weet, selecteert u P niet, dus beide soorten pools zijn inbegrepen.

  3. Selecteer B om de weergave te sorteren op maximaal bytegebruik.

  4. Start uw test. Kopieer de uitvoer van het scherm, bijvoorbeeld door een schermopname te maken en op te slaan.

  5. Maak elke half uur een nieuwe schermopname. Door schermopnamen te vergelijken, bepaalt u welke bytes van de tag toenemen.

  6. Stop uw test en wacht enkele uren. Bepaal in deze periode hoeveel van de tag is vrijgemaakt.

Normaal gesproken wijst een toepassing, nadat deze een stabiele status heeft bereikt, geheugen toe en maakt deze geheugen vrij met dezelfde snelheid. Als het geheugen sneller toewijst dan het vrij maakt, neemt het geheugengebruik na verloop van tijd toe. Dit duidt vaak op een geheugenlek.

Het lek verhelpen

Nadat u hebt vastgesteld welke pooltag is gekoppeld aan het lek, hebt u mogelijk alles wat u moet weten over het lek. Als u wilt bepalen welke specifieke instantie van de toewijzingsroutine het lek veroorzaakt, raadpleegt u Het kernelfoutopsporingsprogramma gebruiken om geheugenlekken in de kernelmodus te vinden.