RAM, virtueel geheugen, wisselbestand en geheugenbeheer in Windows
Oorspronkelijk KB-nummer: 2160852
Samenvatting
Dit artikel bevat basisinformatie over de implementatie van het virtuele geheugen in 32-bits versies van Windows.
In moderne besturingssystemen zoals Windows, toepassingen en veel systeemprocessen verwijzen altijd naar geheugen met behulp van virtuele geheugenadressen. Adressen van virtueel geheugen worden automatisch vertaald naar echte (RAM)-adressen door de hardware. 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, krijgen virtuele geheugenadressen (een virtuele adresruimte) toegewezen, variërend van 0 tot 4.294.967.295 (2*32-1 = 4 GB), ongeacht hoeveel RAM op de computer is geïnstalleerd.
In de standaardconfiguratie van Windows worden 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. Toepassingen (bijvoorbeeld Kladblok, Word, Excel en Acrobat Reader) gebruiken doorgaans slechts een fractie van de 2 GB privéadresruimte. Het besturingssysteem wijst alleen RAM-paginaframes toe aan die virtuele geheugenpagina's die worden gebruikt.
Pae (Physical Address Extension) is de functie van de Intel 32-bits architectuur waarmee het RAM-adres (fysiek geheugen) wordt uitgebreid tot 36 bits. PAE wijzigt niet de grootte van de virtuele adresruimte (die 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 virtuele geheugenadres dat wordt gebruikt door de code die in een proces wordt uitgevoerd en het 36-bits RAM-adres wordt automatisch en transparant afgehandeld 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 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 |
Paginabestand
RAM is een beperkte resource, terwijl voor de meeste praktische doeleinden het virtuele geheugen onbeperkt is. Er kunnen veel processen zijn en elk proces heeft een eigen virtuele adresruimte van 2 GB. Wanneer het geheugen dat wordt gebruikt door alle bestaande processen het beschikbare RAM-geheugen overschrijdt, verplaatst het besturingssysteem pagina's (4 kB-onderdelen) van een of meer virtuele adresruimten naar de harde schijf van de computer. Hierdoor wordt het RAM-frame voor ander gebruik vrijgemaakt. In Windows-systemen worden deze uitgevouwen pagina's opgeslagen in een of meer bestanden (Pagefile.sys bestanden) in de hoofdmap van een partitie. Er kan een dergelijk bestand in elke schijfpartitie zijn. De locatie en grootte van het paginabestand zijn 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 deze afhankelijk is van de hoeveelheid geïnstalleerde RAM en hoeveel virtueel geheugen die nodig is voor de workload. Als er geen andere informatie beschikbaar is, is de gebruikelijke aanbeveling van 1,5 keer dat het geïnstalleerde RAM-geheugen een goed uitgangspunt is. Op serversystemen wilt u meestal voldoende RAM hebben, zodat er nooit een tekort is en dat 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 schijfruimte overvloedig is, onderhoudt u een groot paginabestand (bijvoorbeeld 1,5 keer het geïnstalleerde RAM-geheugen) veroorzaakt geen probleem, en dit elimineert ook de noodzaak om u zorgen te maken over hoe groot om het te maken.
Prestatie-, architectuurlimieten en RAM-geheugen
Naarmate de belasting op elk computersysteem toeneemt (het aantal gebruikers, het werkvolume), nemen de prestaties af, maar op een niet-lineaire manier. Elke toename van de belasting of vraag, buiten een bepaald punt, veroorzaakt een aanzienlijke afname van de prestaties. Dit betekent dat een bepaalde resource in kritieke korte levering is en een knelpunt is geworden.
Op een bepaald moment kan de resource die niet beschikbaar is, worden verhoogd. Dit betekent dat er een architectuurlimiet is bereikt. Enkele vaak gerapporteerde architectuurlimieten in Windows zijn onder andere:
- 2 GB gedeelde virtuele adresruimte voor het systeem (kernel)
- 2 GB aan privé-virtuele adresruimte per proces (gebruikersmodus)
- 660 MB aan PTE-systeemopslag (Windows Server 2003 en eerder)
- 470 MB aan gepaginade poolopslag (Windows Server 2003 en eerder)
- 256 MB aan niet-gepageerde poolopslag (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 kernelbronnen zoals PTE's en verschillende geheugengroepen zijn dynamisch. Deze nieuwe functionaliteit maakt zowel gepaginad als niet-paginageheugen mogelijk. Hierdoor kunnen PTE's en sessiegroepen ook groter worden dan de limieten die eerder zijn besproken, tot aan het punt waar de hele kernel is uitgeput.
Veelgebruikte en geciteerde instructies, zoals de volgende:
Met een Terminal Server wordt de 2 GB gedeelde adresruimte volledig gebruikt voordat 4 GB RAM wordt gebruikt.
Dit kan in sommige gevallen waar zijn. U moet uw systeem echter controleren om te weten of ze van toepassing zijn op uw specifieke systeem of niet. In sommige gevallen zijn deze instructies conclusies van specifieke Windows NT 4.0- of Windows 2000-omgevingen en zijn ze 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 in de praktijk worden bereikt. Sommige processen die zich in de kernel bevonden, 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 principehulpprogramma 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 samenvatting van enkele belangrijke tellers en wat ze u vertellen:
Geheugen, vastgelegde bytes: deze teller is een meting van de vraag naar virtueel geheugen.
Dit laat zien hoeveel bytes zijn toegewezen door processen en waaraan het besturingssysteem een RAM-paginaframe of een paginasite in het paginabestand heeft doorgevoerd (of misschien beide). Naarmate vastgelegde bytes groter worden dan het beschikbare RAM-geheugen, neemt paging toe en neemt de grootte van het paginabestand dat wordt gebruikt ook toe. Op een bepaald moment begint paggineringsactiviteit aanzienlijk van invloed te zijn op de prestaties.
Proces, werkset, _Total: Deze teller is een meting van het virtuele geheugen in actief gebruik.
Deze teller laat zien hoeveel RAM vereist is, zodat het virtuele geheugen dat wordt gebruikt voor alle processen in ram-geheugen is. Deze waarde is altijd een veelvoud van 4096, het paginaformaat dat wordt gebruikt in Windows. Naarmate de vraag naar virtueel geheugen groter wordt dan 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 een geschikte grootte heeft. Als deze teller 100 bereikt, is het paginabestand vol en werkt het 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 veel van het paginabestand wordt gebruikt, kan het gebruik van meer dan één op verschillende fysieke schijven de prestaties verbeteren.
Geheugen, pagina's/sec: deze teller is een van de meest verkeerd begrepen metingen.
Een hoge waarde voor deze teller impliceert niet noodzakelijkerwijs dat uw prestatieknelpunt ontstaat door een tekort aan RAM-geheugen. Het besturingssysteem gebruikt het pagingsysteem voor andere doeleinden dan het wisselen van pagina's vanwege te veel geheugen.
Geheugen, pagina-uitvoer per seconde: Deze teller laat zien hoeveel virtuele geheugenpagina's naar het paginabestand zijn geschreven om vrije RAM-paginaframes te maken voor andere doeleinden elke seconde.
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 van onvoldoende RAM als pagina-uitvoer per seconde laag of nul is.
Geheugen, cachebytes, geheugen, niet-paginagebonden bytes, geheugen, gepaginade bytes pool, geheugen, totaal aantal bytes van systeemcode, geheugen, totaal aantal bytes van systeemstuurprogramma:
De som van deze tellers is een meting van 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 architectuurlimieten bereikt die eerder zijn besproken.
Geheugen, beschikbare MBytes: Deze teller meet hoeveel RAM beschikbaar is om te voldoen aan de vereisten voor virtueel geheugen (nieuwe toewijzingen of voor het herstellen van een pagina vanuit het paginabestand).
Wanneer RAM niet beschikbaar is (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 direct gebruik door virtuele geheugenpagina's te kopiëren die niet actief zijn in gebruik naar het paginabestand. Daarom zal deze teller niet nul bereiken en is niet noodzakelijkerwijs een goede indicatie of uw systeem een tekort aan RAM-geheugen heeft.