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 -sFilnavn 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, PRIONAVN 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 = 524288524288 + 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:
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:
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 / swappiness
og 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.
- 0: bytte er deaktivert
- 1: minimumsbytte uten å deaktivere det helt
- 10: anbefalt verdi for å forbedre ytelsen når det er tilstrekkelig minne i et system
- 100: aggressiv bytte
Slik angir du verdien midlertidig, angir verdien i / proc-filsystemet slik:
# echo 10> / proc / sys / vm / swappinessSom et alternativ kan du bruke sysctl
kommandoen som følger:
For å stille inn verdien, legg til følgende linje i filen permanent / etc / sysctl.conf:
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
- [1] Andrew. S. Tanenbaum: Den minste nylig brukte (LRU) sideskiftalgoritmen i moderne operativsystemer
- [2] Wikipedia: https: // no.wikipedia.org / wiki / Swappiness
- [3] Strømstyring / Suspend og dvalemodus, Arch Linux Wiki
- [4] Bytt FAQ
- [5] ZRAM på Debian GNU / Linux
- [6] Linux Kernel Archive om ZRAM
Linux Memory Management Series
- Del 1: Linux Kernel Memory Management: Swap Space
- Del 2: Kommandoer for å administrere Linux-minne
- Del 3: Optimalisering av Linux-minnebruk
Anerkjennelser
Forfatteren vil takke Mandy Neumeyer og Gerold Rupprecht for deres støtte under utarbeidelsen av denne artikkelen.