Mengde minne
Som allerede diskutert i første del, kalles hele minnet virtuelt minne, og består av både fysisk minne og bytterom. Tilgjengeligheten av det fysiske minnet avhenger av maskinvaren som er innebygd i maskinen, samt hvor mye minne prosessoren faktisk kan adressere. Som et eksempel har 32-biters operativsystem en grense på bare 4G minne (2 ^ 32bit), mens operativsystemer basert på 64-bit teoretisk tillater opptil 16 EB (2 ^ 64-bit).
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 tilgjengelig tilgjengelig minne på systemet er å bruke lignende minnemoduler som har størst størrelse som mulig. Den andre måten er å bruke bytt minne som allerede forklart i del en.
Tilgang til minne
Deretter kommer en forbedring av tilgangshastigheten til minnet i betraktning. Først er den fysiske grensen gitt av selve minnemodulen. Du kan ikke gå under maskinvarens fysiske grenser. For det andre, en ramdisk, og på tredje kan bruken av zRAM øke hastigheten på minnetilgangen. Vi vil diskutere disse to teknologiene nærmere.
Opprette en ramdisk
En ramdisk er en blokk med minne som operativsystemet håndterer som en fysisk enhet å lagre data på - en harddisk som er helt lagret i minnet. Denne midlertidige enheten eksisterer så snart systemet starter og aktiverer ramdisken, og systemet enten deaktiverer ramdisken eller slår seg av. Husk at data du lagrer på en slik ramdisk, går tapt etter at maskinen er slått av.
Du kan opprette en dynamisk ramdisk via tmpfs filsystem og via ramfs filsystem. Begge teknologiene skiller seg betydelig fra hverandre. For det første betyr dynamisk at minne for ramdisk tildeles basert på bruken (sant for begge metodene). Så lenge du ikke lagrer data på den, er størrelsen på ramdisk 0.
Å lage en dynamisk ramdisk via tmpfs er som følger:
# mkdir / media / ramdisk# mount -t tmpfs none / 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 tmpfs, og med mindre eksplisitt spesifisert, størrelsen på ramdisk begrenset til 50% av det fysiske minnet. Derimot har ikke en ramdisk basert på ramfs en slik begrensning.
Å lage en dynamisk ramdisk via tmpfs med en relativ størrelse på 20% av det fysiske minnet er som følger:
# mkdir / media / ramdisk# mount -t tmpfs -o størrelse = 20% ingen / media / ramdisk
Å lage en dynamisk ramdisk via tmpfs med en fast størrelse på 200M 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 for en ramdisk basert på tmpfs, byttes data fra ramdisken ut. Dette ødelegger ideen om rask tilgang. På den annen side prioriterer operativsystemet både innholdet og de forespurte minnesidene til en ramdisk basert på ramfs, holder det i minnet og bytter gjenværende minnesider til disk.
I eksemplene ovenfor har vi brukt / media / ramdisk
som monteringspunkt. Når det gjelder vanlige data, er den eneste delen av Linux-filsystemet som anbefales å bruke på en ramdisk / tmp
. Denne katalogen lagrer bare midlertidige data som ikke vedvarer. Å lage en permanent ramdisk som lagrer / tmp-filsystemet krever en ekstra oppføring i filen / etc / fstab
som følger (basert på ramf):
Neste gang du starter Linux-systemet, blir ramdisk aktivert automatisk.
Bruke zRAM
zRAM betyr Virtual Swap Compressed in RAM, og skaper en komprimert blokkenhet direkte i det fysiske minnet. zRAM kommer i bruk (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. Den heter zram-config. Installer pakken, og sett opp en zRAM-enhet ved å starte den tilsvarende systemd-tjenesten som følger:
# systemctrl start zram-configSom gitt av utdataene fra bytte -s,
enheten er aktiv som en ekstra byttepartisjon. Automatisk tildeles en størrelse på 50% av minnet for zRAM (se figur 1). Foreløpig er det ingen måte å spesifisere en annen verdi for zRAM som skal tildeles.
For å se mer informasjon om den komprimerte byttepartisjonen, bruk kommandoen zramctl
. Figur 2 viser enhetsnavnet, komprimeringsalgoritmen (LZO), størrelsen på byttepartisjonen, størrelsen på dataene på disken og dens komprimerte størrelse, samt antall kompresjonsstrømmer (standardverdi: 1).
Bruksstrategi
Deretter fokuserer vi på minnebrukstrategien. Det er noen få parametere som påvirker oppførselen til minnebruk og distribusjon. Dette inkluderer størrelsen på minnesider - på 64-biters systemer er det 4M. Deretter spiller parameteren swappiness en rolle. Som allerede forklart i del 1, styrer denne parameteren den relative vekten som er gitt for å bytte ut kjøretidsminne, i motsetning til å slippe minnesider fra systemsiden cache. Vi bør heller ikke glemme både hurtigbufring og justering av minnesiden.
Bruk programmer som krever mindre minne
Sist men ikke minst er bruken av minne avhengig av selve programmene. De fleste av dem er koblet til standard C-biblioteket (standard LibC). For å minimere den binære koden din som utvikler, 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]. Utviklernettstedet til musl lib C inneholder en omfattende sammenligning [4] angående disse bibliotekene når det gjelder det minste statiske C-programmet som er mulig, en sammenligning av funksjoner, i henhold til byggemiljøene og støttede maskinvarearkitekturer.
Som bruker trenger du kanskje ikke å kompilere programmene dine. Vurder å se etter mindre programmer og forskjellige rammer som krever mindre ressurser. Som et eksempel kan du bruke XFCE Desktop Environment i stedet for KDE eller GNOME.
Konklusjon
Det finnes ganske mange alternativer for å endre minnebruk 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.netto / sammenlign_libcs.html
Linux Memory Management Series
- Del 1: Linux Kernel Memory Management: Swap Space
- Del 2: Kommandoer for å administrere Linux-minne
- Del 3: Optimalisering av Linux-minnebruk
Anerkjennelser
Forfatteren vil takke Axel Beckert og Gerold Rupprecht for deres støtte under forberedelsen av denne artikkelen.