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 / somaxconn128
$
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.swappinessvm.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 / swappinessSom et alternativ kan du bruge sysctl-kommandoen som følger:
# sysctl -w vm.swappiness = 10For at indstille værdien permanent skal du åbne filen / etc / sysctl.conf som en administrativ bruger og tilføj følgende linje:
vm.swappiness = 10Konklusion
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 /