Hukommelse

Optimering af Linux-hukommelsesbrug

Optimering af Linux-hukommelsesbrug
I første del af denne serie kiggede vi nærmere på swap-rummet, og del to handlede om værktøjer og kommandoer til at styre hukommelsen. Nu vil vi diskutere forskellige parametre og strategier for at optimere hukommelsen og dens anvendelse generelt. Dette dækker mængden af ​​hukommelse, accelerationen af ​​adgangen og den interne brugsstrategi.

Mængde af hukommelse

Som allerede diskuteret i første del kaldes hele hukommelsen virtuel hukommelse og består af både fysisk hukommelse og swap-plads. Tilgængeligheden af ​​den fysiske hukommelse afhænger af den hardware, der er indbygget i maskinen, samt hvor meget hukommelse processoren faktisk kan adressere. Som et eksempel har 32bit-operativsystemer en grænse på kun 4G hukommelse (2 ^ 32bit), mens operativsystemer baseret på 64bit teoretisk tillader op til 16 EB (2 ^ 64bit).

For at være præcis er begrænsningen bundkortet med selve processoren, de hukommelsesmoduler, der understøttes af det bundkort, og de specifikke hukommelsesmoduler, der er tilsluttet hukommelsesportene på bundkortet. En måde at maksimere systemets tilgængelige hukommelse på er at bruge lignende hukommelsesmoduler, der har den største størrelse som muligt. Den anden måde er at bruge swap-hukommelse som allerede forklaret i del 1.

Adgang til hukommelse

Dernæst overvejes en forbedring af hukommelsens adgangshastighed. Først er den fysiske grænse givet af selve hukommelsesmodulet. Du kan ikke gå under de fysiske grænser for hardwaren. For det andet en ramdisk, og ved tredje kan brugen af ​​zRAM fremskynde hukommelsesadgangen. Vi vil diskutere disse to teknologier mere detaljeret.

Oprettelse af en ramdisk

En ramdisk er en hukommelsesblok, som operativsystemet håndterer som en fysisk enhed til at gemme data på - en harddisk, der helt holdes i hukommelsen. Denne midlertidige enhed findes, så snart systemet starter og aktiverer ramdisken, og systemet enten deaktiverer ramdisken eller lukker ned. Husk, at data, du gemmer på en sådan ramdisk, går tabt, efter at maskinen er lukket ned.

Du kan oprette en dynamisk ramdisk via tmpfs filsystem og via ramfs filsystem. Begge teknologier adskiller sig markant fra hinanden. For det første betyder dynamisk, at hukommelse til ramdisk tildeles baseret på dens anvendelse (sand for begge metoder). Så længe du ikke gemmer data på den, er størrelsen på ramdisk 0.

Oprettelse af en dynamisk ramdisk via tmpfs er som følger:

# mkdir / media / ramdisk
# mount -t tmpfs none / media / ramdisk

Oprettelse af en dynamisk ramdisk via ramfs er som følger:

# mkdir / media / ramdisk
# mount -t ramfs ramfs / media / ramdisk

For det andet er anvendelse af tmpfs, og medmindre det udtrykkeligt er angivet, størrelsen på ramdisk begrænset til 50% af den fysiske hukommelse. I modsætning hertil har en ramdisk baseret på ramfs ikke en sådan begrænsning.

Oprettelse af en dynamisk ramdisk via tmpfs med en relativ størrelse på 20% af den fysiske hukommelse er som følger:

# mkdir / media / ramdisk
# mount -t tmpfs -o størrelse = 20% none / media / ramdisk

Oprettelse af en dynamisk ramdisk via tmpfs med en fast størrelse på 200M fysisk hukommelse er som følger:

# mkdir / media / ramdisk
# mount -t tmpfs -o størrelse = 200M ingen / media / ramdisk

For det tredje håndterer begge metoder bytte på en anden måde. Hvis systemet når hukommelsesgrænsen for en ramdisk baseret på tmpfs, byttes data fra ramdisken. Dette ødelægger ideen om hurtig adgang. På den anden side prioriterer operativsystemet både indholdet og de ønskede hukommelsessider i en ramdisk baseret på ramfs, holder det i hukommelsen og bytter de resterende hukommelsessider til disken.

I eksemplerne ovenfor har vi brugt / media / ramdisk som et monteringspunkt. Med hensyn til almindelige data er den eneste del af Linux-filsystemet, der anbefales at bruge på en ramdisk / tmp. Denne mappe gemmer kun midlertidige data, der ikke vedvarer. Oprettelse af en permanent ramdisk, der gemmer / tmp-filsystemet, kræver en yderligere post i filen / etc / fstab som følger (baseret på ramf):

ramfs / tmp ramfs er standard 0 0

Næste gang du starter dit Linux-system, aktiveres ramdisk automatisk.

Brug af zRAM

zRAM betyder Virtual Swap Komprimeret i RAM og skaber en komprimeret blokenhed direkte i den fysiske hukommelse. zRAM kommer i aktion (brug), så snart der ikke er flere fysiske hukommelsessider tilgængelige på systemet. Derefter forsøger Linux-kernen at gemme sider som komprimerede data på zRAM-enheden.

I øjeblikket er der ingen pakke tilgængelig til Debian GNU / Linux, men Ubuntu. Det hedder zram-config. Installer pakken, og opsæt en zRAM-enhed ved blot at starte den aktuelle systemd-service som følger:

# systemctrl start zram-config

Som givet af output fra swapon -s, enheden er aktiv som en ekstra swap-partition. Automatisk tildeles en størrelse på 50% af hukommelsen til zRAM (se figur 1). I øjeblikket er der ingen måde at specificere en anden værdi for, at zRAM skal tildeles.

Brug kommandoen for at se flere detaljer om den komprimerede swap-partition zramctl. Figur 2 viser enhedsnavnet, komprimeringsalgoritmen (LZO), størrelsen på swap-partitionen, størrelsen på dataene på disken og dens komprimerede størrelse samt antallet af komprimeringsstrømme (standardværdi: 1).

Brugsstrategi

Dernæst fokuserer vi på hukommelsesforbrugsstrategien. Der er et par parametre, der påvirker opførelsen af ​​hukommelsesforbrug og distribution. Dette inkluderer størrelsen på hukommelsessider - på 64bit-systemer er det 4M. Dernæst spiller parameteren swappiness en rolle. Som allerede forklaret i del 1 styrer denne parameter den relative vægt, der gives til at bytte ud af runtime-hukommelse, i modsætning til at droppe hukommelsessider fra systemets cache. Vi bør heller ikke glemme både caching og justering af hukommelsessiden.

Brug programmer, der kræver mindre hukommelse

Sidst men ikke mindst afhænger brugen af ​​hukommelse af selve programmerne. De fleste af dem er knyttet til standard C-biblioteket (standard LibC). For at minimere din binære kode skal du som udvikler overveje at bruge et alternativ og meget mindre C-bibliotek i stedet. For eksempel er der dietlibc [1], uClibc [2] og musl lib C [3]. Udviklerens websted for musl lib C indeholder en omfattende sammenligning [4] vedrørende disse biblioteker med hensyn til det mindste statiske C-program muligt, en funktionssammenligning såvel som i henhold til byggemiljøer og understøttede hardware-arkitekturer.

Som bruger behøver du muligvis ikke at kompilere dine programmer. Overvej at kigge efter mindre programmer og forskellige rammer, der kræver færre ressourcer. Som et eksempel kan du bruge XFCE-skrivebordsmiljøet i stedet for KDE eller GNOME.

Konklusion

Der findes en hel del muligheder for at ændre brugen af ​​hukommelse til det bedre. Dette spænder fra swap til komprimering baseret på zRAM samt opsætning af en ramdisk eller valg af en anden ramme.

Links og referencer

Linux Memory Management Series

Anerkendelser

Forfatteren vil gerne takke Axel Beckert og Gerold Rupprecht for deres støtte under udarbejdelsen af ​​denne artikel.

Sådan downloades og afspilles Sid Meiers Civilization VI på Linux
Introduktion til spillet Civilization 6 er et moderne udtryk for det klassiske koncept, der blev introduceret i serien af ​​Age of Empires-spil. Ideen...
Sådan installeres og afspilles Doom på Linux
Introduktion til undergang Doom-serien opstod i 90'erne efter frigivelsen af ​​den originale Doom. Det var et øjeblikkeligt hit, og fra den tid af har...
Vulkan til Linux-brugere
Med hver nye generation af grafikkort ser vi spiludviklere skubbe grænserne for grafisk troskab og komme et skridt tættere på fotorealisme. Men på tro...