Minne

Optimera Linux-minnesanvändning

Optimera Linux-minnesanvändning
I del en av denna serie tittade vi närmare på Swap space, och del två handlade om verktyg och kommandon för att hantera minnet. Nu kommer vi att diskutera olika parametrar och strategier för att optimera minnet och dess användning i allmänhet. Detta täcker mängden minne, accelereringen av åtkomsten och den interna användningsstrategin.

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):

ramfs / tmp ramfs är standard 0 0

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-config

Som 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

Linux Memory Management Series

Bekräftelser

Författaren vill tacka Axel Beckert och Gerold Rupprecht för deras stöd när han förberedde denna artikel.

Mus Så här vänder du mus- och styrplattans rullningsriktning i Windows 10
Så här vänder du mus- och styrplattans rullningsriktning i Windows 10
Mus och Pekplattas gör inte bara datoranvändning lättare men effektivare och mindre tidskrävande. Vi kan inte föreställa oss ett liv utan dessa enhete...
Mus Så här ändrar du muspekare och markörstorlek, färg och schema på Windows 10
Så här ändrar du muspekare och markörstorlek, färg och schema på Windows 10
Muspekaren och markören i Windows 10 är mycket viktiga aspekter av operativsystemet. Detta kan också sägas för andra operativsystem, så i sanning är d...
Gratis och öppen källkodsmotorer för utveckling av Linux-spel
Den här artikeln kommer att täcka en lista över gratis motorer med öppen källkod som kan användas för att utveckla 2D- och 3D-spel på Linux. Det finns...