Veelgestelde vragen over wisselgeheugen
Inleiding
- Deze "veelgestelde vragen"-pagina (FAQ) is bedoeld voor beginnende Linux-gebruikers.
De veelgestelde vraag is hoe groot moet de partitie voor het wisselgeheugen zijn? En om deze te vergroten, moet er dan een herinstallatie gedaan worden?
- Het gaat hier om simpele antwoorden en er wordt enige achtergrondinformatie gegeven om een beeld te krijgen van het wisselgeheugengebruik.
Kijk voor meer gedetailleerde (Engelstalige) informatie over het gebruik van intern geheugen en wisselgeheugen hier.
Hoeveel wisselgeheugen is nodig?
De "standaard" regel is:
- Minimaal gelijk aan de omvang van het interne geheugen.
- Bij voorkeur 2 maal de omvang van het interne geheugen.
Echter, deze aanbeveling dateert van de tijd waarin intern geheugen duur was en Unix-achtige systemen veel processen in wisselgeheugen (swap) draaide. Tegenwoordig hebben computers veel meer intern geheugen. Alleen als je van de slaapstand gebruik wil maken is de standaard regel nog van toepassing en anders is het geheel afhankelijk van het gebruik van de computer. Bij normaal gebruik heeft een moderne computer bijna geen wisselgeheugen nodig. Keerzijde van een te te veel wisselgeheugen is dat deze ruimte geheel gereserveerd wordt en af gaat van de normale schijfruimte.
Voorbeelden:
- Weinig geheugen en weinig diskruimte: 512MiB RAM geheugen en een 30 GB hardeschijf, 512 MiB wisselgeheugen omdat het geheugen beperkt is.
- Weinig geheugen en veel diskruimte: 512 MiB RAM geheugen en een 100 GB hardeschijf, 1 GB wisselgeheugen omdat het geheugen beperkt is en schijfruimte genoeg is.
- Veel geheugen en weinig diskruimte: 2 GiB RAM geheugen en een 30 GB hardeschijf, 1 GiB wisselgeheugen omdat er weinig schijfruimte is (geen slaapstand mogelijk).
- Veel geheugen en veel diskruimte: 2 GiB RAM geheugen en een 100 GB hardeschijf, 2 GiB wisselgeheugen omdat er schijfruimte genoeg is.
Waar is wisselgeheugen voor?
Het gebruik van wisselgeheugen was voorheen noodzakelijk als uitbreiding van het interne geheugen: het beschikbare geheugen is de som van het interne geheugen en het wisselgeheugen.
Tegenwoordig beschikken computers over zoveel intern geheugen dat uitbreiding met wisselgeheugen strikt genomen niet meer nodig is.
Er zijn toch 4 redenen om wisselgeheugen te gebruiken:
- Sommige programmatuur gebruikt veel intern geheugen
- Meer geheugen is soms handig
- Optimaal gebruik van het interne geheugen
- De slaapstand (hibernation)
Sommige programmatuur gebruikt veel intern geheugen
Soms gebruiken grote programma's (zoals LibreOffice of videobewerkingsoftware) toch al het interne geheugen op. De computer kan dan gebruik maken van het wisselgeheugen als uitbreiding.
Meer geheugen is soms handig
Onvoorziene omstandigheden kunnen en zullen voorkomen (bijvoorbeeld een bug in een programma waardoor het geheugengebruik sterk toeneemt). In die gevallen kan extra wisselgeheugen ervoor zorgen dat er nog iets gedaan kan worden zoals het opsporen van de oorzaak van het probleem of het normaal afsluiten van andere programma's.
Optimaal gebruik van het interne geheugen
Als er een bestand van de schijf wordt gelezen zal Linux dit in het interne geheugen plaatsen en daar zo lang mogelijk vasthouden. Een volgende leesopdracht zal daardoor veel sneller verlopen. Het deel van het interne geheugen dat gebruikt wordt om de toegang tot bestanden te versnellen wordt 'cached memory' genoemd. Dit zorgt voor een enorme snelheidsverbetering (het intern geheugen is duizenden malen sneller dan een schijf).
Het Linux systeem zal geheugen dat niet actief door een programma wordt gebruikt verplaatsen naar het wisselgeheugen om zo meer 'cached memory' te kunnen gebruiken.
De slaapstand (hibernation)
In de slaapstand (in het Engels hibernation of suspend-to-disk genoemd) wordt het interne geheugen in het wisselgeheugen op schijf geplaatst en de machine uitgezet.
Soms ontstaat hier een probleem: tijdens het starten van de computer is er nog geen bestandssysteem actief. Met andere woorden: het is niet mogelijk om te "ontwaken" vanuit een wisselgeheugen-bestand, hiervoor is een wisselgeheugen-partitie nodig.
Is een nieuwe installatie nodig om het wisselgeheugen uit te breiden?
NEE, ZEKER NIET! Vanaf de Linux kernel versie 2.6 is een wisselgeheugen-bestand net zo snel als een wisselgeheugen-partitie (Wikipedia:Paging, LKML).
Bijvoorbeeld na het uitbreiden van het computergeheugen kan het wisselgeheugen worden uitgebreid met een bestand.
Hoe kan ik het wisselgeheugen uitbreiden?
Vaak wordt bij wisselgeheugen gedacht aan een aparte partitie die als wisselgeheugen (swap area) is geformatteerd. Waarschijnlijk omdat bij de installatie wordt voorgesteld hiervoor een partitie te maken. Maar ook een bestand is als wisselgeheugen-geheugen te gebruiken. Voor de snelheid maakt het geen verschil of een wisselgeheugen-bestand of een wisselgeheugen-partitie gebruikt wordt.
Het uitbreiden van het wisselgeheugen met een bestand:
- maak een bestand
- formatteer het bestand als wisselgeheugen-bestand
- beveilig het wisselgeheugen-bestand
- gebruik het bestand als wisselgeheugen
- gebruik het bestand permanent als wisselgeheugen
Als voorbeeld een uitbreiding met 512 MB wisselgeheugen in /mnt/
Maak een bestand
Maak een bestand '/mnt/512Mb.swap' van 512 MB groot.
sudo dd if=/dev/zero of=/mnt/512Mb.swap bs=1M count=512
count=512 geeft aan dat we 512 blokken van bs=1M ofwel 1 MegaBytes willen. Gebruik bijvoorbeeld count=1024 om een bestand van 1GB te maken.
gebruik NIET dd of=/mnt/512Mb.swap bs=1M seek=512 count=0 want hoewel dit in 1 keer een bestand van de gewenste omvang maakt is dit bestand niet altijd als wisselgeheugen-bestand te gebruiken.
Formatteer het bestand als wisselgeheugen-bestand
sudo mkswap /mnt/512Mb.swap
Beveilig het wisselgeheugen-bestand
sudo chmod 600 /mnt/512Mb.swap
Gebruik het bestand als wisselgeheugen
sudo swapon /mnt/512Mb.swap
- gebruik met de terminal opdracht "swapon -s" om te zien hoeveel wisselgeheugen beschikbaar is.
Gebruik het bestand permanent als wisselgeheugen
Wijzig hiervoor /etc/fstab
gksudo gedit /etc/fstab
Plaats achteraan een regel met de tekst:
/mnt/512Mb.swap none swap sw 0 0
Opslaan en reboot.
Nu het voorbeeld in een terminalscherm:
gebruiker@ubuntu:~$ sudo dd if=/dev/zero of=/mnt/512Mb.swap bs=1M count=512 512+0 records gelezen 512+0 records geschreven 536870912 bytes (537 MB) gekopieerd, 22,0339 s, 24,4 MB/s gebruiker@ubuntu:~$ sudo chmod 600 /mnt/512Mb.swap gebruiker@ubuntu:~$ sudo mkswap /mnt/512Mb.swap Instellen van wisselgeheugen, versie 1, grootte = 536866 kB geen label, UUID=ed7653a1-829c-4d03-8ba7-4c8f194b1661 gebruiker@ubuntu:~$ sudo swapon /mnt/512Mb.swap gebruiker@ubuntu:~$ swapon -s Filename Type Size Used Priority /mnt/512Mb.swap file 524280 0 -1 gebruiker@ubuntu:~$ gksudo gedit /etc/fstab ##### toevoegen: /mnt/512Mb.swap none swap sw 0 0 gebruiker@ubuntu:~$ free total used free shared buffers cached Mem: 515060 495344 19716 0 4712 265956 -/+ buffers/cache: 224676 290384 Swap: 524280 4 524276 ##### Na het starten van een aantal programma's gebruiker@ubuntu:~$ free total used free shared buffers cached Mem: 515060 504788 10272 0 3232 147204 -/+ buffers/cache: 354352 160708 Swap: 524280 73744 450536 #####Een herstart om te kijken of de aanpassing in /etc/fstab goed is gebruiker@ubuntu:~$ free total used free shared buffers cached Mem: 515060 480820 34240 0 15000 265780 -/+ buffers/cache: 200040 315020 Swap: 524280 0 524280
Prioriteit van wisselgeheugens
Linux kent aan wisselgeheugens een prioriteit toe. Deze kunnen worden bekeken met
cat /proc/swaps
Deze prioriteiten kunnen worden gewijzigd door een aanpassing van bestand "/etc/fstab". Voor meer informatie zie:
man swapon
Prestaties verbeteren met zram
Deze optie is beschikbaar vanaf 12.04 LTS en kan prestatieverbetering geven op computers met beperkt geheugen (tussen 512MiB en 2GiB).
Met zram plaatst u een gecomprimeerd swap bestand in het RAM geheugen zelf. Deze swap heeft een hogere prioriteit dan de standaard swap partitie of swap-bestand, waardoor uw swap partitie/bestand pas gebruikt zal worden als het swap-bestand in het geheugen vol is. Deze methode heeft een aantal voordelen:
- Prestaties worden verbeterd, omdat het langer duurt voordat uw systeem de trage swap op uw harddisk zal gebruiken
- Door de compressie kan er tot 5x meer data in het zram-swapbestand geplaatst worden. Dus als u een zram-swapbestand van 1Gb heeft kan er tot 5GB in geswapt worden, meer dan genoeg voor vrijwel ieder systeem.
- Het instellen is eenvoudig, u kunt eenvoudigweg een pakket te installeren dat alles voor u instelt
Om een zram-swapbestand op te zetten moet u in het ubuntu softwarecentrum naar 'zram-config' zoeken. U kunt het ook via de terminal installeren
sudo apt-get install zram-config
Na de installatie zijn een of meerdere zram-swapbestanden meteen actief. In totaal kan de helft van uw RAM als zram-swapbestand gebruikt worden, en dit is opgedeeld in zoveel zram-swapbestanden als u CPU-kernen heeft (hierdoor heeft elk zram-swapbestand een eigen CPU voor het comprimeren en uitpakken van de data). Let op dat dit niet betekent dat u standaard de helft van uw RAM kwijt bent! Als er niet geswapt wordt zijn de zram-swapbestanden leeg en nemen ze geen ruimte in.
Met het volgende commando kunt u de status van uw swap bekijken
swapon -s Filename Type Size Used Priority /dev/mapper/ubuntu-swap partition 4194300 0 -1 /dev/zram0 partition 254224 56 5 /dev/zram1 partition 254224 56 5 /dev/zram2 partition 254224 60 5 /dev/zram3 partition 254224 60 5
Prestatie verbeteren met swappiness
De "swappiness"-instelling bepaalt het gedrag van de Linux-kernel om processen van intern geheugen te verplaatsen naar het wisselgeheugen op schijf. Maar pas op, omdat een schijf veel trager is dan het intern geheugen, kan veel verplaatsen uit het interne geheugen leiden tot een slechte responstijd.
- De swappiness kan een waarde hebben tussen 0 en 100
- Bij swappiness=0 zal de Linux kernel zo lang mogelijk wachten met het verplaatsen van geheugen naar het wisselgeheugen
- Bij swappiness=100 zal de Linux kernel zo veel mogelijk geheugen verplaatsen naar het wisselgeheugen
- Standaard wordt Ubuntu geleverd met een instelling van swappiness=60
Vermindering van de standaardwaarde van swappiness zal mogelijk de algemene prestaties voor een typisch Ubuntu desktop installatie kunnen verbeteren. In sommige gevallen wordt een waarde van swappiness = 10 aanbevolen. Omdat het afhankelijk is van de individuele configuratie en gebruik zal dit proefondervindelijk vastgesteld moeten worden.
- Opmerking: Ubuntu server-installaties hebben andere prestatie-eisen dan desktopsystemen en de standaard waarde van 60 is hiervoor waarschijnlijk de beste instelling.
Hoe kan de swappiness-instelling worden bekeken?
cat /proc/sys/vm/swappiness
Hoe kan de swappiness-instelling worden aangepast?
De instelling kan tijdelijk (tot de volgende herstart van het systeem) naar een waarde van 10 worden gezet met de opdracht:
sudo sysctl vm.swappiness=10
Voor een definitieve wijziging van de swappiness waarde moet bestand /etc/sysctl.conf worden aangepast
gksudo gedit /etc/sysctl.conf
Zoek naar de vm.swappiness waarde om aan te passen of voeg de volgende regel toe aan het bestand:
vm.swappiness=10
Opslaan en herstarten.
Over deze wiki
Dit is een vrije vertaling van https://help.ubuntu.com/community/SwapFaq Meer gedetailleerde (Engelstalige) informatie is hier hier te vinden