Linux-kerne

Linux Kernel Memory Management Swap Space

Linux Kernel Memory Management Swap Space

Del et. Byt plads

For at fungere korrekt afhænger en computer af at have tilstrækkelig hukommelse. Simpelthen at sige, at der aldrig kan være nok. Jo mere fysisk hukommelse der er installeret, jo dyrere er det. For det meste er resultatet et smart kompromis mellem omkostninger og hastighed for at få adgang til hukommelsescellerne.

For at opnå dette kompromis kombinerer UNIX / Linux-systemer to typer hukommelse - fysisk hukommelse (RAM) og bytter plads. Alt i alt kaldes dette den virtuelle hukommelse i et computersystem. Fysisk hukommelse er ret dyr, men hurtig og tilgængelig inden for nanosekunder. I modsætning hertil er swap-hukommelse ret billig, men langsom og tilgængelig inden for millisekunder.

Der er et par grunde til, at swap-hukommelse er nyttig. For det første har nogle processer nogle gange brug for mere hukommelse end systemet fysisk ejer og kan give mere til de processer, der kræver det. Som et resultat kan alle data, der opbevares i fysisk hukommelse, ikke længere gemmes der. Nu spiller swap-pladsen i spil, og et udvalg af hukommelsessider overføres til swap-rummet for at frigøre fysisk hukommelse.

For det andet er ikke alle data nødvendige i hukommelsen på samme tid. Derfor er mindre brugte hukommelsessider parkeret på swap-plads for at have så meget gratis fysisk hukommelse tilgængelig som muligt. Denne metode er navngivet den mindst anvendte sideudskiftningsalgoritme (LRU) [1].

Typer af bytte

Bytteplads findes i to varianter. Version 1 er en separat diskpartition, som er den såkaldte swap-partition. Der er ingen filer gemt på den partition, men hukommelsesoplysninger (dumps). Simpelthen er version 2 en fil på en disk, der findes i filsystemet på din harddisk. Version 1 er meget almindelig på UNIX / Linux-systemer, BSD og OS X, mens version 2 findes på systemer, der kører Microsoft Windows. Version 2 kan også aktiveres på UNIX / Linux-systemer (se nedenfor).

For at se, hvilket swap-rum der er aktivt på dit UNIX / Linux-system, skal du køre følgende kommando i en terminal:

$ / sbin / swapon -s
Filnavn Type Størrelse Brugt prioritet
/ dev / dm-3 partition 16150524 316484 -1
$

Som et alternativ kan du sende en anmodning til proc-filsystemet og køre kommandoen cat / proc / swaps

Dette Linux-system har en swap-partition med en størrelse på ca. 15 GB, hvor over 300M er i brug i øjeblikket. Kolonnen Prioritet viser, hvilket swap-plads der skal bruges først. Standardværdien er -1. Jo højere prioritetsværdien er, desto tidligere tages der hensyn til dette swap-område. Indstillingen -s er den korte version af -summary. Denne indstilling er udfaset, og det anbefales at bruge indstillingen -show som følger i stedet:

$ / sbin / swapon --show = NAVN, TYPE, STØRRELSE, BRUGT, PRIO
NAVN TYPESTØRRELSE BRUGT PRIO
/ dev / dm-3 partition 15,4G 307,1M -1
$

Option-showet accepterer en liste over værdier, der repræsenterer kolonneoverskrifterne. For at opnå en bestemt outputrækkefølge skal du vælge de ønskede kolonneoverskrifter og dens rækkefølge.

Byt størrelse

Som hovedregel anbefales det, at swap-pladsens størrelse er dobbelt så meget, som systemet har fysisk hukommelse. Husk dette ved opsætninger til almindelige formål og stationære maskiner. For UNIX / Linux-servere med meget mere fysisk hukommelse kan du sænke størrelsen på swap-pladsen til 50% af RAM. Bærbare computere, der kan dvale, skal være lidt større end den fysiske hukommelse.

Installation

For en swap-partition anbefales det at tænke på swap-plads lige fra begyndelsen af ​​opdeling af disken i enkelte partitioner eller at efterlade nok ubrugt diskplads til at bruge den senere, til sidst. Normalt spørger installationsrutinen dig under størrelsen af ​​swap-rummet under konfigurationen af ​​de diske, der skal bruges. Som et eksempel ser det på Debian GNU / Linux ud som følger:

Som nævnt ovenfor, så længe du har plads til nye partitioner på din harddisk, kan du oprette og inkludere swap-partitioner ved hjælp af kommandoer som fdisk og swapon.

Alternativt kan swap space også aktiveres senere som en swap-fil. Linux understøtter denne måde, så du kan oprette, forberede og montere den på en måde, der ligner en swap-partition. Fordelen ved denne måde er, at du ikke behøver at ompartitionere en disk for at tilføje ekstra swap-plads.

Som et eksempel opretter vi en fil med navnet / swapfile med en størrelse på 512M og aktiverer denne som ekstra swap-plads. Først opretter vi en tom fil ved hjælp af dd-kommandoen. For det andet bruger mkswap denne fil til at omdanne den til swap-stil. Du bemærker muligvis, at indholdet af filen behandles som en partition, og en tilsvarende UUID tildeles. For det tredje aktiverer vi dette ved hjælp af swapon. Endelig viser kommandoswap-showet to swap-poster - en partition og den nyoprettede fil.

# dd if = / dev / zero of = / swapfile bs = 1024 count = 524288
524288 + 0 datasæt i
524288 + 0 datasæt ude
536870912 bytes (537 MB) kopieret, 0,887744 s, 605 MB / s
# mkswap / swapfile
Opsætning af swapspace version 1, størrelse = 524284 KiB
ingen etiket, UUID = e47ab7fe-5efc-4175-b287-d0e83bc10f2e
# swapon / swapfile
# swapon --show = NAVN, TYPE, STØRRELSE, BRUGT, PRIO
NAVN TYPESTØRRELSE BRUGT PRIO
/ dev / dm-3 partition 15,4G 288,9M -1
/ swapfile-fil 512M 0B -2
#

For at bruge denne swap-fil ved opstartstid skal du som administrator tilføje følgende linje til filen / etc / fstab:

/ swapfile ingen swap sw 0 0

Deaktivering af et bytteområde

Mindst men ikke sidst er der en kommando til at deaktivere swap-filen igen. Kommandoen kaldes udskiftning. Det kræver en enkelt parameter, der angiver, at swap-enheden skal deaktiveres. Denne kommando deaktiverer den tidligere aktiverede swap-fil:

# swapoff / swapfile

Også, udskiftning kan arbejde med UUID for et filsystem. At lave udskiftning handle på denne måde, brug indstillingen -U efterfulgt af UUID for det pågældende filsystem. I tilfælde af at det er nødvendigt at deaktivere alle swap-områder på én gang indstillingen --en (lang option -all) er ret praktisk. Den fulde kommando er swapoff -a.

Tuning af swap-økosystemet

Startende med Linux-kerneludgivelser 2.6 blev en ny værdi introduceret. Dette er gemt i variablen / proc / sys / vm / swappinessog styrer den relative vægt, der gives til at skifte ud af runtime-hukommelse, i modsætning til at droppe hukommelsessider fra systemets cache [2]. Standardværdien er 60 (procent af hukommelsen ledig, før swap aktiveres). Jo lavere værdi jo mindre swapping bruges, og jo flere hukommelsessider holdes i fysisk hukommelse.

For at indstille værdien skal du midlertidigt indstille værdien i / proc-filsystemet som følger:

# echo 10> / proc / sys / vm / swappiness

Som et alternativ kan du bruge sysctl kommando som følger:

# sysctl -w vm.swappiness = 10

For at indstille værdien skal du føje følgende linje til filen permanent / etc / sysctl.conf:

vm.swappiness = 10

Er swap stadig opdateret?

Du kan spørge, hvorfor vi behandler dette emne. Moderne computere har tilstrækkelig fysisk hukommelse - så hvorfor skal vi passe på det? Der er et par grunde til, at denne teknologi er mere værd end en tanke.

Husk, at du holder fast i din maskine et stykke tid, men muligvis opdaterer den software, du bruger på den fra tid til anden. I øjeblikket passer både hardware og softwaren til hinanden. I fremtiden kan det ændre sig, og du har brug for mere hukommelse, end du har nu. Medmindre du opgraderer eller køber ny hardware, kan en Swap-partition spare dig for lidt penge.

Du har muligvis hørt om en funktion kaldet suspend to disk eller dvale-tilstand [3]. Din maskine skal sove. Før det gør det, skal det gemme sin nuværende tilstand et eller andet sted. Nu kommer swap-pladsen i spil og fungerer som en container til at opbevare disse data. Så snart maskinen vågner næste gang, læses hele data fra swap-rummet, indlæst i hukommelsen, og du kan fortsætte med at arbejde, hvor du er stoppet før.

Hvis systemet kun har en permanent lagerenhed, skal systemet læse og skrive dine filer, mens du bytter på den samme enhed. Du vil se en enorm forbedring, hvis du har en anden enhed og kan adskille swap-enheden fra modstridende filadgang.

Swap-filen skal videregive data gennem filsystemet. Dette tilføjer et lag af indirektion for at få det til at se ud, at der er et sammenhængende logisk adresseområde, som kernen kan arbejde med. Dette tilføjer ekstra hukommelsesomkostninger og cpu-cyklusser. Du får de bedste resultater ved hjælp af en rå swap-partition.

Konklusion

Selv i dag er viden om swap vigtig. Dette emne er en del af den viden, der kræves for at bestå Linux Professional Institute Certificate Level 1 (LPIC 1). De fleste af eksamenerne indeholder et eller to spørgsmål om dette emne.

Swap space hjælper dit Linux-system (kerne) med hurtigt at organisere hukommelse, hvis der er behov for det. For at være åben med dig er det ikke absolut nødvendigt at bytte plads, hvis dit system har masser af RAM. I nødsituationer hjælper det dit system med at overleve. Derfor vil jeg aldrig forlade stien til en traditionel opsætning uden at bytte plads.

Kombinationen af ​​swap og SSD diskuteres på en kontroversiel måde, fordi antallet af diskskrivninger på en SSD er ret begrænset. Både swap- og midlertidige filer er bygget til at skrive masser af data. På den anden side har moderne SSD'er mere end nok ekstra plads (7%) til at klare sektorfejl. For at være på den sikre side: hvis det er muligt, skal du have en separat swap på en konventionel harddisk - brug ikke ramdisk eller en SSD, i det mindste til swap [4]. Dit Linux-system vil takke dig for denne beslutning.

For at undgå at placere swap-pladsen på din SSD kan du i stedet bruge ZRAM [5,6]. Dette er Virtual Swap komprimeret i RAM, også kaldet zSwap. Denne teknologi muliggør en komprimeret blokenhed i hukommelsen. Så snart der ikke er mere hukommelse tilbage, overføres hukommelsessider til denne blokenhed. Dette resulterer i mindre swap-brug og hjælper også med at forlænge harddiskens levetid.

Links og referencer

Linux Memory Management Series

Anerkendelser

Forfatteren vil gerne takke Mandy Neumeyer og Gerold Rupprecht for deres støtte under udarbejdelsen af ​​denne artikel.

Mus Sådan vender du musens og touchpadsens rulle retning i Windows 10
Sådan vender du musens og touchpadsens rulle retning i Windows 10
Mus og Touchpads gør ikke kun computing let, men mere effektiv og mindre tidskrævende. Vi kan ikke forestille os et liv uden disse enheder, men det er...
Mus Sådan ændres musemarkør og markørstørrelse, farve og skema på Windows 10
Sådan ændres musemarkør og markørstørrelse, farve og skema på Windows 10
Musemarkøren og markøren i Windows 10 er meget vigtige aspekter af operativsystemet. Dette kan også siges om andre operativsystemer, så i sandhed er d...
Gratis og open source-spilmotorer til udvikling af Linux-spil
Denne artikel dækker en liste over gratis og open source-spilmotorer, der kan bruges til at udvikle 2D- og 3D-spil på Linux. Der er mange sådanne spil...