Facebook har föreslagit en ny skivminneshanteringsmekanism för Linux-kärnan

Roman Gushchin (Roman Gushchin) från Facebook publicerade på e-postlistan för Linux-kärnutvecklare en uppsättning patchar med implementering av en ny minnesallokeringskontroller platta (platta minneskontroller). Den nya styrenheten är känd för att flytta skivkonton från minnessidans nivå till kärnobjektnivån, vilket gör det möjligt att dela skivsidor i olika cgroups, istället för att tilldela separata skivcacher för varje cgroup.

Det föreslagna tillvägagångssättet gör det möjligt att öka effektiviteten av att använda skiva, minska storleken på minnet som används för skiva med 30-45 % och avsevärt minska kärnans totala minnesförbrukning. Genom att minska antalet icke-flyttbara plattor finns det också en positiv effekt för att minska minnesfragmenteringen. Den nya minneskontrollern förenklar avsevärt koden för redovisning av skivor och kräver inte användning av komplicerade algoritmer för att dynamiskt skapa och ta bort skivcachar för varje c-grupp. Alla minnes-cgroups i den nya implementeringen använder en gemensam uppsättning skivcacher, och livslängden för skivcacher är inte längre bunden till livslängden för de som installerats via cgroup restriktioner på minnesanvändning.

Den mer exakta resursredovisningen som implementerats i den nya skivstyrenheten borde teoretiskt sett belasta CPU:n mer, men i praktiken visade sig skillnaderna vara obetydliga. I synnerhet har den nya skivstyrenheten använts i flera månader på Facebook-produktionsservrar som hanterar olika typer av arbetsbelastning, och inga märkbara regressioner har ännu identifierats. Samtidigt finns det en betydande minskning av minnesförbrukningen - på vissa värdar var det möjligt att spara upp till 1 GB minne, men denna indikator beror mycket på belastningens art, den totala storleken på RAM, antalet processorer och funktionerna i att arbeta med minne. Tidigare tester visade minskning av minnesförbrukningen med 650-700 MB (42% av skivminnet) på webbgränssnittet, 750-800 MB (35%) på servern med en DBMS-cache och 700 MB (36%) på DNS-servern.

Källa: opennet.ru

Lägg en kommentar