Geheugen

Gebruik van Linux-geheugen optimaliseren

Gebruik van Linux-geheugen optimaliseren
In deel één van deze serie hebben we de Swap-ruimte nader bekeken en deel twee ging over tools en commando's om het geheugen te beheren. Nu zullen we verschillende parameters en strategieën bespreken om het geheugen en het gebruik ervan in het algemeen te optimaliseren. Dit dekt de hoeveelheid geheugen, de versnelling van de toegang en de interne gebruiksstrategie.

Hoeveelheid geheugen

Zoals al besproken in deel één, wordt het volledige geheugen virtueel geheugen genoemd en bestaat het uit zowel fysiek geheugen als swapruimte. De beschikbaarheid van het fysieke geheugen hangt af van de hardware die in de machine is ingebouwd en van hoeveel geheugen de processor feitelijk kan adresseren. 32bit-besturingssystemen hebben bijvoorbeeld een limiet van slechts 4G geheugen (2^32bit), terwijl besturingssystemen op basis van 64bit theoretisch tot 16 EB (2^64bit) toestaan.

Om precies te zijn, de beperking is het moederbord met de processor zelf, de geheugenmodules die door dat moederbord worden ondersteund en de specifieke geheugenmodules die in de geheugenslots op het moederbord worden gestoken. Een manier om het beschikbare geheugen van het systeem te maximaliseren, is door vergelijkbare geheugenmodules te gebruiken met de grootst mogelijke grootte. De tweede manier is om Swap-geheugen te gebruiken zoals al uitgelegd in deel één.

Toegang tot het geheugen

Vervolgens komt een verbetering van de toegangssnelheid van het geheugen aan de orde. In eerste instantie wordt de fysieke limiet gegeven door de geheugenmodule zelf. Je kunt niet verder gaan dan de fysieke grenzen van de hardware. Ten tweede kan een ramdisk, en ten derde kan het gebruik van zRAM de geheugentoegang versnellen. We zullen deze twee technologieën in meer detail bespreken.

Een ramdisk maken

Een ramdisk is een geheugenblok dat het besturingssysteem behandelt als een fysiek apparaat om gegevens op op te slaan - een harde schijf die volledig in het geheugen wordt bewaard. Dit tijdelijke apparaat bestaat zodra het systeem opstart en de ramdisk inschakelt, en het systeem schakelt ofwel de ramdisk uit, of sluit af. Houd er rekening mee dat gegevens die u op zo'n ramdisk opslaat, verloren gaan na het afsluiten van de machine.

U kunt een dynamische ramdisk maken via het tmpfs-bestandssysteem en via het ramfs-bestandssysteem. Beide technologieën verschillen aanzienlijk van elkaar. Ten eerste betekent dynamisch dat geheugen voor de ramdisk wordt toegewezen op basis van het gebruik (geldt voor beide methoden). Zolang u er geen gegevens op opslaat, is de grootte van de ramdisk 0.

Het maken van een dynamische ramdisk via tmpfs gaat als volgt:

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

Het maken van een dynamische ramdisk via ramfs gaat als volgt:

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

Ten tweede, het gebruik van tmpfs en tenzij expliciet gespecificeerd, is de grootte van de ramdisk beperkt tot 50% van het fysieke geheugen. Daarentegen heeft een op ramfs gebaseerde ramdisk niet zo'n beperking.

Het maken van een dynamische ramdisk via tmpfs met een relatieve grootte van 20% fysiek geheugen gaat als volgt:

# mkdir /media/ramdisk
# mount -t tmpfs -o size=20% geen /media/ramdisk

Het maken van een dynamische ramdisk via tmpfs met een vaste grootte van 200M fysiek geheugen gaat als volgt:

# mkdir /media/ramdisk
# mount -t tmpfs -o size=200M geen /media/ramdisk

Ten derde gaan beide methoden op een andere manier om met swappen. In het geval dat het systeem de geheugenlimiet van een ramdisk bereikt op basis van tmpfs, worden gegevens van de ramdisk verwisseld. Dit verijdelt het idee van snelle toegang. Aan de andere kant geeft het besturingssysteem prioriteit aan zowel de inhoud als de gevraagde geheugenpagina's van een ramdisk op basis van ramfs, houdt dat in het geheugen en verwisselt de resterende geheugenpagina's naar schijf.

In de bovenstaande voorbeelden hebben we gebruikt /media/ramdisk als een aankoppelpunt. Met betrekking tot reguliere gegevens is het enige deel van het Linux-bestandssysteem dat wordt aanbevolen voor gebruik op een ramdisk: /tmp. In deze map worden alleen tijdelijke gegevens opgeslagen die niet blijven bestaan. Het maken van een permanente ramdisk die het /tmp-bestandssysteem opslaat, vereist een extra vermelding in het bestand /etc/fstab als volgt (op basis van ramfs):

ramfs   /tmp     ramfs   standaardwaarden 0  0

De volgende keer dat u uw Linux-systeem opstart, wordt de ramdisk automatisch ingeschakeld.

zRAM gebruiken

zRAM betekent Virtual Swap Compressed in RAM, en creëert een gecomprimeerd blokapparaat direct in het fysieke geheugen. zRAM komt in actie (gebruik) zodra er geen fysieke geheugenpagina's meer beschikbaar zijn op het systeem. Vervolgens probeert de Linux-kernel pagina's op te slaan als gecomprimeerde gegevens op het zRAM-apparaat.

Momenteel is er geen pakket beschikbaar voor Debian GNU/Linux maar Ubuntu. Het heet zram-config. Installeer het pakket en stel een zRAM-apparaat eenvoudig in door de bijbehorende systemd-service als volgt te starten:

# systemctrl start zram-config

Zoals gegeven door de output van swapon -s, het apparaat is actief als een extra Swap-partitie. Automatisch wordt een grootte van 50% van het geheugen toegewezen aan zRAM (zie figuur 1). Momenteel is er geen manier om een ​​andere waarde op te geven voor het toewijzen van zRAM.

Om meer details over de gecomprimeerde swappartitie te zien, gebruik je het commando zramctl. Afbeelding 2 toont de apparaatnaam, het compressie-algoritme (LZO), de grootte van de swappartitie, de grootte van de gegevens op de schijf en de gecomprimeerde grootte, evenals het aantal compressiestromen (standaardwaarde: 1).

Gebruiksstrategie

Vervolgens concentreren we ons op de strategie voor geheugengebruik. Er zijn een paar parameters om het gedrag van het geheugengebruik en de distributie te beïnvloeden. Dit omvat de grootte van geheugenpagina's - op 64bit-systemen is dit 4M. Vervolgens speelt de parameter swappiness een rol. Zoals al in deel één is uitgelegd, bepaalt deze parameter het relatieve gewicht dat wordt gegeven aan het verwisselen van het runtime-geheugen, in tegenstelling tot het verwijderen van geheugenpagina's uit de systeempaginacache. Ook mogen we zowel caching als de uitlijning van de geheugenpagina niet vergeten.

Programma's gebruiken die minder geheugen nodig hebben

Last but not least hangt het gebruik van geheugen af ​​van de programma's zelf. De meeste zijn gekoppeld aan de standaard C-bibliotheek (standaard LibC). Overweeg om als ontwikkelaar, om uw binaire code te minimaliseren, in plaats daarvan een alternatieve en veel kleinere C-bibliotheek te gebruiken. Er zijn bijvoorbeeld dietlibc [1], uClibc [2] en musl lib C [3]. De website van de ontwikkelaar van musl lib C bevat een uitgebreide vergelijking [4] met betrekking tot deze bibliotheken in termen van het kleinst mogelijke statische C-programma, een vergelijking van functies en de bijbehorende build-omgevingen en ondersteunde hardware-architecturen.

Als gebruiker hoeft u uw programma's misschien niet te compileren. Overweeg om te zoeken naar kleinere programma's en andere frameworks die minder middelen nodig hebben. Als voorbeeld kunt u de XFCE Desktop Environment gebruiken in plaats van KDE of GNOME.

Conclusie

Er zijn nogal wat opties om het geheugengebruik ten goede te veranderen. Dit varieert van Swap tot compressie op basis van zRAM en het opzetten van een ramdisk of het selecteren van een ander framework.

Links en referenties

Linux-geheugenbeheerserie

Dankbetuigingen

De auteur wil graag Axel Beckert en Gerold Rupprecht bedanken voor hun steun bij het opstellen van dit artikel.

De scrollrichting van de muis en touchpads omkeren in Windows 10
Muis en Touchpads maken computergebruik niet alleen eenvoudig, maar ook efficiënter en minder tijdrovend. We kunnen ons een leven zonder deze apparate...
Hoe de muisaanwijzer en cursorgrootte, kleur en schema op Windows 10 te veranderen
De muisaanwijzer en cursor in Windows 10 zijn zeer belangrijke aspecten van het besturingssysteem. Dit geldt ook voor andere besturingssystemen, dus i...
Gratis en open source game-engines voor het ontwikkelen van Linux-games
Dit artikel behandelt een lijst met gratis en open source game-engines die kunnen worden gebruikt voor het ontwikkelen van 2D- en 3D-games op Linux. E...