Facebooks nya minneshanteringsmetod

En av medlemmarna i utvecklingsteamet för sociala nätverk Facebook, Roman Gushchin, föreslog i utvecklarens e-postlista en uppsättning Linux kernel patcharsyftar till att förbättra minneshanteringen genom implementeringen av en ny minneshanteringskontroller - platta (platta minneskontroller).

plattfördelning är en minneshanteringsmekanism utformad för att allokera minne mer effektivt och eliminera betydande fragmentering. Grunden för denna algoritm är att spara tilldelat minne som innehåller ett objekt av en viss typ och återanvända det minnet nästa gång det tilldelas för ett objekt av samma typ. Denna teknik introducerades först i SunOS av Jeff Bonwick och används nu flitigt i kärnorna i många Unix-operativsystem, inklusive FreeBSD och Linux.

Den nya styrenheten bygger på att flytta skivredovisning från minnessidans nivå till kärnobjektsnivån, vilket gör det möjligt att dela en skivsida i olika cgroups, istället för att allokera en separat cache för varje cgroup.

Baserat på testresultaten, följer det att den föreslagna minneshanteringsmetoden tillåter ökning effektivitet med hjälp av platta att 45%, och kommer också att minska den totala minnesförbrukningen för OS-kärnan. Genom att minska antalet sidor som allokeras för skiva reduceras minnesfragmenteringen som helhet, vilket inte kan annat än påverka systemets prestanda.

Den nya styrenheten har testats på produktions-Facebook-servrar i flera månader, och hittills kan denna testning kallas framgångsrik: utan prestandaförlust och ingen ökning av antalet fel har en tydlig minskning av minnesförbrukning märkts - på vissa servrar upp till 1 GB. Detta antal är ganska subjektivt, till exempel visade tidigare tester något lägre resultat:

  • 650-700 MB på webbgränssnittet
  • 750-800 MB på server med databascache
  • 700 MB på DNS-server

>>> Författarens sida på GitHub


>>> Tidiga testresultat

Källa: linux.org.ru

Lägg en kommentar