Optimalisering av Linux -minnebruk

Optimalisering av Linux -minnebruk
I del en av denne serien så vi nærmere på bytteområdet, og del to omhandlet verktøy og kommandoer for å administrere minnet. Nå vil vi diskutere forskjellige parametere og strategier for å optimalisere minnet og bruken av det generelt. Dette dekker mengden minne, akselerasjonen av tilgangen og den interne bruksstrategien.

Mengde minne

Som allerede diskutert i del en, kalles hele minnet virtuelt minne, og består av både fysisk minne og bytteplass. Tilgjengeligheten av det fysiske minnet avhenger av maskinvaren som er innebygd i maskinen, samt hvor mye minne prosessoren kan adressere, faktisk. Som et eksempel har 32bit operativsystemer en grense på 4G minne, bare (2^32bit), mens operativsystemer basert på 64bit teoretisk tillater opptil 16 EB (2^64bit).

For å være presis er begrensningen hovedkortet med selve prosessoren, minnemodulene som støttes av det hovedkortet, og de spesifikke minnemodulene som er koblet til minnesporene på hovedkortet. En måte å maksimere det tilgjengelige minnet til systemet er å bruke lignende minnemoduler som har størst størrelse som mulig. Den andre måten er å bruke byttehukommelse som allerede forklart i del en.

Tilgang til minnet

Deretter kommer en forbedring av tilgangshastigheten til minnet i betraktning. Til å begynne med blir den fysiske grensen gitt av selve minnemodulen. Du kan ikke gå under de fysiske grensene for maskinvaren. På andreplass kan en Ramdisk, og ved tredje bruk av ZRAM kan få hastigheten på minnetilgangen. Vi vil diskutere disse to teknologiene nærmere.

Opprette en Ramdisk

En Ramdisk er en minneblokk som operativsystemet håndterer som en fysisk enhet å lagre data om - en harddisk som helt holdes i minnet. Denne midlertidige enheten eksisterer så snart systemet starter og aktiverer Ramdisk, og systemet deaktiverer enten Ramdisk, eller slår seg av. Husk at data du lagrer på en slik Ramdisk går tapt etter at maskinen avslutning.

Du kan opprette et dynamisk ramdisk via TMPFS -filsystem, og via RAMFS -filsystem. Begge teknologiene skiller seg betydelig fra hverandre. For det første betyr dynamisk at minnet for Ramdisk tildeles basert på bruken (SANN for begge metodene). Så lenge du ikke lagrer data om det, er størrelsen på ramdisken 0.

Å lage en dynamisk ramdisk via TMPFS er som følger:

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

Å lage en dynamisk ramdisk via RAMFS er som følger:

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

For det andre er bruk av TMPF -er, og med mindre eksplisitt spesifiserte størrelsen på Ramdisk er begrenset til 50% av det fysiske minnet. I kontrast har en Ramdisk basert på RAMFS ikke en slik begrensning.

Å lage en dynamisk ramdisk via TMPF -er med en relativ størrelse på 20% av fysisk minne er som følger:

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

Å lage en dynamisk ramdisk via TMPF -er med en fast størrelse på 200 meter fysisk minne er som følger:

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

For det tredje håndterer begge metodene å bytte på en annen måte. I tilfelle systemet når minnegrensen til en Ramdisk basert på TMPF -er, byttes data fra Ramdisk. Dette folier ideen om rask tilgang. På den annen side prioriterer operativsystemet både innholdet og de forespurte minnesidene til en Ramdisk basert på RAMF -er, holder det i minnet, og bytter gjenværende minnesider til disk.

I eksemplene ovenfor har vi brukt /media/ramdisk Som et monteringspunkt. Når det gjelder vanlige data, er den eneste delen av Linux -filsystemet som anbefales å brukes på en Ramdisk /tmp. Denne katalogen lagrer bare midlertidige data, som ikke vedvarer. Opprette en permanent Ramdisk som lagrer /TMP -filsystemet krever en ekstra oppføring i filen /etc/fstab som følger (basert på RAMF):

RAMFS /TMP RAMFS Standards 0 0

Neste gang du starter Linux -systemet ditt, blir Ramdisken aktivert, automatisk.

Ved hjelp av Zram

ZRAM betyr virtuell bytte komprimert i RAM, og oppretter en komprimert blokkenhet direkte i det fysiske minnet. Zram kommer til handling (bruk) så snart det ikke er flere fysiske minnesider tilgjengelig på systemet. Deretter prøver Linux -kjernen å lagre sider som komprimerte data på ZRAM -enheten.

For øyeblikket er det ingen pakke tilgjengelig for Debian Gnu/Linux, men Ubuntu. Det heter Zram-Config. Installer pakken, og konfigurer en ZRAM -enhet ganske enkelt ved å starte den ifølge SystemD -tjenesten som følger:

# Systemctrl Start Zram-Config

Som gitt av utgangen fra Swapon -S, enheten er aktiv som en ekstra byttepartisjon. Automatisk tildeles en størrelse på 50% av minnet for ZRAM (se figur 1). For øyeblikket er det ingen måte å spesifisere en annen verdi for at ZRAM skal tildeles.

Bruk kommandoen for å se flere detaljer om komprimert byttepartisjon Zramctl. Figur 2 viser enhetsnavnet, kompresjonsalgoritmen (LZO), størrelsen på byttepartisjonen, størrelsen på dataene på disken og dens komprimerte størrelse så vel som antall kompresjonsstrømmer (standardverdi: 1).

Bruksstrategi

Deretter fokuserer vi på minnebruksstrategien. Det er noen få parametere for å påvirke oppførselen til minnebruk og distribusjon. Dette inkluderer størrelsen på minnesider - på 64bit -systemer er det 4m. Deretter spiller parameterwappiness en rolle. Som allerede forklart i del en, kontrollerer denne parameteren den relative vekten gitt til å bytte ut av runtime -minnet, i motsetning til å slippe minnesider fra systemsidenes cache. Vi skal heller ikke glemme både hurtigbufring og minnesidejustering.

Bruk programmer som krever mindre minne

Sist, men ikke minst bruken av minne, avhenger av selve programmene. De fleste av dem er knyttet til standard C -biblioteket (Standard LIBC). Som utvikler, for å minimere den binære koden din, bør du vurdere å bruke et alternativ, og mye mindre C -bibliotek i stedet. For eksempel er det DietLibc [1], UCLIBC [2] og Musl Lib C [3]. Utviklerens nettsted til Musl Lib C inneholder en omfattende sammenligning [4] angående disse bibliotekene når det.

Som bruker trenger du kanskje ikke å samle programmene dine. Vurder å lete etter mindre programmer og forskjellige rammer som krever mindre ressurser. Som et eksempel kan du bruke XFCE -skrivebordsmiljøet i stedet for KDE eller Gnome.

Konklusjon

Det finnes ganske mange alternativer for å endre bruken av minne til det bedre. Dette spenner fra bytte til komprimering basert på ZRAM samt å sette opp en Ramdisk eller velge et annet rammeverk.

Lenker og referanser

  • [1] Dietlibc, https: // www.fefe.DE/DIETLIBC/
  • [2] UCLIBC, https: // uclibc.org/
  • [3] Musl Lib C, http: // www.Musl-Libc.org/
  • [4] Sammenligning av C -biblioteker, http: // www.etalabs.nett/sammenligning_libcs.html

Linux Memory Management Series

  • Del 1: Linux Kernel Memory Management: Swap Space
  • Del 2: Kommandoer for å administrere Linux -minnet
  • Del 3: Optimalisering av Linux -minnebruk

Anerkjennelser

Forfatteren vil takke Axel Beckert og Gerold Rupprecht for deres støtte mens de utarbeidet denne artikkelen.