RAM, virtueel geheugen, wisselbestand en geheugenbeheer in Windows
Van toepassing op: Windows 7 Service Pack 1, Windows Server 2012 R2
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 verwijzen toepassingen en veel systeemprocessen altijd naar geheugen met behulp van virtuele geheugenadressen. Adressen van virtueel geheugen worden automatisch door de hardware omgezet naar 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 vereist is voor alle actieve processen niet groter is dan het ram-geheugenvolume dat op het systeem is geïnstalleerd.
Processen en adresruimten
Aan alle processen (bijvoorbeeld uitvoerbare toepassingen) die worden uitgevoerd onder 32-bits versies van Windows, worden adressen voor virtueel geheugen toegewezen (een virtuele adresruimte), variërend van 0 tot 4.294.967.295 (2*32-1 = 4 GB), ongeacht hoeveel RAM-geheugen 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 fysieke geheugenadres (RAM) wordt uitgebreid naar 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 kan worden aangepakt door de processor.
De vertaling tussen het 32-bits virtuele geheugenadres dat wordt gebruikt door de code die wordt uitgevoerd in een proces en het 36-bits RAM-adres wordt automatisch en transparant verwerkt door de computerhardware volgens vertaaltabellen die door het besturingssysteem worden onderhouden. 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 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 door alle bestaande processen wordt gebruikt, groter is dan het beschikbare RAM-geheugen, verplaatst het besturingssysteem pagina's (stukken van 4 kB) van een of meer virtuele adresruimten naar de harde schijf van de computer. Dit maakt dat RAM-frame vrij voor andere toepassingen. In Windows-systemen worden deze pagina's met 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 ik het wisselbestand moet maken? Er is geen enkel antwoord op deze vraag omdat deze afhankelijk is van de hoeveelheid geïnstalleerd RAM-geheugen en van de hoeveelheid virtueel geheugen die de workload nodig heeft. Als er geen andere informatie beschikbaar is, is de typische 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 wisselbestand niet wordt gebruikt. Op deze systemen kan het geen nuttig doel zijn om een groot wisselbestand te onderhouden. Aan de andere kant, als er veel schijfruimte is, veroorzaakt het onderhouden van een groot wisselbestand (bijvoorbeeld 1,5 keer het geïnstalleerde RAM-geheugen) geen probleem, en dit elimineert ook de noodzaak om u zorgen te maken over hoe groot het is om het te maken.
Prestaties, architectuurlimieten en RAM
Op elk computersysteem nemen de prestaties af naarmate de belasting toeneemt (het aantal gebruikers, het werkvolume), 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 sommige resources een kritiek tekort hebben en een knelpunt zijn geworden.
Op een bepaald moment kan de resource met een kort aanbod niet worden verhoogd. Dit betekent dat er een architecturale limiet is bereikt. Enkele veelgebruikte architecturale limieten in Windows zijn:
- 2 GB gedeelde virtuele adresruimte voor het systeem (kernel)
- 2 GB privé-virtuele adresruimte per proces (gebruikersmodus)
- 660 MB pte-systeemopslag (Windows Server 2003 en eerder)
- 470 MB wisselgroepopslag (Windows Server 2003 en eerder)
- 256 MB aan niet-wisselgroepopslag (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 echter niet allemaal deze architectuurlimieten. De limieten voor gebruikers- en kernelgeheugen (nummers 1 en 2 hier) zijn hetzelfde, maar kernelresources zoals PTE's en verschillende geheugengroepen zijn dynamisch. Deze nieuwe functionaliteit maakt zowel wisselgeheugen als niet-wisselgeheugen mogelijk. Hierdoor kunnen PTA's en sessiepools ook groter worden dan de limieten die eerder zijn besproken, tot het punt waarop de hele kernel is uitgeput.
Vaak gevonden en aanhalingstekens zoals de volgende:
Met een terminalserver wordt de 2 GB gedeelde adresruimte volledig gebruikt voordat 4 GB RAM wordt gebruikt.
Dit kan in sommige gevallen het geval 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 uit specifieke Windows NT 4.0- of Windows 2000-omgevingen en zijn ze niet noodzakelijkerwijs van toepassing op Windows Server 2003. Er zijn aanzienlijke wijzigingen aangebracht in Windows Server 2003 om de kans te verkleinen dat deze architecturale limieten 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 belangrijkste hulpprogramma voor het bewaken van de 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, toegewezen bytes: dit 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 paginasleuf in het wisselbestand (of misschien beide) heeft doorgevoerd. Naarmate vastgelegde bytes groter worden dan het beschikbare RAM-geheugen, neemt de paging toe en neemt de gebruikte wisselbestandsgrootte ook toe. Op een bepaald moment begint pagingactiviteit de prestaties aanzienlijk te beïnvloeden.
Proces, Werkset, _Total: Dit item is een meting van het virtuele geheugen dat actief wordt gebruikt.
Deze teller laat zien hoeveel RAM-geheugen is vereist, zodat het virtuele geheugen dat voor alle processen wordt gebruikt, zich in HET RAM-geheugen bevindt. 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 paginering te minimaliseren.
Wisselbestand, %pagefile in gebruik: Dit item is een meting van hoeveel van het wisselbestand daadwerkelijk wordt gebruikt.
Gebruik deze teller om te bepalen of het wisselbestand de juiste grootte heeft. Als deze teller 100 bereikt, is het wisselbestand vol en werken de dingen niet meer. Afhankelijk van de volatiliteit van uw workload wilt u waarschijnlijk dat het wisselbestand groot genoeg is, zodat het niet meer dan 50-075 procent wordt gebruikt. Als veel van het wisselbestand wordt gebruikt, met meer dan één bestand op verschillende fysieke schijven, kunnen de prestaties worden verbeterd.
Geheugen, pagina's per seconde: dit item 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-geheugen. Het besturingssysteem gebruikt het pagineringssysteem voor andere doeleinden dan het wisselen van pagina's vanwege te veel geheugen.
Geheugen, pagina-uitvoer per seconde: dit teller laat zien hoeveel virtuele geheugenpagina's naar het wisselbestand zijn geschreven om RAM-paginaframes voor andere doeleinden elke seconde vrij te maken.
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 vanwege onvoldoende RAM als de pagina-uitvoer/sec meestal laag of nul is.
Geheugen, cachebytes, geheugen, niet-wisselbytes, geheugen, wisselbytes van 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 eerder besproken architecturale limieten bereikt.
Geheugen, beschikbare MBytes: Met deze teller wordt gemeten hoeveel RAM beschikbaar is om te voldoen aan de vereisten voor virtueel geheugen (nieuwe toewijzingen of voor het herstellen van een pagina uit het wisselbestand).
Wanneer het RAM-geheugen te kort 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 het wisselbestand. Daarom bereikt deze teller niet nul en is niet noodzakelijkerwijs een goede indicatie of uw systeem te weinig RAM-geheugen heeft.