Roman Gushchin () frÄn Facebook har skickat ut ett mail till kÀrnans utvecklare om en uppsÀttning patchar som implementerar en ny minnesallokerare (slab minnesallokerare). Den nya minnesallokeraren utmÀrker sig genom att flytta slab-redovisningen frÄn sidnivÄ till kÀrnobjektnivÄ, vilket möjliggör delning av slab-sidor mellan olika cgroup istÀllet för att tilldela separata slab-cacher för varje cgroup.
Den föreslagna metoden ökar effektiviteten i slab-anvÀndningen, minskar den anvÀnda slab-minnesstorleken med 30-45% och minskar avsevÀrt det totala minnesutnyttjandet av kÀrnan. Genom att minska antalet icke-flyttbara slab observeras ocksÄ en positiv effekt pÄ minnesfragmentering. Den nya minnesallokeraren förenklar avsevÀrt koden för slab-redovisning och krÀver inte komplicerade algoritmer för dynamisk skapelse och borttagning av slab-cacher för varje cgroup. Alla cgroup för minne i den nya implementationen anvÀnder en gemensam uppsÀttning slab-cacher, och livstiden för slab-cacher Àr inte lÀngre kopplad till livstiden för cgroup. för minnesanvÀndning.
Den mer exakta resursredovisningen i den nya slab-minnesallokeraren borde teoretiskt sett belasta CPU mer, men i praktiken har skillnaderna visat sig vara obetydliga. Den nya slab-minnesallokeraren har under flera mĂ„nader anvĂ€nts pĂ„ Facebooks arbetsservrar som hanterar olika typer av belastningar, och inga mĂ€rkbara regressioner har identifierats. Samtidigt observeras en betydande minskning av minnesanvĂ€ndningen â pĂ„ vissa servrar har det varit möjligt att spara upp till 1 GB minne, men detta resultat beror starkt pĂ„ typ av belastning, total mĂ€ngd RAM, antal CPU och minneshanteringsspecifikationer. Tidigare genomförda tester visar en minskning av minnesanvĂ€ndningen med 650-700 MB (42% av slab-minnet) pĂ„ webfronten, 750-800 MB (35%) pĂ„ en server med databas-cache och 700 MB (36%) pĂ„ DNS-servern.
KĂ€lla: opennet.ru
