En av medlemmarna i utvecklarteamet för det sociala nĂ€tverket Facebook, Roman Gushchin, föreslog i utvecklarnas nyhetsbrev en uppsĂ€ttning patchar för Linux-kĂ€rnan, inriktade pĂ„ att förbĂ€ttra minneshanteringen genom implementering av en ny minneskontroller â slab (slab memory controller).
Slab-fördelning ââ Ă€r en minneshanteringsmekanism avsedd för effektivare minnesfördelning och för att eliminera betydande fragmentering. Grunden för denna algoritm Ă€r bevarandet av allokerat minne som innehĂ„ller ett objekt av viss typ, och att Ă„teranvĂ€nda detta minne vid nĂ€sta allokering för ett objekt av samma typ. Denna metod introducerades först i SunOS av Jeff Bonwick och anvĂ€nds nu brett i kĂ€rnor av mĂ„nga Unix-operativsystem, inklusive FreeBSD och Linux.
I grunden för den nya kontrolleraren ligger flyttning av slab-redovisningen frÄn sidanivÄ i minnet till nivÄer av kÀrnobjekt, vilket möjliggör gemensam anvÀndning av en slab-sida i olika cgroup, istÀllet för att allokera en separat cache för varje cgroup.
Resultaten av tester visar att den föreslagna minneshanteringsmetoden kan öka effektiviteten i slab-anvÀndningen med upp till 45%, och ocksÄ minska det totala minnesförbrukningen av operativsystemets kÀrna. Tack vare minskningen av antalet allokerade slab-sidor minskar Àven den allmÀnna minnesfragmenteringen, vilket inte kan annat Àn pÄverka systemets prestanda.
Den nya kontrolleraren har redan testats i flera mĂ„nader pĂ„ Facebooks arbetsservrar, och sĂ„ hĂ€r lĂ„ngt kan detta test kallas framgĂ„ngsrikt: utan förluster i prestanda och med ett ökande antal fel har en tydlig minskning av minnesanvĂ€ndningen observerats â pĂ„ vissa servrar upp till 1 GB. Detta tal Ă€r ganska subjektivt, eftersom tidigare genomförda tester visade nĂ„got lĂ€gre resultat:
- 650-700 MB pÄ webbgrÀnssnittet
- 750-800 MB pÄ servern med databascache
- 700 MB pÄ DNS-servern
>>> Författarens profil pÄ GitHub
>>> Resultaten frÄn tidigare tester
KĂ€lla: linux.org.ru
