Du har kanskje opplevd systemlags, tung byttebruk eller problemer med lite minne i ditt Linux-system. Et vanlig råd er å "redusere swappiness-verdien", redusere swap-bruken. men hva er swappiness? Og er det veldig bra å finjustere det?

Merk : Vi vil ikke gå nærmere om swap-partisjonen. Du kan lese alt om det i vår artikkel om hva du trenger å vite om Swap-partisjon på Linux.

Swappiness

Det er en verdi som kalles swappiness i UNIX-lignende systemer som bestemmer hvordan sidene i minnet skal håndteres. Standardverdien på de fleste systemer er "60", men den kan settes til alt mellom 0 og 100. Hvis minnet går lavt, vil kjernen enten sette ut noen fil-caches for å få mer ledig RAM for prosesser, eller det vil bytte ut noen prosess sider fra RAM til disk.

En standard på 60 betyr bytte vil bli brukt mindre, og I / O-caches vil mer sannsynlig bli frigjort for omfordeling av RAM. Utsettelse av cacher betraktes som "billigere" (mindre ressursintensiv), mens bytte ut sider inneholder disk leser og skriver, noe som gjør dem mer "dyre". Ved en verdi på '60 vil bytteforbruk være noe lavere enn cache-gjenbruk. Hvis verdien av swappiness er økt til 100, vil bytte og fil cache eviction bli brukt med lik vekt. Dette betyr mer bytte og raskere I / O enn standard. Lavere verdier som "10" betyr at bytte vil bli brukt mye mindre, og I / O-caches kan mye tidligere bli utvist til fordel for prosesser. Dette kan øke interaktiviteten, men kan også skade I / O-hastighet.

Minske swappiness

Du vil ofte se rådene på nettsteder og fora for å redusere swappiness til "10." Dette er ment for å øke hastigheten ved å bruke mindre bytte og holde flere prosesser i fysisk RAM. Denne logikken kan være litt for enkel og kan ikke være en "en størrelse passer til alle løsninger."

Redusere verdien av swappiness kan være bra i følgende scenarier:

  • For databasesystemer, eller hvis du bruker mange databaseintensive applikasjoner : Databaser håndterer generelt filkryptering bedre enn OS ville. Hvis du reduserer swappiness, vil du begrense OS-filen caching, og dermed gi en sjanse til databasen til å håndtere sine egne caches.
  • For interaktivitet : Hvis du multitasker mye, men håndterer noen filer eller ikke åpner store dokumenter, kan dette forbedre hvor jevnt systemet ditt vil føle. Mindre prosesser skrives ut på disk, og da RAM-tilgangen er mye raskere, kan datamaskinen din føle seg raskere. Du må også huske på at dette kan redusere I / O-ytelsen. Hvis du har sakte disker eller gjør alt jeg / O-intensiv, kan det til og med skape ytelse.
  • For placebo : Mange tror at en lavere swappiness vil øke hastigheten på systemet. Seriøst, tror du at systemet ditt er raskere, kan det få effekten av å oppleve det for å være raskere også.

Husk at redusert swappiness kan resultere i krasjer og prosesser blir slått av tilfeldigvis av systemet for å frigjøre minne. Redusere swappiness vil være best hvis du har nok RAM tilgjengelig for å kjøre systemet jevnt. Men du bør holde verdien over "10", som noen bytte bruk er bra å ha.

Økende swappiness

Økende swappiness kan ha den generelle fordelen av å øke I / O. Selv om det ikke ofte anbefales, kan økende swappiness komme til nytte hvis:

  • Du utfører noen I / O-intensive operasjoner, og du har sakte, gamle harddisker . For eksempel: Å utføre sikkerhetskopier eller batchredigering av bilder kan være I / O-intensiv (Et bemerkelsesverdig unntak er databaser som er naturlig I / O-intensive, men kan ha nytte av en lavere swappiness-verdi som vist ovenfor.).
  • Du har lavt minne, men har relativt raske disker. I dette usannsynlige scenariet kan en høyere verdi av swappiness bidra til å håndtere minne mer effektivt (selv om det blir for høyt, kan det igjen skade ytelsen.).

Hvordan håndtere swappiness

Først bør du vurdere om du trenger å berøre denne verdien i det hele tatt. Opplever du ytelsesproblemer? Og enda viktigere, har du prøvd andre system tweaks ennå? Hvis ikke, er det sannsynligvis best å se andre steder først. Men hvis du har et bestemt scenario i tankene, vil du kanskje fortsette.

Deretter, hvor tung er byttet ditt? Du kan finne det ut med ethvert ytelsesovervåkingsverktøy av ditt valg eller med den free kommandoen. free -m vil gi deg et øyeblikksbilde av minnebruk i megabyte. For kontinuerlig overvåking, vil du kanskje bruke watch.

 se -n 1 fri -m 

Dette vil kjøre kommandoen free -m hvert sekund og skrive ut produksjonen til du trykker på "Ctrl + C."

Som du ser ovenfor, brukes det svært lite bytte av systemet denne artikkelen er skrevet på.

Nå hvis du opplever å bytte, kan du være interessert hvor mye av det er aktivt. Kommandoen vmstat vil fortelle deg alt du trenger å vite om systemets virtuelle minnebruk (bytte og fysisk ram sammen).

 vmstat 1 

Du må sjekke swap kolonnen der si betyr "bytte inn", og so betyr "bytte ut". Hvis tallene er høye, betyr det mye bytteaktivitet som er en indikator på problemer med lavt minne. Hvis du ser byttebruk av free men lite aktiv bytte, kan det hende at tweaking swappiness skyldes.

Det er også en god ide å etablere andre ytelsesstandarder som disk I / O, last gjennomsnitt, etc., så når du tester de nye swappiness-verdiene, har du noe å sammenligne mot.

For å teste en annen swappiness-verdi, kan du sette den midlertidig med sysctl kommandoen. Dette trenger ingen omstart, og effekten er umiddelbar. Faktisk vil omstart gjenopprette standardverdien, så du er ganske sikker på å eksperimentere:

 sudo sysctl vm.swappiness = 10 

Selvfølgelig kan du sette noen verdi i stedet for "10" (mellom "0" og "100").

Når du har funnet din foretrukne verdi, kan du permanent endre systemkonfigurasjonen ved å redigere "/etc/sysctl.conf"

 sudo nano /etc/sysctl.conf 

og legge til linjene

 #Sett swappiness-verdi vm.swappiness = 10 

til slutten av denne filen, med verdien satt til din preferanse igjen, selvfølgelig.

Konklusjon

Senking av swappiness til "10" blir ofte anbefalt som en løsning med en størrelse, men den faktiske bruken av teknikken kan være en liten bit mer komplisert enn det. Ved å etablere benchmarks, å vite systemet ditt, hvordan du bruker det og hva du trenger fra det, kan du finjustere bytteforbruket og oppnå noe ytelse (enten interaktivitet eller I / O) økning.