Facebook släppte korrigeringar som förbättrar Slab-minneskontrollern i Linux

Roman Gushchin (en programvaruingenjör för Facebook) register i Linux-kärnutvecklingslistan, en uppsättning patchar till applikationen för mappmappning för plattkontroller (en minneskontroll).

Den nya styrenheten är anmärkningsvärd genom att flytta skivredovisning från minnesnivån till kärnobjektnivån, vilket gör det möjligt att dela skivsidor över olika grupper c, snarare än att tilldela separata skivcacher för varje grupp c.

Roman fann vad han kallar en "mycket allvarlig brist" i den befintliga plattminneskontrollern som leder till lågt utnyttjande idag med cgroups.

”Den verkliga anledningen till att den befintliga designen leder till lågt utnyttjande av plattor är enkel: platsidor används exklusivt av en minnespool.

Om det bara finns några tilldelningar av en viss storlek som görs av en cgroup, eller om det finns några aktiva objekt kvar efter att cgroup har tagits bort, eller om cgroup innehåller en enda gängad applikation som knappt tilldelar några kärnobjekt, men varje gång på en ny CPU: i alla dessa fall är det resulterande plattanvändningen mycket lågt.

Om kmem-redovisning är inaktiverad kan kärnan använda ledigt utrymme på sidorna för andra tilldelningar. «

Den föreslagna Slab-minneskontrollern av Romano Gushchin under det senaste året var ganska lovande som ökar effektiviteten av användningen av plattan, minska minnesstorleken som används för plattan med 30-45% och avsevärt minska den totala kärnminnesförbrukningen.

Dessutom, de implementerade korrigeringarna har angett att Facebook redan använder koden i produktion på sina servrar och var sparar ~ 650-700MB + för front-end webbservrar, databascaching och DNS-servrar, bland andra utmärkelser.

Genom att minska antalet icke-mobila plattor observeras också en positiv effekt när det gäller att minska minnesfragmentering. Ny minneskontroller förenklar signifikant koden för bokföringsplatta och kräver inte komplicerade algoritmer för dynamisk skapande och radering av plattcacher för varje grupp c.

Alla cgroups för minne i den nya implementeringen använder en gemensam uppsättning plattecacher och livslängden för plattcacher är inte längre bunden till livslängden för minnesbegränsningar som ställs in genom cgroup.

Den mer exakta resursredovisningen som implementerats i den nya plattkontrollen bör teoretiskt ladda CPU: n mer, men i praktiken visade sig skillnaderna vara försumbara.

I synnerhet den nya plattdrivrutinen har använts i flera månader på Facebook-servrar i drift som hanterar olika typer av laster och hittills har inga betydande regressioner upptäckts.

Plåstret innehåller ett par semi-oberoende delar, som också kan hitta sin användning utanför plattans minneskontroll:

  • Subpage Load API, som kan användas i framtiden för att räkna andra objekt som inte är storleken på en sida, till exempel percpotilldelningar
  • Mem_cgroup_ptr API, där pekare räknas till en memcg, kan återanvändas för effektiv reparering av andra objekt, till exempel sidcache.

Samtidigt, minnesförbrukningen minskar markant- På vissa värdar var det möjligt att spara upp till 1 GB minne, men denna indikator beror till stor del på lastens beskaffenhet, den totala storleken på RAM, mängden CPU och egenskaperna för att arbeta med minne.

Istället för att skapa en separat uppsättning kmem_caches för varje minnesgrupp används två globala uppsättningar: rotuppsättningen för icke-redovisade och rotgruppens gruppgruppstilldelningar och den andra uppsättningen för alla andra tilldelningar. Detta möjliggör förenklad livstidshantering av enskilda kmem_caches.

Slutligen, om du är intresserad av att känna till den nya uppsättningen med 19 korrigeringar kan den hittas i listan kärnpost.


Lämna din kommentar

Din e-postadress kommer inte att publiceras. Obligatoriska fält är markerade med *

*

*

  1. Ansvarig för uppgifterna: Miguel Ángel Gatón
  2. Syftet med uppgifterna: Kontrollera skräppost, kommentarhantering.
  3. Legitimering: Ditt samtycke
  4. Kommunikation av uppgifterna: Uppgifterna kommer inte att kommuniceras till tredje part förutom enligt laglig skyldighet.
  5. Datalagring: databas värd för Occentus Networks (EU)
  6. Rättigheter: När som helst kan du begränsa, återställa och radera din information.