deze pagina geeft een inleiding tot swap ruimte en paging op GNU / Linux. Het behandelt creatie en activering van swap partities en swap bestanden.
van alles over Linux swap ruimte:
Linux verdeelt zijn fysieke RAM (random access memory) in stukjes geheugen genaamd pages. Swapping is het proces waarbij een pagina geheugen wordt gekopieerd naar de vooraf geconfigureerde ruimte op de harde schijf, genaamd swap space, om die pagina geheugen vrij te maken. De gecombineerde grootte van het fysieke geheugen en de swap ruimte is de hoeveelheid virtueel geheugen beschikbaar.
ondersteuning voor swap wordt geleverd door de Linux kernel en user-space utilities van het util-linux pakket.
wisselruimte
wisselruimte kan de vorm aannemen van een schijfpartitie of een bestand. Gebruikers kunnen een swap ruimte maken tijdens de installatie of op elk later moment zoals gewenst. Swap ruimte kan worden gebruikt voor twee doeleinden, om het virtuele geheugen uit te breiden buiten het geïnstalleerde fysieke geheugen (RAM), en ook voor suspend-to-disk ondersteuning.
als het nuttig is om het virtuele geheugen uit te breiden met swap hangt af van de hoeveelheid geïnstalleerd fysiek geheugen. Als de hoeveelheid fysiek geheugen minder is dan de hoeveelheid geheugen die nodig is om alle gewenste programma ‘ s uit te voeren, dan kan het nuttig zijn om swap in te schakelen. Dit voorkomt uit het geheugen condities, waar de Linux kernel OOM killer mechanisme zal automatisch proberen om geheugen vrij te maken door het doden van processen. Als u de hoeveelheid virtueel geheugen wilt verhogen tot de vereiste hoeveelheid, voegt u het benodigde verschil (of meer) toe als swap-ruimte.
het grootste nadeel van het inschakelen van swap is de lagere prestaties, Zie sectie # Performance. Daarom is het inschakelen van swap een kwestie van persoonlijke voorkeur: sommigen geven de voorkeur aan programma ‘ s om te worden gedood over het inschakelen van swap en anderen geven de voorkeur aan het inschakelen van swap en trager systeem wanneer het fysieke geheugen is uitgeput.
om de swap status te controleren, gebruik:
$ swapon --show
of om fysiek geheugen en swap te tonen Gebruik:
$ free -h
Swap partitie
de feitelijke juistheid van dit artikel of deze sectie wordt betwist.
82
is het type swap partitie op MBR, er is geen swap partitie autodetectie op MBR. / TRIM commando ‘ s op swap partities lijken automatisch uitgegeven te worden door de Kernel indien ondersteund zie Fedora Deployment Guides. (Bespreek in Talk:Swap#Clarify swap discovery)een swappartitie kan worden aangemaakt met de meeste GNU/Linux partitioneringsprogramma ‘ s. Swap partities worden meestal aangeduid als type 82
. Hoewel het mogelijk is om elk partitietype als swap te gebruiken, wordt het in de meeste gevallen aanbevolen om type 82
te gebruiken, omdat systemd het automatisch zal detecteren en mounten (zie hieronder).
om een partitie in te stellen als Linux swap area, wordt het commando mkswap (8) gebruikt. Bijvoorbeeld:
# mkswap /dev/sdxy
om het apparaat in te schakelen voor paging:
# swapon /dev/sdxy
om deze swappartitie tijdens het opstarten in te schakelen, voegt u een regel toe aan /etc/fstab
:
UUID=device_UUID none swap defaults 0 0
waarbij de device_UUID
de UUID van de swap-ruimte is.
zie fstab voor de bestandssyntaxis.
- De fstab-regel is optioneel als de swappartitie zich op een apparaat bevindt dat GPT gebruikt. Zie de volgende paragraaf.
- Als u een SSD met TRIM-ondersteuning gebruikt, overweeg dan om
discard
te gebruiken in de wisselregel in fstab. Als swap handmatig wordt geactiveerd met swapon, bereikt het gebruik van de-d
--discard
parameter hetzelfde. Zie swapon (8) voor details.
activering door systemd
systemd activeert swappartities op basis van twee verschillende mechanismen. Beide zijn uitvoerbare bestanden in /usr/lib/systemd/system-generators
. De generatoren worden uitgevoerd bij het opstarten en maken native systemd units voor mounts. De eerste, systemd-fstab-generator
, leest de fstab om eenheden te genereren, inclusief een eenheid voor swap. De tweede, systemd-gpt-auto-generator
inspecteert de rootdisk om eenheden te genereren. Het werkt alleen op GPT-schijven en kan swap-partities identificeren op hun type GUID, zie systemd#GPT partition automounting voor meer informatie.
swap uitschakelen
om specifieke swap-ruimte te deactiveren:
# swapoff /dev/sdxy
U kunt ook de schakelaar -a
gebruiken om alle swap-ruimte te deactiveren.
aangezien swap wordt beheerd door systemd, zal het opnieuw worden geactiveerd bij het volgende opstarten van het systeem. Om de automatische activering van gedetecteerde swap-ruimte permanent uit te schakelen, voer je systemctl --type swap
uit om de verantwoordelijke te vinden .verwissel eenheid en maskeer het.
Swap-bestand
als alternatief voor het maken van een volledige partitie biedt een swap-bestand de mogelijkheid om zijn grootte on-the-fly te variëren, en wordt het gemakkelijker om het geheel te verwijderen. Dit kan vooral wenselijk zijn als schijfruimte op een premie (bijvoorbeeld een bescheiden SSD).
handmatig
Swap bestand aanmaken
gebruik dd om een wisselbestand aan te maken met de grootte van uw keuze. Bijvoorbeeld, het aanmaken van een 512 MiB-wisselbestand:
# dd if=/dev/zero of=/swapfile bs=1M count=512 status=progress
Stel de juiste rechten in (een wereld-leesbaar swap-bestand is een enorme lokale kwetsbaarheid):
# chmod 600 /swapfile
na het aanmaken van het juiste formaat bestand, formatteer het als swap:
# mkswap /swapfile
Activeer het swap-bestand:
# swapon /swapfile
tenslotte, bewerk de fstab configuratie om een regel toe te voegen voor het swap bestand:
/etc/fstab
/swapfile None swap defaults 0 0
voor aanvullende informatie, zie fstab#gebruik.
- het wisselbestand moet worden opgegeven aan de hand van de locatie op het bestandssysteem, niet aan de hand van de UUID of het LABEL.
- wanneer u Btrfs gebruikt, vergeet dan niet om het aangemaakte subvolume ook aan de lijst toe te voegen, en verwijder de
discard,autodefrag
en compressie opties.
swap-bestand verwijderen
om een swap-bestand te verwijderen, moet het eerst worden uitgeschakeld en kan vervolgens worden verwijderd:
# swapoff /swapfile# rm -f /swapfile
verwijder uiteindelijk de relevante regel uit /etc/fstab
.
geautomatiseerd
zram-generator
het doel van deze tool is het creëren van ZRAM-apparaten. Het is geschreven in Rust en woont in systemd ‘ s GitHub. Het kan worden geïnstalleerd met het ZRAM-generatorAUR pakket.Configuratie is eenvoudig en uitgelegd in de README.
systemd-swap
systemd-swap is een script voor het maken van hybride swap ruimte van ZRAM swaps, swap bestanden en swap partities. Het is niet aangesloten bij het systemd-project.
Installeer het systemd-swap pakket. Verwijder commentaar en stel swapfc_enabled=1
in het gedeelte van /etc/systemd/swap.conf
. Start / activeer de systemd-swap
service.
bezoek de authors GitHub pagina voor meer informatie en het instellen van de aanbevolen configuratie.
- als het journaal de volgende waarschuwing blijft tonen
systemd-swap: WARN: swapFC: ENOSPC
en er wordt geen swap-bestand aangemaakt, moet u commentaar verwijderen enswapfc_force_preallocated=1
instellen in/etc/systemd/swap.conf
. - het swap-bestand dat door systemd-swap is aangemaakt, kan niet gemakkelijk worden gebruikt voor de slaapstand. Zie systemd-swap issue 85.
Swap-encryptie
zie dm-crypt / Swap-encryptie.
Performance
Swap operaties zijn meestal aanzienlijk langzamer dan directe toegang tot gegevens in RAM. Het volledig uitschakelen van swap om de prestaties te verbeteren kan soms leiden tot een degradatie, omdat het het beschikbare geheugen voor VFS-caches vermindert, waardoor frequentere en dure disk I/O.
Swap-waarden kunnen worden aangepast om de prestaties te verbeteren:
Swappiness
De swappiness sysctl-parameter vertegenwoordigt de voorkeur (of vermijding) van de swap-ruimte van de kernel. Swappiness kan een waarde hebben tussen 0 en 200 (max 100 als Linux < 5.8), de standaard waarde is 60. Een lage waarde zorgt ervoor dat de kernel het wisselen vermijdt, een hoge waarde zorgt ervoor dat de kernel probeert swap ruimte te gebruiken, en een waarde van 100 betekent dat IO kosten gelijk zijn. Het gebruik van een lage waarde op voldoende geheugen is bekend om de responsiviteit op vele systemen te verbeteren.
om de huidige swappiness waarde te controleren:
$ sysctl vm.swappiness
alternatief kunnen de bestanden /sys/fs/cgroup/memory/memory.swappiness
of /proc/sys/vm/swappiness
worden gelezen om de ruwe gehele waarde te verkrijgen.
/proc
veel minder georganiseerd is en alleen wordt bewaard voor compatibiliteitsdoeleinden, wordt u aangeraden om /sys
te gebruiken.om de swappiness-waarde tijdelijk in te stellen:
# sysctl -w vm.swappiness=10
om de swappiness-waarde permanent in te stellen, maakt u een sysctl aan.D (5) configuratiebestand. Bijvoorbeeld:
/etc/sysctl.d / 99-swappiness.conf
vm.swappiness = 10
om te testen en meer over waarom dit kan werken, neem een kijkje op dit artikel.
VFS-cachedruk
een andere sysctl-parameter die de swap-prestaties beïnvloedt is vm.vfs_cache_pressure
, die de neiging van de kernel bepaalt om het geheugen terug te winnen dat wordt gebruikt voor het cachen van VFS-caches, versus pagecache en swap. Het verhogen van deze waarde verhoogt de snelheid waarmee VFS-caches worden teruggewonnen. Voor meer informatie, zie de Linux kernel documentatie.
Priority
Als u meer dan één swap-bestand of swappartitie hebt, kunt u overwegen een prioriteitswaarde (0 tot 32767) toe te wijzen voor elk swap-gebied. Het systeem zal swapgebieden met een hogere prioriteit gebruiken alvorens swapgebieden met een lagere prioriteit te gebruiken. Als u bijvoorbeeld een snellere schijf hebt (/dev/sda
) en een langzamere schijf (/dev/sdb
), wijs dan een hogere prioriteit toe aan het swap-gebied op het snelste apparaat. Prioriteiten kunnen in fstab worden toegewezen via depri
parameter:
/dev/sda1 none swap defaults,pri=100 0 0/dev/sdb2 none swap defaults,pri=10 0 0
of via de--priority
parameter van swapon:
# swapon --priority 100 /dev/sda1
als twee of meer gebieden dezelfde prioriteit hebben en dit de hoogste beschikbare prioriteit is, worden de pagina ‘ s op round-robin basis tussen hen verdeeld.
met behulp van zswap of zram
Zswap is een Linux-kernelfunctie die een gecomprimeerde schrijf-back cache biedt voor omgewisselde pagina ‘ s. Dit verhoogt de prestaties en vermindert de Io-operaties. ZRAM maakt een virtueel gecomprimeerd Swap-bestand in het geheugen als alternatief voor een swapbestand op schijf.
Striping
Het is niet nodig om RAID te gebruiken om redenen van swapprestaties. De kernel zelf kan swapping op meerdere apparaten stripeen, als je ze gewoon dezelfde prioriteit geeft in het /etc/fstab
bestand. Raadpleeg de software-RAID HOWTO voor details.