Linux Kernel Memory Management Swap Space

Linux Kernel Memory Management Swap Space

Del en. Byttområdet

For å fungere ordentlig avhenger en datamaskin av å ha en tilstrekkelig mengde minne. Bare å si at det aldri kan være nok. Jo mer fysisk minne er installert, jo mer kostbart er det. Stort sett 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 bytt plass. Til sammen kalles dette det virtuelle minnet til et datasystem. Fysisk minne er ganske dyrt, men raskt og tilgjengelig innen nanosekunder. Derimot er byttehukommelse ganske billig, men treg og tilgjengelig innen millisekunder.

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

For det andre er det ikke alle dataene som trengs i minnet samtidig. Derfor er mindre brukte minnesider parkert på bytteplass for å ha så mye gratis fysisk minne tilgjengelig som mulig. Denne metoden heter den minst nylig brukte siden erstatningsalgoritmen (LRU) [1].

Typer bytte

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

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

$ /sbin /swapon -s
Filnavn typestø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 300 meter er i bruk, for tiden. Prioritetskolonnen viser hvilken bytt plass som skal brukes først. Standardverdien er -1. Jo høyere prioriteringsverdi, jo tidligere er det tatt hensyn til dette bytteområdet. Alternativet -S er den korte versjonen av -summary. Dette alternativet er utdatert, og det anbefales å bruke alternativet -how som følger, i stedet:

$ /sbin /swapon --show = navn, type, størrelse, brukt, prio
Navn Type stø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 kolonneoverskrifter og dens sekvens.

Bytt størrelse

Som en generell regel størrelsen på bytteplassen anbefales det å 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 senke størrelsen på byttingens plass til 50% av RAM. Bærbare datamaskiner som kan dvale må være litt større enn det fysiske minnet.

Installasjon

For en byttepartisjon anbefales det å tenke på bytte plass helt fra begynnelsen av å dele opp disken i enkeltpartisjoner, eller å la nok ubrukt diskplass bruke den senere, til slutt. Vanligvis, under konfigurasjonen av diskene som skal brukes, ber installasjonsrutinen deg om størrelsen på bytteplassen. Som et eksempel på Debian Gnu/Linux ser dette ut som følger:

Som nevnt ovenfor, så lenge du har plass til nye partisjoner på harddisken, kan du opprette og inkludere byttepartisjoner med bruk av kommandoer som Fdisk og Swapon.

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

Som et eksempel lager vi en fil som heter /swapfile med en størrelse på 512m, og aktiverer dette som ekstra bytteplass. Først ved hjelp av DD -kommandoen oppretter vi en tom fil. For det andre bruker MKSWAP denne filen for å transformere den til Swap -stil. Du kan merke 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 kommandoen Swapon -how to bytteoppføringer - en partisjon og den nyopprettede filen.

# dd if =/dev/null av =/swapfile bs = 1024 telling = 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 Type størrelse brukt prio
/dev/dm -3 partisjon 15,4g 288,9m -1
/Swapfile File 512m 0b -2
#

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

/Swapfile ingen Swap SW 0 0

Deaktivering av et bytteplass

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

# Swapoff /Swapfile

Også, Swapoff kan jobbe med UUID i et filsystem. Å lage Swapoff Handle på denne måten bruk alternativet -U etterfulgt av UUID av det ifølge filsystemet. I tilfelle det er nødvendig for å deaktivere alle bytteplassene på en gang alternativet -en (Langt alternativ -All) er ganske nyttig. Hele kommandoen er Swapoff -a.

Tuning av byttet økosystem

Begynner med Linux Kernel utgivelser 2.6 En ny verdi ble introdusert. Dette lagres i variabelen /proc/sys/vm/swappinessog kontrollerer den relative vekten som er gitt til å bytte ut av runtime -minnet, i motsetning til å slippe minnesider fra systemsiden Cache [2]. Standardverdien er 60 (prosent av minnefri før du aktiverer bytte). Jo lavere verdi, jo mindre bytte brukes, og jo mer minnesidene holdes i fysisk minne.

  • 0: Swap er deaktivert
  • 1: Minimumsbytte for å bytte uten å deaktivere det helt
  • 10: Anbefalt verdi for å forbedre ytelsen når det eksisterer tilstrekkelig minne i et system
  • 100: Aggressiv bytte

For å angi verdien midlertidig angi verdien i /proc -filsystemet som følger:

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

Som et alternativ kan du bruke Sysctl Kommando som følger:

# sysctl -w vm.Swappiness = 10

For å angi verdien permanent å legge til følgende linje i filen /etc/sysctl.konf:

vm.Swappiness = 10

Bytter fortsatt oppdatert?

Du kan spørre hvorfor vi takler det 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 mer verdt enn en tanke.

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

Du har kanskje hørt om en funksjon som heter Suspend to Disk, eller Hibernate Mode [3]. Maskinen din skal sove. Før du gjør det, må det lagre sin nåværende tilstand et sted. Nå kommer byttestedet i spill, 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.

Systemet, hvis det bare har en permanent lagringsenhet, må lese og skrive filene dine mens du bytter på samme enhet. Du vil se en enorm forbedring hvis du har en annen enhet og kan skille bytteenheten fra motstridende filtilganger.

Byttefilen må sende data gjennom filsystemet. Dette tilfører et lag med indireksjon, for å få det til å se ut til at det er et sammenhengende logisk adresseom for kjernen å jobbe med. Dette tilfører ekstra minneoverhead og CPU -sykluser. Du vil få best resultat ved hjelp av en rå byttepartisjon.

Konklusjon

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

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

Kombinasjonen av bytte og SSD er diskutert på en kontroversiell måte fordi antallet plate skriver på en SSD er ganske begrenset. Både bytte og midlertidige filer er bygget for å skrive masse data. På den annen side har moderne SSD -er mer enn nok ekstra plass (7%) til å takle sektorfeil. For å være på den trygge siden: Har du om mulig en egen bytte på en konvensjonell harddisk - ikke bruk Ramdisk, og heller ikke en SSD, i det minste for bytte. Linux -systemet ditt vil takke deg for denne avgjørelsen.

For å unngå å sette bytteplassen på SSD -en din, kan du bruke ZRAM, i stedet [5,6]. Dette er virtuell bytte komprimert i RAM, også kalt ZSWAP. Denne teknologien muliggjør en komprimert blokkenhet i minnet. Så snart det ikke er mer minnet, blir venstre minnesider overført til denne blokkeringsenheten. Dette resulterer i mindre byttebruk, og hjelper deg også med å forlenge harddisken.

Lenker og referanser

  • [1] Andrew. S. Tanenbaum: Den minst nylig brukte (LRU) sideutskiftningsalgoritmen i moderne operativsystemer
  • [2] Wikipedia: https: // no.Wikipedia.org/wiki/swappiness
  • [3] Strømstyring/suspendering og dvalemodus, Arch Linux Wiki
  • [5] Zram på Debian Gnu/Linux
  • [6] Linux -kjernearkivet om ZRAM

Linux Memory Management Series

  • Del 1: Linux Kernel Memory Management: Swap Space
  • Del 2: Kommandoer for å administrere Linux -minnet
  • Del 3: Optimalisering av Linux -minnebruk

Anerkjennelser

Forfatteren vil takke Mandy Neumeyer og Gerold Rupprecht for deres støtte mens han utarbeidet denne artikkelen.