Swap

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.

Opmerking: Er is geen prestatieverschil tussen het gebruik van een wisselpartitie en een aaneengesloten wisselbestand.

om de swap status te controleren, gebruik:

$ swapon --show

of om fysiek geheugen en swap te tonen Gebruik:

$ free -h

Swap partitie

Tango-onnauwkeurig.pngde feitelijke juistheid van dit artikel of deze sectie wordt betwist.Tango-onnauwkeurig.PNG

reden: 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
waarschuwing: alle gegevens op de opgegeven partitie zullen verloren gaan.

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.

opmerking:

  • 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.
waarschuwing: Het inschakelen van teruggooi op RAID setups met behulp van mdadm zal systeemblokkering veroorzaken tijdens het opstarten en tijdens runtime, als swapon wordt gebruikt.

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).

waarschuwing: Btrfs ondersteunt wisselbestand met beperkingen sinds Linux kernel versie 5.0. Zie Btrfs # Swap bestand voor meer informatie.

handmatig

Swap bestand aanmaken

Opmerking: Als u Btrfs gebruikt, volgt u eerst de procedure beschreven in Btrfs#Swap bestand om het swap bestand te initialiseren.

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
opmerking: dd gebruiken om een wisselbestand toe te wijzen is de meest draagbare oplossing, zie swapon(8) § bestanden met gaten voor details.

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.

opmerking:

  • 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

opmerking: De auteur raadt nu aan om in plaats daarvan zram-generator te gebruiken, vanwege de lage commit frequentie en zram die de behoeften van de meeste gebruikers dekt.

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.

opmerking:

  • als het journaal de volgende waarschuwing blijft tonen systemd-swap: WARN: swapFC: ENOSPC en er wordt geen swap-bestand aangemaakt, moet u commentaar verwijderen en swapfc_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.

opmerking: Omdat /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.

Related Posts

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *