Linux-kerne

Forståelse vm.swappiness

Forståelse vm.swappiness
Linux-kernen er et ret komplekst stykke software med en lang liste af komponenter såsom moduler, grænseflader og konfigurationsfiler [1]. Disse komponenter kan konfigureres med specifikke værdier for at opnå en ønsket opførsel eller funktionsmåde for komponenten [2,3,4]. Derefter påvirker denne opsætning direkte både din Linux-systems opførsel og ydeevne.

De aktuelle værdier for Linux-kernen og dens komponenter gøres tilgængelige ved hjælp af en speciel grænseflade - / proc-biblioteket [5]. Dette er et virtuelt filsystem, hvor de enkelte filer er fyldt med værdier i realtid. Værdierne repræsenterer den aktuelle tilstand, som Linux-kernen er i. Du kan få adgang til de enkelte filer i / proc-biblioteket ved hjælp af cat-kommandoen som følger:

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

En af disse kerneparametre kaldes vm.swappiness. Det “styrer den relative vægt, der gives til at bytte ud af runtime-hukommelse, i modsætning til at droppe hukommelsessider fra systemets cache” [6]. Startende med Linux-kerneludgivelser 2.6 blev denne værdi introduceret. Det gemmes i filen / proc / sys / vm / swappiness .

Brug af swap

Brugen af ​​swap [6] var en væsentlig del af brugen af ​​mindre UNIX-maskiner i begyndelsen af ​​1990'erne. Det er stadig nyttigt (som at have et reservehjul i dit køretøj), når grimme hukommelseslækage forstyrrer dit arbejde. Maskinen vil sænke farten, men i de fleste tilfælde vil den stadig kunne bruges til at afslutte sin tildelte opgave. Gratis softwareudviklere har gjort store fremskridt for at reducere og eliminere programfejl, så overvej at opdatere til en nyere version af din applikation og relaterede biblioteker, før du ændrer kerneparametre.

Hvis du kører adskillige opgaver, byttes de inaktive opgaver ud til disken, hvilket gør hukommelsen bedre brugt sammen med dine aktive opgaver. Videoredigering og andre store hukommelsesforbrugende applikationer har ofte anbefalede mængder hukommelse og diskplads. Hvis du har en ældre maskine, der ikke kan have en hukommelsesopgradering, kan det være en god midlertidig løsning at gøre mere swap tilgængelig (se [6] om, hvordan du lærer mere om det).

Udskiftningen kan ske på en separat partition eller på en swap-fil. Partitionen er hurtigere og foretrukket af mange databaseapplikationer. Filtilgangen er mere fleksibel (se dphys-swapfile-pakken i Debian GNU / Linux [7]). At have mere end en fysisk enhed til bytte giver Linux-kernen mulighed for at vælge den enhed, der er hurtigst tilgængelig (lavere latenstid).

vm.swappiness

Standardværdien af ​​vm.swappiness er 60 og repræsenterer procentdelen af ​​den ledige hukommelse, før swap aktiveres. Jo lavere værdi, desto mindre bruges bytte, og jo flere hukommelsessider holdes i fysisk hukommelse.

Værdien af ​​60 er et kompromis, der fungerer godt til moderne desktop-systemer. En mindre værdi er i stedet en anbefalet mulighed for et serversystem. Som Red Hat Performance Tuning-manualen påpeger [8], anbefales en mindre swappiness-værdi til databasearbejdsbelastninger. For eksempel til Oracle-databaser anbefaler Red Hat en swappiness-værdi på 10. I modsætning hertil anbefales det for MariaDB-databaser at indstille swappiness til en værdi på 1 [9].

Ændring af værdien har direkte indflydelse på Linux-systemets ydeevne. Disse værdier er defineret:

* 0: swap er deaktiveret
* 1: minimumsbytte uden at deaktivere det helt
* 10: anbefalet værdi for at forbedre ydeevnen, når der er tilstrækkelig hukommelse i et system
* 100: aggressiv swapping

Som vist ovenfor hjælper katkommandoen med at læse værdien. Sysctl-kommandoen giver dig også det samme resultat:

# sysctl vm.swappiness
vm.swappiness = 60
#

Husk, at sysctl-kommandoen kun er tilgængelig for en administrativ bruger. For at indstille værdien skal du midlertidigt indstille værdien i / proc-filsystemet som følger:

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

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

# sysctl -w vm.swappiness = 10

For at indstille værdien permanent skal du åbne filen / etc / sysctl.conf som en administrativ bruger og tilføj følgende linje:

vm.swappiness = 10

Konklusion

Flere og flere linux-brugere kører virtuelle maskiner. Hver enkelt har sin egen kerne ud over den hypervisor, der faktisk styrer hardwaren. Virtuelle maskiner har virtuelle diske oprettet til dem, så ændring af indstillingen inde i den virtuelle maskine vil have ubestemte resultater. Eksperimentér først med at ændre værdierne for hypervisor-kernen, da den faktisk styrer hardware på din maskine.

For ældre maskiner, der ikke længere kan opgraderes (har allerede maksimal understøttet hukommelse), kan du overveje at placere en lille solid state-disk i maskinen for at bruge den som en ekstra swap-enhed. Dette bliver naturligvis et forbrugsstof, da hukommelsesceller fejler ved mange skrivninger, men kan forlænge maskinens levetid i et år eller mere til meget lave omkostninger. Den lavere latenstid og hurtige aflæsninger giver meget bedre ydeevne end at skifte til en almindelig disk, hvilket giver mellemliggende resultater til RAM. Dette skulle give dig mulighed for at bruge noget lavere vm.swappiness-værdier for optimal ydeevne. Du bliver nødt til at eksperimentere. SSD-enheder skifter hurtigt.

Hvis du har mere end en swap-enhed, skal du overveje at gøre det til en RAID-enhed til at stribe data på tværs af de tilgængelige enheder.

Du kan foretage ændringer i swappiness uden at genstarte maskinen, en stor fordel i forhold til andre operativsystemer.

Prøv kun at medtage de tjenester, du har brug for til din virksomhed. Dette reducerer hukommelseskravene, forbedrer ydeevnen og holder alt enklere.

En sidste note: Du tilføjer belastning til dine swap-enheder. Du vil overvåge temperaturen på dem. Et overophedet system sænker CPU-frekvensen og sænker.

Anerkendelser

Forfatteren vil gerne sige en særlig tak til Gerold Rupprecht og Zoleka Hatitongwe for deres kritiske bemærkninger og kommentarer under udarbejdelsen af ​​denne artikel.

Links og referencer

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

* [2] Derek Molloy: Skrivning af et Linux-kernemodul - Del 1: Introduktion, http: // derekmolloy.dvs. / skrive-en-linux-kernel-modul-del-1-introduktion /

* [3] Derek Molloy: Skrivning af et Linux-kernemodul - Del 2: En karakterenhed, http: // derekmolloy.dvs. at skrive en linux-kernel-modul-del-2-en-tegn-enhed /

* [4] Derek Molloy: Skrivning af et Linux-kernemodul - Del 3: Knapper og lysdioder, http: // derekmolloy.dvs. / kernel-gpio-programmering-knapper-og-lysdioder /

* [5] Frank Hofmann: Kommandoer til at styre Linux-hukommelse, https: // linuxhint.com / kommandoer til at administrere-linux-hukommelse /

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

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

* [8] Red Hat Performance Tuning Guide, https: // adgang.rød hat.com / dokumentation / da-os / red_hat_enterprise_linux / 6 / html / performance_tuning_guide / s-memory-tunables

* [9] Konfiguration af MariaDB, https: // mariadb.com / kb / da / bibliotek / konfiguration-swappiness /

Kæmp om Wesnoth-vejledning
Slaget om Wesnoth er et af de mest populære open source-strategispil, som du kan spille på dette tidspunkt. Ikke kun har dette spil været under udvikl...
0 A.D. Vejledning
Ud af de mange strategispil derude, 0 A.D. formår at skille sig ud som en omfattende titel og et meget dybt, taktisk spil på trods af at det er open s...
Unity3D Tutorial
Introduktion til Unity 3D Unity 3D er en kraftfuld spiludviklingsmotor. Det er cross platform, det er det giver dig mulighed for at oprette spil til m...