Swap

denna sida ger en introduktion till swap space och personsökning på GNU/Linux. Det omfattar skapande och aktivering av swap partitioner och swap-filer.

från allt om Linux swap space:

Linux delar upp sitt fysiska RAM (random access memory) i bitar av minne som kallas sidor. Byte är processen där en sida med minne kopieras till det förkonfigurerade utrymmet på hårddisken, kallad swap space, för att frigöra den sidan med minne. De kombinerade storlekarna på det fysiska minnet och bytesutrymmet är mängden virtuellt minne tillgängligt.

stöd för swap tillhandahålls av Linux-kärnan och user-space utilities från util-linux-paketet.

Swap space

Swap space kan ha formen av en diskpartition eller en fil. Användare kan skapa en swap utrymme under installationen eller vid något senare tillfälle som önskas. Swap space kan användas för två ändamål, för att utöka det virtuella minnet utöver det installerade fysiska minnet (RAM), och även för suspend-to-disk support.

om det är fördelaktigt att utöka det virtuella minnet med swap beror på mängden installerat fysiskt minne. Om mängden fysiskt minne är mindre än mängden minne som krävs för att köra alla önskade program, kan det vara fördelaktigt att aktivera swap. Detta undviker minnesförhållanden, där Linux-kärnan OOM killer-mekanismen automatiskt försöker frigöra minne genom att döda processer. För att öka mängden virtuellt minne till önskad mängd, lägg till den nödvändiga skillnaden (eller mer) som swap space.

den största nackdelen med att aktivera swap är dess lägre prestanda, se avsnitt # prestanda. Därför är det en fråga om personlig preferens att aktivera swap: vissa föredrar att program dödas över att aktivera swap och andra föredrar att aktivera swap och långsammare system när det fysiska minnet är uttömt.

Obs: Det finns ingen prestandaskillnad mellan att använda en swap-partition och en sammanhängande swap-fil.

för att kontrollera swap status, använd:

$ swapon --show

eller för att visa fysiskt minne samt swap användning:

$ free -h

Swap partition

Tango-felaktig.PNGden faktiska noggrannheten i denna artikel eller avsnitt är omtvistad.Tango-felaktig.PNG

anledning:82 är bytespartitionstypen på MBR, det finns ingen bytespartitionsautodetektion på MBR. / TRIM kommandon på swap partitioner verkar utfärdas automatiskt av kärnan om det stöds se Fedora Distributionsguider. (Diskutera I Talk: Swap # Clarify swap discovery)

en swap partition kan skapas med de flesta GNU / Linux partitioneringsverktyg. Swap-partitioner betecknas vanligtvis som typ 82. Även om det är möjligt att använda någon partitionstyp som byte, rekommenderas att du använder Typ 82 I de flesta fall eftersom systemd automatiskt upptäcker den och monterar den (se nedan).

för att ställa in en partition som Linux-bytesområde används kommandot mkswap(8). Till exempel:

# mkswap /dev/sdxy
Varning: Alla data på den angivna partitionen kommer att gå förlorade.

för att aktivera enheten för personsökning:

# swapon /dev/sdxy

för att aktivera denna swap-partition vid start, Lägg till en post till /etc/fstab:

UUID=device_UUID none swap defaults 0 0

där device_UUID är UUID för växlingsutrymmet.

se fstab för filsyntaxen.

Obs:

  • fstab-posten är valfri om swap-partitionen finns på en enhet med GPT. Se nästa underavsnitt.
  • Om du använder en SSD med TRIM-stöd, överväg att använda discard I swap-raden i fstab. Om du aktiverar swap manuellt med swapon uppnår parametern-d--discard samma. Se swapon (8) för mer information.
Varning: Aktivera kassering på RAID-inställningar med mdadm kommer att orsaka systemlåsning vid start och under körning, om du använder swapon.

aktivering av systemd

systemd aktiverar swap-partitioner baserat på två olika mekanismer. Båda är körbara i /usr/lib/systemd/system-generators. Generatorerna körs vid start och skapar inbyggda systemd-enheter för fästen. Den första, systemd-fstab-generator, läser fstab för att generera enheter, inklusive en enhet för byte. Den andra,systemd-gpt-auto-generator inspekterar rotdisken för att generera enheter. Den fungerar endast på GPT-diskar och kan identifiera swap-partitioner efter deras typ GUID, se systemd#GPT partition automounting för mer information.

inaktivera swap

för att inaktivera specifikt swap space:

# swapoff /dev/sdxy

alternativt använd-a växla för att inaktivera allt swap space.

eftersom swap hanteras av systemd aktiveras den igen vid nästa systemstart. För att inaktivera automatisk aktivering av detekterat swap space permanent, kör systemctl --type swap för att hitta den ansvariga .byt enhet och maskera den.

Swap file

som ett alternativ till att skapa en hel partition erbjuder en swap-fil möjligheten att variera sin storlek i farten och tas lättare bort helt och hållet. Detta kan vara särskilt önskvärt om diskutrymmet är premium (t.ex. en måttligt stor SSD).

Varning: Btrfs stöder swap-fil med begränsningar sedan Linux kernel version 5.0. Se btrfs # Swap-fil för mer information.

manuellt

Swap file creation

Obs: Om du använder Btrfs, följ först proceduren som beskrivs i btrfs#Swap-fil för att initiera swap-filen.

använd dd för att skapa en swap-fil som du väljer. Skapa till exempel en 512 MiB-swapfil:

# dd if=/dev/zero of=/swapfile bs=1M count=512 status=progress

Obs: att använda dd för att allokera en swap-fil är den mest bärbara lösningen, se swapon(8) asiatiska filer med hål för mer information.

Ställ in rätt behörigheter (en världsläsbar swap-fil är en enorm lokal sårbarhet):

# chmod 600 /swapfile

När du har skapat filen med rätt storlek formaterar du den för att byta:

# mkswap /swapfile

Aktivera swap-filen:

# swapon /swapfile

slutligen, redigera fstab-konfigurationen för att lägga till en post för swap-filen:

/etc/fstab
/swapfile ingen swap standardvärden 0 0

För ytterligare information, se fstab#användning.

Obs:

  • växlingsfilen måste anges av dess plats på filsystemet, inte av dess UUID eller etikett.
  • när du använder Btrfs, glöm inte att lägga till den skapade undervolymen i listan också och ta bort discard,autodefrag och komprimeringsalternativ.

ta bort swap file

för att ta bort en swap-fil måste den först stängas av och sedan tas bort:

# swapoff /swapfile# rm -f /swapfile

slutligen ta bort relevant post från /etc/fstab.

automatiserad

zram-generator

syftet med detta verktyg är skapandet av zram-enheter. Den är skriven i Rust och finns i systemds GitHub. Den kan installeras med ZRAM-generatorAUR-paketet.Konfigurationen är enkel och förklaras i README.

systemd-byt

notera: Författaren rekommenderar nu att använda zram-generator istället, på grund av låg begå frekvens och zram täcker behoven hos de flesta användare.

systemd-swap är ett skript för att skapa hybrid swap utrymme från zram swappar, swap filer och swap partitioner. Det är inte anslutet till systemd-projektet.

Installera systemd-swap-paketet. Avkommentera och ange swapfc_enabled=1 I avsnittet Swap File Chunked i /etc/systemd/swap.conf. Starta / aktivera tjänstensystemd-swap.

besök författarens GitHub-sida för mer information och ställa in den rekommenderade konfigurationen.

Obs:

  • Om journalen fortsätter att visa följande varning systemd-swap: WARN: swapFC: ENOSPC och ingen swap-fil skapas, måste du Avkommentera och ställa in swapfc_force_preallocated=1 I /etc/systemd/swap.conf.
  • swap-filen som skapats av systemd-swap kan inte enkelt användas för viloläge. Se systemd-swap fråga 85.

Swap encryption

se dm-crypt / Swap encryption.

prestanda

Swap-operationer är vanligtvis betydligt långsammare än direkt åtkomst till data i RAM. Inaktivera swap helt för att förbättra prestanda kan ibland leda till en försämring, eftersom det minskar minnet tillgängligt för VFS-cachar, vilket orsakar mer frekventa och kostsamma disk I/O.

Swap värden kan justeras för att hjälpa prestanda:

Swappiness

parametern swappiness sysctl representerar kärnans preferens (eller undvikande) av swap utrymme. Swappiness kan ha ett värde mellan 0 och 200 (max 100 om Linux < 5.8) är standardvärdet 60. Ett lågt värde gör att kärnan undviker att byta, ett högt värde gör att kärnan försöker använda swap space och ett värde på 100 betyder att io-kostnaden antas vara lika. Att använda ett lågt värde på tillräckligt med minne är känt för att förbättra responsen på många system.

för att kontrollera det aktuella swappiness-värdet:

$ sysctl vm.swappiness

alternativt kan filerna /sys/fs/cgroup/memory/memory.swappiness eller /proc/sys/vm/swappiness läsas för att få det råa heltalsvärdet.

Obs: Eftersom /procär mycket mindre organiserad och hålls endast för kompatibilitetsändamål, uppmuntras du att använda /sys istället.

för att tillfälligt ställa in swappiness-värdet:

# sysctl -w vm.swappiness=10

för att ställa in swappiness-värdet permanent, skapa en sysctl.D (5) konfigurationsfil. Till exempel:

/etc/sysctl.d / 99-swappiness.conf 
vm.swappiness=10 

för att testa och mer om varför detta kan fungera, ta en titt på den här artikeln.

VFS cache pressure

en annan sysctl-parameter som påverkar swap-prestanda är vm.vfs_cache_pressure, som styr kärnans tendens att återta minnet som används för cachning av VFS-cachar, kontra pagecache och swap. Att öka detta värde ökar hastigheten med vilken VFS-cachar återvinns. Mer information finns i dokumentationen för Linux-kärnan.

prioritet

Om du har mer än en swap-fil eller swap-partition bör du överväga att tilldela ett prioritetsvärde (0 till 32767) för varje swap-område. Systemet kommer att använda swap områden med högre prioritet innan swap områden med lägre prioritet. Om du till exempel har en snabbare disk (/dev/sda) och en långsammare disk (/dev/sdb), tilldela en högre prioritet till bytesområdet som finns på den snabbaste enheten. Prioriteringar kan tilldelas i fstab viapri parameter:

/dev/sda1 none swap defaults,pri=100 0 0/dev/sdb2 none swap defaults,pri=10 0 0

eller via--priority parameter för swapon:

# swapon --priority 100 /dev/sda1

om två eller flera områden har samma prioritet, och det är högsta prioritet tillgängliga, sidor tilldelas på en round-robin basis mellan dem.

använda zswap eller zram

Zswap är en Linux-kärnfunktion som ger en komprimerad skrivback-cache för bytte sidor. Detta ökar prestandan och minskar IO-operationerna. ZRAM skapar en virtuell komprimerad Swap-fil i minnet som alternativ till en swapfile på disken.

Striping

det finns ingen anledning att använda RAID för swap prestanda skäl. Kärnan själv kan stripe byta på flera enheter, om du bara ger dem samma prioritet i /etc/fstab – filen. Se programvaran-RAID HOWTO för mer information.

Related Posts

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *