Linux-kjernen

Forstå vm.swappiness

Forstå vm.swappiness
Linux-kjernen er en ganske kompleks programvare med en lang liste over komponenter som moduler, grensesnitt og konfigurasjonsfiler [1]. Disse komponentene kan konfigureres med spesifikke verdier for å oppnå ønsket oppførsel eller driftsmåte for komponenten [2,3,4]. Deretter påvirker dette oppsettet direkte både oppførselen og ytelsen til Linux-systemet ditt som helhet.

De nåværende verdiene til Linux-kjernen og dens komponenter blir gjort tilgjengelige ved hjelp av et spesielt grensesnitt - katalogen / proc [5]. Dette er et virtuelt filsystem der enkeltfilene er fylt med verdier i sanntid. Verdiene representerer den faktiske tilstanden Linux-kjernen er i. Du kan få tilgang til de enkelte filene i / proc-katalogen ved hjelp av cat-kommandoen som følger:

$ cat / proc / sys / net / core / somaxconn
128
$

En av disse kjerneparametrene kalles vm.swappiness. Den "styrer den relative vekten som er gitt for å bytte ut kjøretidsminne, i motsetning til å slippe minnesider fra systemets cache" [6]. Starter med Linux-kjerneutgivelser 2.6 ble denne verdien introdusert. Den lagres i filen / proc / sys / vm / swappiness .

Bruke bytte

Bruken av bytte [6] var en viktig del av bruken av mindre UNIX-maskiner tidlig på 1990-tallet. Det er fremdeles nyttig (som å ha et reservedekk i kjøretøyet) når ekle minnelekkasjer forstyrrer arbeidet ditt. Maskinen vil avta, men vil i de fleste tilfeller fortsatt være brukbar for å fullføre den tildelte oppgaven. Gratis programvareutviklere har gjort store fremskritt for å redusere og eliminere programfeil, så før du endrer kjerneparametere, bør du først oppdatere til en nyere versjon av applikasjonen og relaterte biblioteker.

Hvis du kjører flere oppgaver, vil de inaktive oppgavene bli byttet ut til disk, og utnytte minnet bedre sammen med dine aktive oppgaver. Videoredigering og andre store minnekrevende applikasjoner har ofte anbefalte mengder minne og diskplass. Hvis du har en eldre maskin som ikke kan ha en minneoppgradering, kan det være en god midlertidig løsning å gjøre mer bytte tilgjengelig (se [6] om hvordan du lærer mer om det).

Byttingen kan skje på en egen partisjon eller på en byttefil. Partisjonen er raskere og favoriseres av mange databaseapplikasjoner. Filtilnærmingen er mer fleksibel (se pakken dphys-swapfile i Debian GNU / Linux [7]). Å ha mer enn en fysisk enhet for bytte lar Linux-kjernen velge den enheten som er raskest tilgjengelig (lavere ventetid).

vm.swappiness

Standardverdien for vm.swappiness er 60 og representerer prosentandelen av ledig minne før du aktiverer bytte. Jo lavere verdi, desto mindre blir bytte brukt, og jo flere minnesider holdes i fysisk minne.

Verdien på 60 er et kompromiss som fungerer bra for moderne stasjonære systemer. En mindre verdi er et anbefalt alternativ for et serversystem, i stedet. Som Red Hat Performance Tuning manualen påpeker [8], anbefales en mindre bytteverdi for databasearbeid. For eksempel, for Oracle-databaser, anbefaler Red Hat en bytteverdi på 10. For MariaDB-databaser anbefales det derimot å sette swappiness til verdien 1 [9].

Endring av verdien påvirker direkte ytelsen til Linux-systemet. Disse verdiene er definert:

* 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

Som vist ovenfor hjelper kattkommandoen til å lese verdien. Sysctl-kommandoen gir deg også det samme resultatet:

# sysctl vm.swappiness
vm.swappiness = 60
#

Husk at sysctl-kommandoen bare er tilgjengelig for en administrativ bruker. 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 å sette verdien permanent, åpne filen / etc / sysctl.conf som administrativ bruker og legg til følgende linje:

vm.swappiness = 10

Konklusjon

Flere og flere linux-brukere kjører virtuelle maskiner. Hver og en har sin egen kjerne i tillegg til hypervisoren som faktisk styrer maskinvaren. Virtuelle maskiner har virtuelle disker opprettet for dem, så endring av innstillingen inne i den virtuelle maskinen vil ha ubestemte resultater. Forsøk først med å endre verdiene til hypervisor-kjernen, da den faktisk styrer maskinvaren på maskinen din.

For eldre maskiner som ikke lenger kan oppgraderes (har allerede maksimalt støttet minne), kan du vurdere å plassere en liten solid state-disk i maskinen for å bruke den som en ekstra bytteenhet. Dette vil åpenbart bli forbruksmateriell ettersom minneceller mislykkes fra mange skrivinger, men kan forlenge maskinens levetid i et år eller mer til svært lave kostnader. Den lavere ventetiden og raske avlesninger vil gi mye bedre ytelse enn å bytte til en vanlig disk, noe som gir mellomliggende resultater til RAM. Dette skal tillate deg å bruke noe lavere vm.swappiness-verdier for optimal ytelse. Du må eksperimentere. SSD-enheter endres raskt.

Hvis du har mer enn en bytteenhet, bør du vurdere å gjøre det til en RAID-enhet for å strippe data på tvers av tilgjengelige enheter.

Du kan gjøre endringer i swappiness uten å starte maskinen på nytt, en stor fordel i forhold til andre operativsystemer.

Prøv å ta med bare tjenestene du trenger for virksomheten din. Dette vil redusere minnekravene, forbedre ytelsen og holde alt enklere.

En siste merknad: Du vil legge til belastning på bytteenhetene dine. Du vil ønske å overvåke temperaturene på dem. Et overopphetet system vil senke CPU-frekvensen og redusere hastigheten.

Anerkjennelser

Forfatteren vil rette en spesiell takk til Gerold Rupprecht og Zoleka Hatitongwe for deres kritiske kommentarer og kommentarer mens han forbereder denne artikkelen.

Lenker og referanser

* [1] Linux Kernel Tutorial for Beginners, https: // linuxhint.no / linux-kernel-tutorial-nybegynnere /

* [2] Derek Molloy: Writing a Linux Kernel Module - Del 1: Introduksjon, http: // derekmolloy.dvs. / skrive-en-linux-kjernemodul-del-1-introduksjon /

* [3] Derek Molloy: Skrive en Linux-kjernemodul - Del 2: En karakterenhet, http: // derekmolloy.dvs. / skrive-en-linux-kjernemodul-del-2-en-tegn-enhet /

* [4] Derek Molloy: Skrive en Linux-kjernemodul - Del 3: Knapper og lysdioder, http: // derekmolloy.dvs. / kernel-gpio-programmering-knapper-og-lysdioder /

* [5] Frank Hofmann: Kommandoer om å administrere Linux-minne, https: // linuxhint.com / kommandoer for å administrere linux-minne /

* [6] Frank Hofmann: Linux Kernel Memory Management: Swap Space, https: // linuxhint.com / linux-memory-management-swap-space /

* [7] dphys-swapfile-pakke for Debian GNU / Linux, https: //-pakker.debian.org / stretch / dphys-swapfile

* [8] Red Hat Performance Tuning Guide, https: // access.Rød hatt.no / dokumentasjon / no-us / red_hat_enterprise_linux / 6 / html / performance_tuning_guide / s-memory-tunables

* [9] Konfigurere MariaDB, https: // mariadb.no / kb / no / bibliotek / configuring-swappiness /

Mus Topp 5 ergonomiske datamuseprodukter for Linux
Topp 5 ergonomiske datamuseprodukter for Linux
Gir langvarig bruk av datamaskiner smerter i håndleddet eller fingrene? Lider du av stive ledd og må hele tiden riste på deg hendene? Føler du en bren...
Mus Hvordan endre mus og berøringsplateinnstillinger ved hjelp av Xinput i Linux
Hvordan endre mus og berøringsplateinnstillinger ved hjelp av Xinput i Linux
De fleste Linux-distribusjoner leveres med "libinput" -biblioteket som standard for å håndtere inngangshendelser på et system. Den kan behandle inngan...
Mus Kartlegg museknappene på en annen måte for annen programvare med X-Mouse Button Control
Kartlegg museknappene på en annen måte for annen programvare med X-Mouse Button Control
Kanskje du trenger et verktøy som kan gjøre at musens kontroll endres med hvert program du bruker. Hvis dette er tilfelle, kan du prøve et program som...