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.
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
den faktiska noggrannheten i denna artikel eller avsnitt är omtvistad.
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
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.
- 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.
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).
manuellt
Swap file creation
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
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.
- 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
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.
- 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 inswapfc_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.
/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.