Zo haal je het maximale uit je pc-geheugen

Vraag iemand over hoeveel geheugen zijn Windows-systeem beschikt en hij deelt je prompt de hoeveelheid RAM mee. Toch is dat maar een deel van het verhaal, want intern werkt Windows (ook) met virtueel geheugen. Tijd voor een lesje geheugenbeheer.

1. Maximaal geheugen

‘RAM bijprikken’ is een veelgehoord advies om je systeem sneller te doen draaien. Meer fysiek geheugen kan inderdaad zinvol of zelfs aangewezen zijn, maar of dat nodig is, hangt van diverse factoren af. Zo moet je weten dat standaard geen enkel Windows 32-bits systeem (x86) meer dan 4 GB RAM (random access memory) kan aanspreken.

Zowat alle moderne computersystemen hebben echter een 64-bits processor aan boord en daar kan je dus een 64-bits besturingssysteem op draaien. 64 Bit versus 32 bit lijkt misschien een bescheiden verdubbeling, maar het is véél meer: zo’n processor kan 16 EB (exabyte), oftewel meer dan 17 miljard GB adresseren. In de praktijk blijken de limieten voor Windows 64-bits versies echter heel wat lager te liggen.

Een mooi overzicht vind je op de website van Microsoft. Om je alvast een idee te geven: 8 GB voor Windows 7 Home Basic, 16 GB voor Windows 7 Home Premium en 192 GB voor de duurdere Windows 7-varianten. Windows 8 blijkt iets guller: 128 GB voor de standaard versie, 512 GB voor Windows 8 Professional en Enterprise. Nu weet je dus meteen hoeveel RAM je maximaal kunt voorzien voor je 64-bits systeem, mits je moederbord de gewenste capaciteit ondersteunt.

 

2. Meer beperkingen

De ‘officiële’ limiet voor Windows 32 bit ligt dus op 4 GB RAM. De werkelijkheid blijkt echter nog weerbarstiger. Zo beschikt een van onze testapparaten met 32-bits Windows 8 Pro over 6 GB RAM. Toegegeven, overkill voor dit systeem, maar wat blijkt: in het systeemvenster lezen we bij Geïnstalleerd geheugen: ‘6,00 GB (3,00 GB beschikbaar)’. 3 GB dus en geen 4 GB! Dat kan kloppen, want ook allerlei hardwarecomponenten, zoals de grafische kaart en de netwerkadapter, hebben geheugen nodig en aangezien Windows 32 bit niet weet hoe het het geheugengebied boven de 4GB-grens moet aanspreken, wordt ook dat geheugen binnen het 4GB-gebied gemapt. Met als gevolg: minder ram beschikbaar voor Windows en je applicaties. Afhankelijk van je systeem kan dat al snel 1 GB minder beschikbaar ram betekenen!

Wil je weten hoeveel ram aan hardware wordt opgeofferd, open dan het Windows taakbeheer (via Ctrl+Shift+Esc), ga naar het tabblad Prestaties en klik op Broncontrole. Om uit te vissen welke hardware hiervoor precies verantwoordelijk is, start je het Windows Apparaatbeheer op (devmgmt.msc), ga je naar het tabblad Beeld, stip je Bronnen op verbinding aan en klik je de rubriek Geheugen open. Je zal merken: alle hardware bevindt zich op je 32-bits systeem binnen de 4GB-limiet (in hexadecimale notatie is dat FFFFFFFF).

 

© PXimport

 

 

3. 4GB en verder

Heb je meer dan 4 GB nodig, dan zit er blijkbaar niets anders op dan een 64-bits systeem te draaien. Toch kan ook een 32-bits systeem met een trucje boven de 4GB-grens uitkomen. Dat trucje luistert naar de naam PAE, wat staat voor Physical Address Extension. Veel processors (vanaf de Intel Pentium Pro) beschikken namelijk over 36 adreslijnen in plaats van 32, waardoor in principe een geheugenruimte tot 64 GB beschikbaar komt. Voorwaarde is wel dat zowel de processor als het besturingssysteem met PAE overweg kunnen.

In Windows 32 bit activeer je PAE met het volgende opdrachtregelcommando: bcdedit /set pae forceenable (uitgevoerd als administrator). Met het commando bcdedit zonder meer lees je de actieve parameters af. Mochten er zich nadien onverhoopt (stabiliteits)problemen voordoen, dan schakel je PAE als volgt weer uit: bcdedit /set pae forcedisable.

Verwacht in elk geval niet te veel van PAE: Windows laat je (toepassingen) maar in zeer beperkte mate toe van dit extra geheugen gebruik te maken. We zijn er met behulp van deze instructies bijvoorbeeld wel in geslaagd onder Windows 7 32 bit een tool als Gavotte RAMDisk een virtuele schijf in het RAM-gebied boven de 4 GB te laten creëren en die, ingesteld als Fixed disk, als opslaglocatie voor het wisselbestand van Windows te laten fungeren. Echter, dat lukt ons dan weer niet op een Windows 8 32-bit apparaat.

 

4. Wisselbestand

De moraal van ons verhaal is duidelijk: afgezien van eventuele PAE-experimenten heeft het voor een 32-bits besturingssysteem weinig zin om meer dan 4G RAM te installeren. Dan blijft de vraag: met hoeveel RAM is je systeem het meest gebaat? Moet je kost wat kost tot de hoogst mogelijke hoeveelheid RAM gaan – een duur grapje op een 64-bits systeem – of kan je gerust met wat minder volstaan? Om daar een zinvol antwoord op te geven, is enig inzicht nodig in de manier waarop Windows omgaat met geheugen.

We beginnen onze ontdekkingstocht in het Windows taakbeheer, op het tabblad Prestaties, onder het kopje Geheugen. Daar vind je het item Toegewezen terug, met twee waarden. De tweede waarde geeft de totale hoeveelheid beschikbaar geheugen aan. In ons voorbeeld is dat 5886 MB, terwijl op diezelfde afbeelding het fysieke geheugen (RAM, dus) niet hoger komt dan slechts de helft daarvan: 2943 MB. De verklaring ligt in het zogenoemde wisselbestand van Windows, een (niet zo’n juiste) vertaling van page file (of paging file).

Hoe groot dat wisselbestand is – of die wisselbestanden, want het kunnen er ook meer zijn – kom je te weten via het Configuratiescherm > Systeem en beveiliging Systeem. Hier open je Geavanceerde systeeminstellingen, waarna je de bovenste knop Instellingen indrukt en het tabblad Geavanceerd opent. De uitleg die je hier terugvindt, maakt meteen duidelijk waarvoor dat wisselbestand dient: “Een wisselbestand is een gedeelte van de harde schijf dat Windows gebruikt alsof het RAM-geheugen is”. Windows zelf heeft het hier over ‘virtueel geheugen’. De totale hoeveelheid geheugen die Windows en je programma’s kunnen aanspreken is dus de som van het fysieke en het virtuele geheugen. Later komen we nog terug op (de optimale grootte van) dit wisselbestand.

 

© PXimport

 

5. Het virtuele geheugen

Bij oudere Windows-versies werden complete processen in dat wisselbestand opgeslagen, met name wanneer er effectief een tekort aan RAM was voor andere toepassingen. Zodra die processen weer nodig waren, verhuisden die opnieuw naar het RAM – vandaar de naam 'wisselbestand'. Modernere Windows-versies gaan echter efficiënter om met dit virtuele geheugen: die maken het mogelijk dat slechts delen van zo’n proces naar het schijfgeheugen worden verplaatst, de zogenoemde pages of geheugenpagina’s. Dat kan bovendien ‘preventief’ gebeuren en dus niet alleen wanneer er een RAM-tekort is. Zulke pagina’s hebben een vaste grootte, onder Windows is dat normaliter 4 kB.

Een belangrijke taak van de geheugenmanager van Windows is die geheugenpagina’s te verplaatsen tussen het RAM en het wisselbestand. Dat is een heel complex proces, dat we hier vereenvoudigd proberen te beschrijven. Om een en ander wat concreter te maken, is het goed dat je er tegelijk een paar informatieve toepassingen bijhaalt. Je vindt al enige feedback in de Windows Broncontrole (open het Taakbeheer, ga naar het tabblad Prestaties en klik op Broncontrole), maar wie details niet schuwt, klopt beter aan bij het externe tooltje RAMMap, met name op het tabblad Use Counts.

Een belangrijk onderdeel is alvast de zogeheten werkset, een verzameling geheugenpagina’s in RAM die door een proces actief worden gebruikt. Aangezien een proces niet op elk moment al zijn geheugen gebruikt, zal de Windows geheugenmanager sommige pagina’s uit die werkset halen en naar een standby-lijst (met diverse prioriteiten) verplaatsen. De manager slaat dan wel eerst nog een kopie van die pagina’s op in het wisselbestand. Blijven die pagina’s in de standby-lijst een tijdlang onaangesproken, dan kan de manager beslissen die naar de free page-lijst te verhuizen om ze dan uiteindelijk in de zeroed page lijst te droppen. Je raadt het al: het is deze laatste lijst die andere processen het eerst aanspreken wanneer ze nieuwe geheugenpagina’s nodig hebben. Wanneer echter een proces alsnog een van zijn geheugenpagina’s nodig heeft die zich intussen al in de standby-lijst bevindt, dan spreken we van een ‘zachte fout’. Blijkt die pagina daar evenmin te vinden, dan wordt het wisselbestand aangesproken om die pagina toch weer in de werkset van het proces te krijgen, een fenomeen dat zich als een ‘harde fout’ laat omschrijven.

 

© PXimport

 

6. Hoe groot is het ideale wisselbestand?

Je weet inmiddels dat de totale hoeveelheid geheugen is samengesteld uit RAM en het wisselbestand. Een vraag die nogal wat gebruikers bezighoudt is: wat is de optimale grootte van dat wisselbestand? In tegenstelling tot wat je wel vaker op het web leest, is het antwoord niet eenduidig. Dat hangt namelijk mede af van hoe je het systeem gebruikt en welke toepassingen je geregeld draait.

Een bruikbare methode om de optimale – of minstens een geschikte – grootte voor je wisselbestand vast te leggen is de volgende. Start alle toepassingen op die je wel vaker gebruikt en laat die draaien. Download de gratis tool Process Explorer, pak het zip-archief uit en start het programma op. Open het menu View en selecteer System Information, waarna je het tabblad Memory opent. Je herkent hier (inmiddels) een aantal begrippen, zoals physical memory, paging lists, zeroed, free en standby.

Ons interesseert nu echter vooral de rubriek Commit Charge, met de items Current, Limit en Peak. Merk op dat Current (in kB) overeenkomt met de grafiek System Commit (in MB). Dit getal duidt namelijk de hoeveelheid geheugen aan die momenteel in gebruik is. Limit wijst op de maximale hoeveelheid beschikbaar geheugen, zowel afkomstig uit het ram als uit het wisselbestand. Belangrijk evenwel is ook de piekwaarde: de maximale hoeveelheid geheugen die tijdens deze Windows-sessie werd aangesproken. Er valt heel wat voor te zeggen om je wisselbestand(en) in te stellen op minstens deze piekwaarde, verminderd met de totale hoeveelheid geïnstalleerd RAM.

Stel, je beschikt over 4 GB RAM en de piekwaarde ligt op 6 GB, dan is 2 GB (6-4) een zinvolle (minimum)waarde voor je wisselbestand(en). Een nog groter wisselbestand kan evenwel geen kwaad, alleen verspil je dan extra hardeschijfruimte. Zit je behoorlijk krap qua schijfruimte en blijkt de piekwaarde nauwelijks of nooit de aanwezige hoeveelheid RAM te overstijgen, dan voel je wellicht de neiging om helemaal géén wisselbestand te creëren. Dat is echter niet zo’n goed idee, al was het maar omdat Windows bij een systeemcrash dan geen geheugendump kan wegschrijven (naar het wisselbestand).

 

© PXimport

 

7. Wisselbestand aanpassen

Heb je eenmaal een geschikte waarde voor je wisselbestand(en) bepaald, dan weet je inmiddels waar je moet aankloppen om die waarde aan te passen (zie onder het tussenkopje Wisselbestand). Op het tabblad Geavanceerd druk je vervolgens op de knop Wijzigen. De kans is groot dat zowat alle opties hier ‘uitgegrijsd’ staan. Dat komt omdat er een vinkje staat bij Wisselbestandsgrootte voor alle stations automatisch beheren. Dat betekent zoveel als: laat Windows maar zelf beslissen over de wisselbestandsgrootte (voor elk station). Wanneer je dit vinkje verwijdert, kan je wel zelf een en ander instellen. Normaliter laat je het wisselbestand op de Windows-partitie terechtkomen (C:, in de meeste gevallen). Alleen wanneer je een tweede fysieke schijf hebt aangesloten die minstens even snel is als de systeemschijf kan je overwegen het wisselbestand daar te plaatsen. Je hoeft slechts de optie Aangepaste grootte aan te stippen en een geschikte waarde (in MB) in te vullen bij Begingrootte en Maximale grootte. Zo zou je bij Begingrootte in ons voorbeeld 4000 kunnen invullen en bij Maximale grootte bijvoorbeeld het dubbele daarvan. Of je vult bij beide exact dezelfde grootte in (6000, bijvoorbeeld). Het voordeel van tweemaal dezelfde waarde is dat het wisselbestand dan constant blijft en niet wordt gefragmenteerd; het nadeel is dat het niet kan meegroeien met de behoefte van het moment.

Heb je voor een ‘dynamisch’ wisselbestand gekozen, dan kan je dat principe mooi in werking zien met het tooltje Testlimit (zowel een 32-bits als een 64-bits versie). Start een paar keren na elkaar het commando testlimit –m op, telkens vanuit een nieuw opdrachtregelvenster, en houd intussen goed de rubriek Commit Charge in de gaten. Je zal zien dat Windows de grootte van het wisselbestand (en dus ook de Limit) aanpast in functie van de actuele behoefte. Het commando testlimit –m zorgt er namelijk bij elke ronde voor dat er 2 GB extra geheugen wordt toegewezen. Overigens volstaat het zo’n opdrachtregelvenster af te sluiten om het ingepalmde geheugen weer vrij te geven.

Het lijkt er dus wel op dat een (dynamisch of voldoende groot) wisselbestand de oplossing is voor eventueel geheugentekort. Tot op zekere hoogte is dat misschien wel zo, maar vergeet niet dat het wisselbestand op schijf is opgeslagen en dus een veel tragere toegangstijd heeft dan RAM. De geheugenmanager zal ook voortdurend in de weer moeten zijn om geheugenpagina’s tussen ram en wisselbestand over te hevelen. Krijg je herhaaldelijk waarschuwingen over mogelijk geheugentekort, dan doe je er in bijna alle gevallen beter aan effectief fysiek geheugen bij te prikken.

Deel dit artikel
Voeg toe aan favorieten