Ze stellen een nieuwe geheugencontroller voor de Linux-kernel voor

Linux Kernel

De geheugenbeheerder is een subset van het systeem werkzaam Het deelt geheugen tussen het besturingssysteem en de verschillende applicaties. De term geheugen verwijst voornamelijk naar het hoofdgeheugen (RAM), maar het beheer ervan vereist de bijdrage van hulpgeheugen en cachegeheugen.

De geheugenbeheerder is vooral verantwoordelijk voor het efficiënt toewijzen van geheugen aan processen, wat betekent dat u in staat moet zijn om de vrije locaties van beschikbaar geheugen op te sommen, het benodigde geheugen voor nieuwe processen toe te wijzen en geheugen terug te winnen van processen die worden beëindigd. De procesdispatcher binnen de Linux-kernel is de SLAB-dispatcher.

PLAAT vertrouwt op een blok- en cachesysteem dat geheugenverzoeken optimaliseert​ Dit type geheugenbeheer vermindert de fragmentatie die wordt veroorzaakt door toewijzings- en verplaatsingsbewerkingen.

Bloktoewijzing omvat het implementeren van een cache voor een bepaald objecttype / -grootte met verschillende vooraf toegewezen geheugenblokken die in stukken van een vaste grootte zijn gesneden die geschikt zijn voor specifieke objecten.

SLAB beheert de stukken zodat wanneer de kernel wordt gevraagd om geheugen aan een object toe te wijzen, U kunt aan dat verzoek voldoen met een reserveonderdeel uit een bestaand blok. SLAB bewaart het toegewezen geheugen voor hergebruik bij latere toewijzingen van soortgelijke objecten, en vermindert zo de overheadkosten die verband houden met de initialisatie van objecten.

Ze zijn van plan SLAB te vervangen

Romeinse Gushchin, Als lid van het Linux kernel engineering team op Facebook ontdekte hij wat hij ziet als een "ernstige fout" in de huidige geheugenbeheerder / controller. En rheeft onlangs een nieuwe geheugencontroller voorgesteld blok die belooft het geheugengebruik tussen meerdere "cgroups" drastisch te verbeteren (of stuurgroepen) uit het geheugen.

Gezien dit is het belangrijk op te merken dat cgroups verwijst naar een kenmerk van de Linux-kernel dat het mogelijk maakt om het gebruik van de systeembronnen (processor, geheugen, schijfgebruik, etc.) te beperken, te tellen en te isoleren en de term "pagina van plaat". zou door SLAB kunnen worden gelijkgesteld met het geheugentoewijzingsproces.

Volgens Gushchin:

“De echte reden waarom het bestaande ontwerp tot een laag SLAB-gebruik leidt, is simpel: Slab-pagina's worden uitsluitend gebruikt door een enkele geheugenpool.

Als er slechts een paar toewijzingen van een bepaalde grootte zijn gemaakt door een cgroup of als er enkele actieve objecten over zijn nadat de cgroup is verwijderd of als de cgroup een enkele threaded applicatie bevat die vrijwel geen kernels toewijst, maar dit elke keer doet in een nieuwe CPU: in al deze gevallen is het resulterende SLAB-gebruik erg laag.

Als kmem-berekening is uitgeschakeld, kan de kernel vrije ruimte op tegelpagina's gebruiken voor andere toewijzingen «.

Gushchin stelt dat dit geen probleem was toen de kmem-driver werd geïntroduceerd als een optionele functie die voor elke geheugenpool moest worden ingeschakeld.

Nu echter, is de kmem-driver standaard ingeschakeld voor cgroup v1 en v2. En aangezien moderne systemen de neiging hebben om een ​​groot aantal c-groepen te creëren, is het gebruik van SLAB minder effectief.

Volgens hem door de plaatpagina's te delen tussen verschillende geheugengroepen en door een herwerkt systeem te gebruiken waarbij de boekhouding per object in plaats van per pagina wordt gedaan, men zou in de linux-kernel een geoptimaliseerde geheugencontroller hebben wat een veel efficiënter gebruiksniveau biedt.

De door Gushchin voorgestelde patch bevat twee semi-onafhankelijke elementen: een API voor het laden van subpagina's die in de toekomst kan worden gebruikt voor boekhoudkundige doeleinden en een mem_cgroup_ptr API.

Tests uitgevoerd met de nieuwe controller herinnering aan Gushchin hebben aangetoond dat het mogelijk is om tussen 35% en 42% meer geheugen te krijgen in Linux op het front-endweb, de DNS-server en databasecache en vele andere workloads.

Het voorstel van Gushchin staat momenteel onder de vlag van "verzoek om commentaar". Indien geaccepteerd, kan het worden geïntegreerd in de 2020 Linux-kernelrelease.

bron: https://lkml.org/


Laat je reactie achter

Uw e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd met *

*

*

  1. Verantwoordelijk voor de gegevens: AB Internet Networks 2008 SL
  2. Doel van de gegevens: Controle SPAM, commentaarbeheer.
  3. Legitimatie: uw toestemming
  4. Mededeling van de gegevens: De gegevens worden niet aan derden meegedeeld, behalve op grond van wettelijke verplichting.
  5. Gegevensopslag: database gehost door Occentus Networks (EU)
  6. Rechten: u kunt uw gegevens op elk moment beperken, herstellen en verwijderen.