RAM, virtueel geheugen, paginabestand en geheugenbeheer in Windows

Van toepassing op: Windows 7 Service Pack 1, Windows Server 2012 R2
Origineel KB-nummer: 2160852

Samenvatting

Dit artikel bevat basisinformatie over de implementatie van virtueel geheugen in 32-bits versies van Windows.

In moderne besturingssystemen zoals Windows verwijzen toepassingen en veel systeemprocessen altijd naar geheugen met behulp van virtuele geheugenadressen. Virtuele geheugenadressen worden automatisch door de hardware omgezet in echte (RAM)-adressen. Alleen kernonderdelen van de kernel van het besturingssysteem omzeilen deze adresomzetting en gebruiken rechtstreeks echte geheugenadressen.

Virtueel geheugen wordt altijd gebruikt, zelfs wanneer het geheugen dat is vereist voor alle actieve processen niet groter is dan het volume ram-geheugen dat op het systeem is geïnstalleerd.

Processen en adresruimten

Alle processen (bijvoorbeeld uitvoerbare toepassingen) die worden uitgevoerd onder 32-bits versies van Windows, worden toegewezen aan virtuele geheugenadressen (een virtuele adresruimte), variërend van 0 tot 4.294.967.295 (2*32-1 = 4 GB), ongeacht hoeveel RAM-geheugen er op de computer is geïnstalleerd.

In de standaardconfiguratie van Windows wordt 2 gigabyte (GB) van deze virtuele adresruimte aangewezen voor het privégebruik van elk proces en wordt de andere 2 GB gedeeld tussen alle processen en het besturingssysteem. Normaal gesproken gebruiken toepassingen (bijvoorbeeld Kladblok, Word, Excel en Acrobat Reader) slechts een fractie van de 2 GB privéadresruimte. Het besturingssysteem wijst RAM-paginaframes alleen toe aan de virtuele geheugenpagina's die worden gebruikt.

Physical Address Extension (PAE) is de functie van de Intel 32-bits architectuur waarmee het adres van het fysieke geheugen (RAM) wordt uitgebreid tot 36 bits. PAE wijzigt niet de grootte van de virtuele adresruimte (die op 4 GB blijft), maar alleen het volume van het werkelijke RAM-geheugen dat door de processor kan worden aangepakt.

De vertaling tussen het 32-bits adres van het virtuele geheugen dat wordt gebruikt door de code die in een proces wordt uitgevoerd en het 36-bits RAM-adres wordt automatisch en transparant verwerkt door de computerhardware volgens vertaaltabellen die worden onderhouden door het besturingssysteem. Elke pagina met virtueel geheugen (32-bits adres) kan worden gekoppeld aan elke fysieke RAM-pagina (36-bits adres).

In de volgende lijst wordt beschreven hoeveel RAM-geheugen de verschillende Windows-versies en -edities ondersteunen (vanaf mei 2010):

Windows-versie RAM
Windows NT 4.0 4 GB
Windows 2000 Professional 4 GB
Windows 2000 Standard Server 4 GB
Windows 2000 Advanced Server 8 GB
Windows 2000 Datacenter Server 32 GB
Windows XP Professional 4 GB
Windows Server 2003 Web Edition 2 GB
Windows Server 2003 Standard Edition 4 GB
Windows Server 2003 Enterprise Edition 32 GB
Windows Server 2003 Datacenter Edition 64 GB
Windows Vista 4 GB
Windows Server 2008 Standard 4 GB
Windows Server 2008 Enterprise 64 GB
Windows Server 2008 Datacenter 64 GB
Windows 7 4 GB

Wisselbestand

RAM is een beperkte resource, terwijl voor de meeste praktische doeleinden virtueel geheugen onbeperkt is. Er kunnen veel processen zijn en elk proces heeft een eigen 2 GB aan persoonlijke virtuele adresruimte. Wanneer het geheugen dat wordt gebruikt door alle bestaande processen het beschikbare RAM-geheugen overschrijdt, verplaatst het besturingssysteem pagina's (4-kB-stukken) van een of meer virtuele adresruimten naar de harde schijf van de computer. Dit maakt dat RAM-frame vrij voor ander gebruik. In Windows-systemen worden deze uitgepaginade pagina's opgeslagen in een of meer bestanden (Pagefile.sys bestanden) in de hoofdmap van een partitie. Elke schijfpartitie kan een dergelijk bestand hebben. De locatie en grootte van het paginabestand worden geconfigureerd in Systeemeigenschappen (klik op Geavanceerd, klik op Prestaties en klik vervolgens op de knop Instellingen ).

Gebruikers vragen vaak hoe groot moet ik het paginabestand maken? Er is geen enkel antwoord op deze vraag, omdat dit afhankelijk is van de hoeveelheid geïnstalleerde RAM-geheugen en de hoeveelheid virtueel geheugen die deze workload nodig heeft. Als er geen andere informatie beschikbaar is, is de gebruikelijke aanbeveling van 1,5 keer het geïnstalleerde RAM-geheugen een goed uitgangspunt. Op serversystemen wilt u doorgaans voldoende RAM-geheugen hebben, zodat er nooit een tekort is en het paginabestand niet wordt gebruikt. Op deze systemen kan het geen nuttig doel zijn om een groot paginabestand te onderhouden. Aan de andere kant, als er voldoende schijfruimte is, veroorzaakt het onderhouden van een groot paginabestand (bijvoorbeeld 1,5 keer het geïnstalleerde RAM-geheugen) geen probleem en hoeft u zich geen zorgen te maken over hoe groot het bestand moet worden gemaakt.

Prestaties, architectuurlimieten en RAM

Op elk computersysteem nemen de prestaties af naarmate de belasting toeneemt (het aantal gebruikers, het volume van het werk), maar op een niet-lineaire manier. Elke toename van de belasting of vraag, na een bepaald punt, veroorzaakt een aanzienlijke afname van de prestaties. Dit betekent dat sommige resources een kritieke voorraad hebben en een knelpunt zijn geworden.

Op een bepaald moment kan de resource met een tekort niet worden verhoogd. Dit betekent dat een architectuurlimiet is bereikt. Enkele vaak gerapporteerde architectuurlimieten in Windows zijn onder andere:

  • 2 GB gedeelde virtuele adresruimte voor het systeem (kernel)
  • 2 GB privéruimte voor virtueel adres per proces (gebruikersmodus)
  • 660 MB PTE-opslag van het systeem (Windows Server 2003 en eerder)
  • 470 MB aan opslag in paginagroep (Windows Server 2003 en eerder)
  • 256 MB aan opslag in niet-wisselgroepen (Windows Server 2003 en eerder)

Dit geldt specifiek voor Windows Server 2003, maar dit kan ook van toepassing zijn op Windows XP en Windows 2000. Windows Vista, Windows Server 2008 en Windows 7 delen deze architectuurlimieten echter niet allemaal. De limieten voor gebruikers- en kernelgeheugen (getallen 1 en 2 hier) zijn hetzelfde, maar kernelresources zoals PTE's en verschillende geheugengroepen zijn dynamisch. Deze nieuwe functionaliteit maakt zowel wisselgeheugen als niet-paginageheugen mogelijk. Hierdoor kunnen OOK PTE's en sessiepools groter worden dan de limieten die eerder zijn besproken, tot het punt waarop de hele kernel is uitgeput.

Vaak gevonden en geciteerde verklaringen, zoals de volgende:

Met een Terminal Server wordt de 2 GB aan gedeelde adresruimte volledig gebruikt voordat 4 GB RAM wordt gebruikt.

Dit kan in sommige gevallen waar zijn. U moet echter uw systeem controleren om te weten of ze van toepassing zijn op uw specifieke systeem of niet. In sommige gevallen zijn deze verklaringen conclusies van specifieke Windows NT 4.0- of Windows 2000-omgevingen en niet noodzakelijkerwijs van toepassing op Windows Server 2003. Er zijn belangrijke wijzigingen aangebracht in Windows Server 2003 om de kans te verkleinen dat deze architectuurlimieten daadwerkelijk in de praktijk worden bereikt. Sommige processen die zich in de kernel bevinden, zijn bijvoorbeeld verplaatst naar niet-kernelprocessen om het geheugen te verminderen dat wordt gebruikt in de gedeelde virtuele adresruimte.

Ram- en virtueel geheugengebruik bewaken

Prestatiemeter is het belangrijkste hulpmiddel voor het bewaken van systeemprestaties en voor het identificeren van de locatie van het knelpunt. Als u Prestatiemeter wilt starten, klikt u op Start, klikt u op Configuratiescherm, klikt u op Systeembeheer en dubbelklikt u vervolgens op Prestatiemeter. Hier volgt een overzicht van enkele belangrijke tellers en wat ze u vertellen:

  • Geheugen, vastgelegde bytes: deze teller is een meting van de vraag naar virtueel geheugen.

    Hier ziet u hoeveel bytes zijn toegewezen door processen en waaraan het besturingssysteem een RAM-paginaframe of een paginasleuf in het paginabestand heeft toegewezen (of misschien beide). Naarmate vastgelegde bytes groter worden dan het beschikbare RAM-geheugen, neemt paging toe en neemt ook de grootte van het paginabestand dat wordt gebruikt toe. Op een bepaald moment begint pagingactiviteit de prestaties aanzienlijk te beïnvloeden.

  • Proces, werkset _Total: deze teller is een meting van het virtuele geheugen dat actief wordt gebruikt.

    Deze teller laat zien hoeveel RAM-geheugen vereist is, zodat het virtuele geheugen dat voor alle processen wordt gebruikt, zich in HET RAM-geheugen bevindt. Deze waarde is altijd een veelvoud van 4096. Dit is het paginaformaat dat wordt gebruikt in Windows. Naarmate de vraag naar virtueel geheugen toeneemt buiten het beschikbare RAM-geheugen, past het besturingssysteem aan hoeveel van het virtuele geheugen van een proces zich in de werkset bevindt om het beschikbare RAM-gebruik te optimaliseren en paging te minimaliseren.

  • Wisselbestand, %pagefile in gebruik: deze teller is een meting van hoeveel van het paginabestand daadwerkelijk wordt gebruikt.

    Gebruik deze teller om te bepalen of het paginabestand de juiste grootte heeft. Als dit teller 100 bereikt, is het paginabestand vol en werkt alles niet meer. Afhankelijk van de volatiliteit van uw workload wilt u waarschijnlijk dat het paginabestand groot genoeg is, zodat deze niet meer dan 50-075 procent wordt gebruikt. Als een groot deel van het paginabestand wordt gebruikt, kan het hebben van meer dan één op verschillende fysieke schijven de prestaties verbeteren.

  • Geheugen, pagina's per seconde: deze teller is een van de meest verkeerd begrepen metingen.

    Een hoge waarde voor deze teller betekent niet noodzakelijkerwijs dat uw prestatieknelpunt het gevolg is van een tekort aan RAM. Het besturingssysteem gebruikt het pagingsysteem voor andere doeleinden dan het wisselen van pagina's vanwege een te grote hoeveelheid geheugen.

  • Geheugen, pagina-uitvoer per seconde: deze teller laat zien hoeveel virtuele geheugenpagina's per seconde naar het paginabestand zijn geschreven om RAM-paginaframes vrij te maken voor andere doeleinden.

    Dit is de beste teller om te controleren als u vermoedt dat paging uw prestatieknelpunt is. Zelfs als vastgelegde bytes groter zijn dan het geïnstalleerde RAM-geheugen, is er geen significant prestatieprobleem als de uitvoer van pagina's per seconde laag of nul is.

  • Geheugen, cachebytes, geheugen, pool niet-pagina-bytes, geheugen, pool pagina-bytes, geheugen, totaal aantal bytes systeemcode, geheugen, totaal aantal bytes van systeemstuurprogramma:

    De som van deze tellers is een maateenheid voor hoeveel van de 2 GB van het gedeelde deel van de virtuele adresruimte van 4 GB daadwerkelijk wordt gebruikt. Gebruik deze om te bepalen of uw systeem een van de eerder besproken architectuurlimieten bereikt.

  • Geheugen, beschikbare MBytes: met deze teller wordt gemeten hoeveel RAM er beschikbaar is om te voldoen aan de vraag naar virtueel geheugen (nieuwe toewijzingen of voor het herstellen van een pagina vanuit het paginabestand).

    Wanneer ram-geheugen een tekort heeft (bijvoorbeeld vastgelegde bytes is groter dan het geïnstalleerde RAM-geheugen), probeert het besturingssysteem een bepaald deel van het geïnstalleerde RAM-geheugen beschikbaar te houden voor onmiddellijk gebruik door virtuele geheugenpagina's die niet actief worden gebruikt naar het paginabestand te kopiëren. Daarom zal deze teller niet nul bereiken en is niet noodzakelijkerwijs een goede indicatie van of uw systeem een tekort aan RAM heeft.

Verwijzingen

Extensies voor adresvensters