Linux-kjernen

Linux Kernel Memory Management Swap Space

Linux Kernel Memory Management Swap Space

Del en. Bytt plass

For å fungere ordentlig avhenger en datamaskin av å ha tilstrekkelig mengde minne. Bare å si at det aldri kan være nok. Jo mer fysisk minne er installert, jo dyrere er det. For det meste er resultatet et smart kompromiss mellom kostnader og hastighet for å få tilgang til minnecellene.

For å oppnå dette kompromisset kombinerer UNIX / Linux-systemer to typer minne - fysisk minne (RAM), og bytter plass. Alt i alt kalles dette det virtuelle minnet til et datasystem. Fysisk minne er ganske dyrt, men raskt og tilgjengelig innen nanosekunder. I kontrast er bytteminne ganske billig, men tregt og tilgjengelig innen millisekunder.

Det finnes noen få grunner til at bytte minne er nyttig. For det første trenger noen ganger prosesser mer minne enn systemet fysisk eier, og kan gi mer til prosessene som krever det. Som et resultat kan ikke alle data som er lagret i fysisk minne lagres der lenger. Nå spiller bytteplassen inn, og et utvalg av minnesider overføres til bytteområdet for å frigjøre fysisk minne.

For det andre er ikke alle dataene nødvendige i minnet samtidig. Derfor er mindre brukte minnesider parkert på bytteplass for å ha så mye ledig fysisk minne tilgjengelig som mulig. Denne metoden er kalt den minst brukte sideskiftealgoritmen (LRU) [1].

Typer av bytte

Bytteplass finnes i to varianter. Versjon 1 er en egen diskpartisjon som er den såkalte swap-partisjonen. Det er ingen filer lagret på den partisjonen, men minneinformasjon (dump). Enkelt, versjon 2 er en fil på en disk som ligger i filsystemet på harddisken. Versjon 1 er veldig vanlig på UNIX / Linux-systemer, BSD og OS X, mens versjon 2 eksisterer på systemer som kjører Microsoft Windows. Versjon 2 kan også aktiveres på UNIX / Linux-systemer (se nedenfor).

For å se hvilken bytteplass som er aktiv på UNIX / Linux-systemet, kjør følgende kommando i en terminal:

$ / sbin / swapon -s
Filnavn Type Størrelse Brukt Prioritet
/ dev / dm-3 partisjon 16150524 316484 -1
$

Som et alternativ kan du sende en forespørsel til proc-filsystemet, og kjøre kommandoen cat / proc / swaps

Dette Linux-systemet har en byttepartisjon med en størrelse på rundt 15 GB der over 300M er i bruk, for øyeblikket. Kolonnen Prioritet viser hvilken bytteplass du skal bruke først. Standardverdien er -1. Jo høyere prioritetsverdien er, jo tidligere blir dette bytteområdet tatt i betraktning. Alternativet -s er kortversjonen av -summary. Dette alternativet er utfaset, og det anbefales å bruke alternativet -show som følger, i stedet:

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

Alternativet -show godtar en liste over verdier som representerer kolonneoverskriftene. For å oppnå en spesifikk utgangsrekkefølge, velg ønsket kolonneoverskrift og dens sekvens.

Bytt størrelse

Generelt sett anbefales størrelsen på bytteplassen å være dobbelt så mye som systemet har fysisk minne. Husk dette for generelle oppsett og stasjonære maskiner. For UNIX / Linux-servere med mye mer fysisk minne kan du redusere størrelsen på bytteplass til 50% av RAM. Bærbare datamaskiner som kan ligge i dvale, må være litt større enn det fysiske minnet.

Installasjon

For en byttepartisjon anbefales det å tenke på bytteplass helt fra begynnelsen av å splitte disken i enkeltpartisjoner, eller å legge igjen nok ubrukt diskplass til å bruke den senere, til slutt. Vanligvis vil konfigurasjonsrutinen spørre deg om størrelsen på bytteplassen under konfigurasjonen av diskene som skal brukes. Som et eksempel, på Debian GNU / Linux ser dette slik ut:

Så lenge du har plass til nye partisjoner på harddisken din, kan du opprette og inkludere byttepartisjoner med kommandoer som fdisk og swapon.

Alternativt kan bytteplass også aktiveres senere som en byttefil. Linux støtter denne måten slik at du kan lage, forberede og montere den på en måte som ligner på en byttepartisjon. Fordelen med denne måten er at du ikke trenger å ompartisjonere en disk for å legge til ekstra bytteplass.

Som et eksempel lager vi en fil med navnet / swapfile med en størrelse på 512M, og aktiverer denne som ekstra bytteplass. Først oppretter vi en tom fil ved hjelp av dd-kommandoen. For det andre bruker mkswap denne filen til å forvandle den til byttestil. Du vil kanskje legge merke til at innholdet i filen blir behandlet som en partisjon, og en tilsvarende UUID er tildelt. For det tredje aktiverer vi dette ved hjelp av swapon. Til slutt viser kommandobytte-showet to bytteoppføringer - en partisjon og den nyopprettede filen.

# dd if = / dev / zero of = / swapfile bs = 1024 count = 524288
524288 + 0 datasett i
524288 + 0 datasett ut
536870912 byte (537 MB) kopiert, 0,887744 s, 605 MB / s
# mkswap / swapfile
Sette opp swapspace versjon 1, størrelse = 524284 KiB
ingen etikett, UUID = e47ab7fe-5efc-4175-b287-d0e83bc10f2e
# swapon / swapfile
# swapon --show = NAVN, TYPE, STØRRELSE, Brukt, PRIO
NAVN TYPESTØRRELSE BRUKT PRIO
/ dev / dm-3 partisjon 15,4G 288,9M -1
/ byttefil 512M 0B -2
#

For å bruke denne byttefilen ved oppstart, legg til følgende linje i filen som administrator / etc / fstab:

/ byttefil ingen byttebytte 0 0

Deaktivering av et bytteområde

Minst men ikke sist er det en kommando for å deaktivere byttefilen, igjen. Kommandoen kalles bytte. Det krever en enkelt parameter som indikerer at bytteenheten skal deaktiveres. Denne kommandoen deaktiverer den tidligere aktiverte byttefilen:

# swapoff / swapfile

Også, bytte kan fungere med UUID i et filsystem. Å lage bytte handle på denne måten, bruk alternativet -U etterfulgt av UUID for det aktuelle filsystemet. I tilfelle det er nødvendig å deaktivere alle bytteområdene samtidig alternativet -en (langt alternativ - alt) er ganske praktisk. Den fulle kommandoen er bytte -a.

Tuning av bytteøkosystemet

Starter med Linux-kjerneutgivelser 2.6 ble en ny verdi introdusert. Dette lagres i variabelen / proc / sys / vm / swappinessog styrer den relative vekten som er gitt for å bytte ut kjøretidsminne, i motsetning til å slippe minnesider fra systemsiden cache [2]. Standardverdien er 60 (prosent av ledig minne før du aktiverer bytte). Jo lavere verdi jo mindre bytte blir brukt, og jo flere minnesider holdes i fysisk minne.

Slik angir du verdien midlertidig, angir verdien i / proc-filsystemet slik:

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

Som et alternativ kan du bruke sysctl kommandoen som følger:

# sysctl -w vm.swappiness = 10

For å stille inn verdien, legg til følgende linje i filen permanent / etc / sysctl.conf:

vm.swappiness = 10

Er swap fortsatt oppdatert?

Du kan spørre hvorfor vi takler dette emnet. Moderne datamaskiner har nok fysisk minne - så hvorfor må vi bry oss om det? Det er noen få grunner til at denne teknologien er verdt mer enn en tanke.

Husk at du holder deg med maskinen din en stund, men kanskje oppdaterer programvaren du bruker på den fra tid til annen. Foreløpig passer både maskinvaren og programvaren til hverandre. I fremtiden kan det endres, og du trenger mer minne enn du har nå. Med mindre du oppgraderer eller kjøper ny maskinvare, kan en byttepartisjon spare deg for litt penger.

Du har kanskje hørt om en funksjon som heter suspend to disk, eller dvalemodus [3]. Maskinen din skal sove. Før du gjør det, må den lagre sin nåværende tilstand et sted. Nå spiller bytteplassen inn, og fungerer som en beholder for å beholde disse dataene. Så snart maskinen våkner neste gang hele dataene blir lest fra bytteplassen, lastet inn i minnet, og du kan fortsette å jobbe der du har stoppet før.

Hvis systemet bare har en permanent lagringsenhet, må systemet lese og skrive filene dine mens du bytter på samme enhet. Du vil se en enorm forbedring hvis du har en ekstra enhet og kan skille bytteenheten fra motstridende filtilgang.

Byttefilen må føre data gjennom filsystemet. Dette legger til et lag med indireksjon, slik at det ser ut til at det er en sammenhengende logisk adresseplass for kjernen å jobbe med. Dette legger til ekstra minne- og CPU-sykluser. Du får de beste resultatene ved å bruke en rå byttepartisjon.

Konklusjon

Selv i dag er kunnskapen om bytte viktig. Dette emnet er en del av kunnskapen som kreves for å bestå Linux Professional Institute Certificate Level 1 (LPIC 1). De fleste av eksamenene inneholder ett eller to spørsmål om dette emnet.

Bytt plass hjelper Linux-systemet ditt (kjerne) til å raskt organisere minne hvis det er behov for det. For å være åpen med deg, er ikke bytteplass absolutt nødvendig i tilfelle systemet ditt har mye RAM. I nødstilfeller hjelper det systemet å overleve. Derfor vil jeg aldri forlate banen til et tradisjonelt oppsett uten å bytte plass.

Kombinasjonen av bytte og SSD blir diskutert på en kontroversiell måte fordi antall plater som skrives på en SSD er ganske begrenset. Både swap- og midlertidige filer er bygget for å skrive mye data. På den annen side har moderne SSD-er mer enn nok ekstra plass (7%) for å takle sektorfeil. For å være på den sikre siden: ha om mulig en separat bytte på en vanlig harddisk - ikke bruk ramdisk eller SSD, i det minste for bytte [4]. Linux-systemet ditt vil takke deg for denne avgjørelsen.

For å unngå å bytte plass på SSD-en din, kan du bruke ZRAM i stedet [5,6]. Dette er Virtual Swap Compressed in RAM, også kalt zSwap. Denne teknologien muliggjør en komprimert blokkenhet i minnet. Så snart det ikke er mer minne igjen, blir minnesider overført til denne blokkeringsenheten. Dette resulterer i mindre byttebruk, og hjelper også til å forlenge harddiskens levetid.

Lenker og referanser

Linux Memory Management Series

Anerkjennelser

Forfatteren vil takke Mandy Neumeyer og Gerold Rupprecht for deres støtte under utarbeidelsen av denne artikkelen.

Topp 5 spillfangstkort
Vi har alle sett og elsket streaming av spill på YouTube. PewDiePie, Jakesepticye og Markiplier er bare noen av de beste spillerne som har tjent milli...
Hvordan utvikle et spill på Linux
For et tiår siden ville ikke mange Linux-brukere forutsi at deres favorittoperativsystem en dag ville være en populær spillplattform for kommersielle ...
Åpne kildeporter for kommersielle spillmotorer
Gratis, åpen kildekode og plattformspillmotorrekreasjoner kan brukes til å spille gamle så vel som noen av de ganske nylige spilletitlene. Denne artik...