Virtueel geheugen is een van die dingen die ten grondslag liggen aan moderne besturingssystemen, maar meestal denk je er niet echt over na, tenzij je een probleem hebt. Linux-distributies vragen je om je virtuele geheugenruimte in te stellen (partities verwisselen) tijdens de installatie, maar de meeste beginners weten niet hoe handig dat is.
Hier is alles wat u moet weten over virtueel geheugen op Linux.
Wat is virtueel geheugen?
Virtueel geheugen is een manier om uw geheugen weer te geven dat is geabstraheerd van het fysieke geheugen op uw machine. Het maakt gebruik van zowel je RAM als je opslagruimte, of dat nu op een traditionele harde schijf of een SSD is.
In Linux gebeurt dit op kernel- en hardwareniveau. De CPU heeft een stuk hardware, een Memory Management Unit (MMU) genaamd, die fysieke geheugenadressen omzet in virtuele. Deze adressen zijn onafhankelijk van waar ze zich fysiek op de machine bevinden. Deze adresruimten staan bekend als "pagina's" en kunnen zich in het RAM-geheugen of op uw harde schijf of SSD bevinden. Het besturingssysteem ziet deze adressen als één grote geheugenpool, ook wel een 'adresruimte' genoemd.
Virtueel geheugen profiteert van het feit dat niet al het geheugen dat in theorie wordt gebruikt, altijd wordt gebruikt. Programma's in het geheugen worden opgesplitst in pagina's en de delen die de kernel als onnodig beschouwt, worden "uitgewisseld" of verplaatst naar de harde schijf. Wanneer ze nodig zijn, kunnen ze worden "ingewisseld" of terug in het RAM worden gebracht.
De ruimte die wordt gebruikt voor virtueel geheugen op een schijf staat bekend als 'backing store' of 'swap space'. In de Windows-wereld is het meestal geïmplementeerd als een bestand, ook wel een "swap-bestand" genoemd. Het is ook mogelijk om dit in Linux te doen, maar het is veel gebruikelijker tot gebruik een speciale schijfpartitie.
Swap-bestanden op Linux zijn meestal gereserveerd voor minimale of embedded systemen, en het is gebruikelijk dat de laatste volledig zonder virtueel geheugen werken omdat embedded besturingssystemen klein moeten zijn.
Het resultaat van virtueel geheugen is dat het mogelijk is om grote programma's uit te voeren door meer geheugen te gebruiken dan het fysieke RAM in uw machine, vergelijkbaar met hoe u met een creditcard grote aankopen kunt doen voor meer geld dan u op uw bank heeft account. Net als een creditcard is virtueel geheugen handig wanneer je het nodig hebt, maar je wilt het gebruik ervan niet te veel gebruiken.
Virtueel geheugen stelt ontwikkelaars ook in staat om applicaties te maken zonder te hoeven weten hoe het geheugen van een computer is georganiseerd.
Het belangrijkste nadeel van virtueel geheugen was dat harde schijven langzamer waren dan RAM. Als een machine niet genoeg RAM heeft, kan het systeem eindeloos pagina's in en uit wisselen, een proces dat bekend staat als 'thrashing'. Dit is minder een probleem op moderne pc's met meer RAM en snellere SSD's die mechanische harde schijven verdringen, maar het is nog steeds iets om op te letten van.
Linux Swap Partities
Zoals eerder vermeld, is de gebruikelijke methode voor het instellen van virtueel geheugen op Linux het gebruik van een speciale schijfpartitie. Het installatiehulpprogramma onderzoekt uw hardware en stelt een partitieschema voor dat een swappartitie bevat.
U kunt na de installatie ook swappartities toevoegen. Als u een nieuwe partitie aan een bestaande schijf wilt toevoegen, moet u: gebruik een niet-destructieve partitietool zoals GParted. Zorg ervoor dat je "Linux swap" hebt geselecteerd als het bestandssysteem voor je partitie.
Maak een back-up van belangrijke gegevens voordat u uw schijf opnieuw partitioneert.
Nadat u uw partitie hebt gemaakt, gebruikt u de opdracht mkswap om uw partitie te formatteren.
sudo mkswap /dev/sdX
Nu moet je je. aanpassen /etc/fstab als root om je swappartitie toe te voegen. Deze regel, toegevoegd aan het bestand, stelt een swappartitie in die bij het opstarten moet worden gemount:
/dev/sdX geen swap standaard 0 0
Gebruik nu de ruilen commando om je nieuwe swap-ruimte te activeren, waarbij sdX de naam is van je swap-partitie:
sudo swapon /dev/sdX
Wisselbestanden gebruiken op Linux
Het is gemakkelijk om een wisselbestand instellen in Linux met behulp van de opdrachtregel. Misschien wil je dit doen als je je schijf niet opnieuw wilt partitioneren of bewerken /etc/fstab. Een methode is om te gebruiken fallocate:
Om bijvoorbeeld een wisselbestand van 2 GB te maken:
sudo fallocate -l 2G /path/to/swapfile
Als alternatief kunt u de opdracht dd gebruiken om het wisselbestand te maken.
sudo dd als=/dev/nul van=/path/to/swapfile bs=1024 tellen=2048
Zorg ervoor dat u het dd-commando correct gebruikt, omdat het verkeerd krijgen van de infile en outfile gegevensverlies kan veroorzaken. fallocate heeft om deze reden de voorkeur.
De /dev/zero apparaat is een speciaal apparaat dat "0" uitvoert. Wat deze dd-opdracht doet, is een leeg blokbestand van twee gigabyte maken met blokken van 1024 kilo die geschikt zijn voor gebruik als wisselruimte.
U kunt dan de mkswap en ruilen commando's met een wisselbestand zoals je zou doen met een wisselpartitie:
sudo mkswap /pad/naar/swapbestand
sudo swapon /pad/naar/swapfile
U vraagt zich misschien af wanneer u een swapbestand of een speciale partitie voor uw swapruimte moet gebruiken. De keuze is eenvoudig: in de meeste gevallen moet u een partitie gebruiken. Dit is de beste keuze voor een Linux-desktop of een server. Het partitieschema dat door het installatieprogramma wordt voorgesteld, is meestal voldoende op een Linux-desktop voor één gebruiker.
Misschien wil je een wisselbestand gebruiken als je Linux op een virtuele machine draait, op een klein ingebed systeem, of als je je bestaande Linux-systeem gewoon niet opnieuw wilt partitioneren.
Hoeveel swapruimte?
Al vele jaren is het standaardadvies voor hoeveel swapruimte nodig is tweemaal het fysieke RAM-geheugen. Met de grote schijven en hoeveelheden geheugen waarmee zelfs de goedkoopste pc's worden geleverd, kan deze regel in twijfel worden getrokken.
Als u op veel systemen top of htop aanvinkt, merkt u misschien zelfs dat uw swapruimte helemaal niet wordt gebruikt als u uw systeem op deze manier instelt.
Toch is tweemaal het fysieke geheugen een goed uitgangspunt en een verzekering als je meer van het geheugen vraagt. U kunt indien nodig wijzigingen in uw systeem aanbrengen. Als uw systeem al uw RAM gebruikt, kan de computer prestatieproblemen ondervinden bij het gebruik van virtueel geheugen.
De computer kan in en uit blijven wisselen, een proces dat bekend staat als geselen, waardoor het lijkt alsof het niet meer reageert. Als je nog een mechanische harde schijf hebt, hoor je hem vaak constant toegang krijgen.
Dit is tegenwoordig veel minder een probleem, omdat de hoeveelheid RAM op zelfs de goedkoopste pc's meer dan voldoende is, en de snelheid van SSD's is veel sneller dan die van de oude harde schijven. Het is nog steeds iets waar je je bewust van moet zijn.
De eenvoudigste manier om dit op te lossen, is door gewoon meer RAM aan uw machine toe te voegen. Als dat niet mogelijk is, kun je proberen de "swappiness" van de Linux-kernel aan te passen.
Het swappiness-nummer bepaalt hoeveel de kernel in het virtuele geheugen duikt. Het varieert van 0 tot 100. Als je het op 0 zet, betekent dit dat Linux helemaal niet zal wisselen, terwijl het bij 100 bij elke gelegenheid zal wisselen. De standaard op de meeste systemen is 60.
Gebruik de opdracht sysctl om de swappiness tijdelijk te wijzigen:
sudo sysctl vm.swappiness=20
De "20" in die opdracht is het swappiness-nummer totdat je opnieuw opstart. Om het permanent te wijzigen, bewerk de /etc/sysctl.conf bestand als root en plaats de regel "vm.swappiness=[swappiness-nummer]", waarbij "[swappiness-nummer]" het gewenste swappiness-nummer is. Dit zal een tussenoplossing zijn totdat u meer RAM kunt installeren.
Virtueel geheugen zorgt ervoor dat uw Linux-systeem soepel blijft werken
Virtueel geheugen is een onderdeel van moderne besturingssystemen, waaronder Linux, die ervoor zorgen dat uw computer soepel blijft werken. U kunt een wisselbestand gebruiken, maar de gebruikelijke methode is een speciale partitie. U hoeft er niet zo veel over na te denken, maar Linux-swappartities en -swapbestanden zijn eenvoudig in te stellen en op te lossen.
Veel van dit advies is ook van toepassing op andere systemen, waaronder Windows, zelfs als de methoden voor het instellen van virtueel geheugen anders zijn.