Mängden minne
Som redan diskuterats i del ett kallas hela minnet virtuellt minne och består av både fysiskt minne och växlingsutrymme. Tillgången till det fysiska minnet beror på vilken maskinvara som är inbyggd i maskinen samt hur mycket minne processorn faktiskt kan adressera. Som ett exempel har 32-bitars operativsystem endast en gräns på 4G minne (2 ^ 32bit), medan operativsystem baserade på 64-bitars teoretiskt tillåter upp till 16 EB (2 ^ 64bit).
För att vara exakt är begränsningen moderkortet med själva processorn, minnesmodulerna som stöds av det moderkortet och de specifika minnesmodulerna som är anslutna till minnesplatserna på moderkortet. Ett sätt att maximera systemets tillgängliga minne är att använda liknande minnesmoduler som har störst storlek som möjligt. Det andra sättet är att använda Swap-minne som redan förklarats i del ett.
Tillgång till minne
Därefter övervägs en förbättring av minnets åtkomsthastighet. Först ges den fysiska gränsen av själva minnesmodulen. Du kan inte gå under hårdvarans fysiska gränser. För det andra, en ramdisk och vid tredje kan användningen av zRAM påskynda minnesåtkomsten. Vi kommer att diskutera dessa två tekniker närmare.
Skapa en ramdisk
En ramdisk är ett minnesblock som operativsystemet hanterar som en fysisk enhet för att lagra data på - en hårddisk som lagras helt i minnet. Denna tillfälliga enhet finns så fort systemet startar och aktiverar ramdisken och systemet antingen inaktiverar ramdisken eller stängs av. Tänk på att data som du lagrar på en sådan ramdisk går förlorade efter att maskinen stängts av.
Du kan skapa en dynamisk ramdisk via tmpfs filsystem och via ramfs filsystem. Båda teknikerna skiljer sig väsentligt från varandra. För det första betyder dynamisk att minne för ramdisk tilldelas baserat på dess användning (sant för båda metoderna). Så länge du inte lagrar data på den är ramdiskens storlek 0.
Skapa en dynamisk ramdisk via tmpfs är som följer:
# mkdir / media / ramdisk# mount -t tmpfs none / media / ramdisk
Skapa en dynamisk ramdisk via ramfs är som följer:
# mkdir / media / ramdisk# montera -t ramfs ramfs / media / ramdisk
För det andra är att använda tmpfs och om inte uttryckligen anges storleken på ramdisken begränsad till 50% av det fysiska minnet. Däremot har en ramdisk baserad på ramfs inte en sådan begränsning.
Skapa en dynamisk ramdisk via tmpfs med en relativ storlek på 20% av det fysiska minnet är som följer:
# mkdir / media / ramdisk# mount -t tmpfs -o size = 20% none / media / ramdisk
Att skapa en dynamisk ramdisk via tmpfs med en fast storlek på 200M fysiskt minne är som följer:
# mkdir / media / ramdisk# mount -t tmpfs -o storlek = 200M ingen / media / ramdisk
För det tredje hanterar båda metoderna byte på ett annat sätt. Om systemet når minnesgränsen för en ramdisk baserat på tmpfs, byts data från ramdisken ut. Detta försvårar idén om snabb åtkomst. Å andra sidan prioriterar operativsystemet både innehållet och de begärda minnessidorna i en ramdisk baserat på ramfs, håller det i minnet och byter återstående minnessidor till disk.
I exemplen ovan har vi använt / media / ramdisk
som en monteringspunkt. När det gäller vanliga data är den enda delen av Linux-filsystemet som rekommenderas att användas på en ramdisk / tmp
. Den här katalogen lagrar endast tillfälliga data som inte kvarstår. För att skapa en permanent ramdisk som lagrar / tmp-filsystemet krävs ytterligare en post i filen / etc / fstab
enligt följande (baserat på ramfs):
Nästa gång du startar ditt Linux-system kommer ramdisk att aktiveras automatiskt.
Använda zRAM
zRAM betyder Virtual Swap Compressed i RAM och skapar en komprimerad blockenhet direkt i det fysiska minnet. zRAM kommer till handling (användning) så snart det inte finns fler fysiska minnessidor tillgängliga på systemet. Sedan försöker Linux-kärnan att lagra sidor som komprimerad data på zRAM-enheten.
För närvarande finns det inget paket tillgängligt för Debian GNU / Linux men Ubuntu. Det heter zram-config. Installera paketet och konfigurera en zRAM-enhet genom att helt enkelt starta följande systemd-tjänst enligt följande:
# systemctrl starta zram-configSom ges av produktionen av swapon -s,
enheten är aktiv som en extra Swap-partition. Automatiskt tilldelas en storlek på 50% av minnet för zRAM (se figur 1). För närvarande finns det inget sätt att ange ett annat värde för zRAM som ska tilldelas.
För att se mer information om den komprimerade växlingspartitionen, använd kommandot zramctl
. Figur 2 visar enhetsnamnet, komprimeringsalgoritmen (LZO), storleken på växlingspartitionen, storleken på data på disken och dess komprimerade storlek samt antalet komprimeringsströmmar (standardvärde: 1).
Användningsstrategi
Därefter fokuserar vi på minnesanvändningsstrategin. Det finns några parametrar som påverkar beteendet hos minnesanvändningen och distributionen. Detta inkluderar minnessidornas storlek - på 64-bitars system är det 4M. Därefter spelar parametern swappiness en roll. Som redan förklarats i del ett styr denna parameter den relativa vikten som ges för att byta ut runtime-minne, i motsats till att tappa minnessidor från systemets cache. Vi bör inte heller glömma både cachning och minnessidans inriktning.
Använd program som kräver mindre minne
Sist men inte minst beror minnesanvändningen på själva programmen. De flesta av dem är länkade till standard C-biblioteket (standard LibC). För att minimera din binära kod ska du som utvecklare överväga att använda ett alternativ och mycket mindre C-bibliotek istället. Det finns till exempel dietlibc [1], uClibc [2] och musl lib C [3]. Utvecklarens webbplats för musl lib C innehåller en omfattande jämförelse [4] angående dessa bibliotek när det gäller det minsta möjliga statiska C-programmet, en funktionsjämförelse såväl som byggnadsmiljöerna och stödda hårdvaruarkitekturer.
Som användare kanske du inte behöver kompilera dina program. Överväg att leta efter mindre program och olika ramar som kräver mindre resurser. Som ett exempel kan du använda XFCE Desktop Environment istället för KDE eller GNOME.
Slutsats
Det finns en hel del alternativ för att ändra minnesanvändningen till det bättre. Detta sträcker sig från Swap till komprimering baserat på zRAM samt att ställa in en ramdisk eller välja ett annat ramverk.
Länkar och referenser
- [1] dietlibc, https: // www.fefe.de / dietlibc /
- [2] uClibc, https: // uclibc.org /
- [3] musl lib C, http: // www.musl-libc.org /
- [4] jämförelse av C-bibliotek, http: // www.etalabs.netto / jämför_libcs.html
Linux Memory Management Series
- Del 1: Linux Kernel Memory Management: Swap Space
- Del 2: Kommandon för att hantera Linux-minne
- Del 3: Optimera Linux-minnesanvändning
Bekräftelser
Författaren vill tacka Axel Beckert och Gerold Rupprecht för deras stöd när han förberedde denna artikel.