BudgetFunnel: Coarse-to-Fine Global Budget Allocation for Trace-Driven Serverless Cold-Start Mitigation
BudgetFunnel is een trace-gestuurd, coarse-to-fine framework dat een gedeeld warm-retentiebudget toewijst over heterogene serverless functies met behulp van lichte screening en een precedence-bewuste greedy allocator, waarbij een bijna optimale cold-start mitigatie wordt bereikt met aanzienlijk verminderde evaluatieoverhead vergeleken met full-evaluation en bestaande baseline-strategieën.
Oorspronkelijk artikel gelicentieerd onder CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/). Dit is een AI-gegenereerde uitleg van het onderstaande artikel. Het is niet geschreven of goedgekeurd door de auteurs. Raadpleeg het oorspronkelijke artikel voor technische nauwkeurigheid. Lees de volledige disclaimer
In de moderne cloud draaien een groot aantal applicaties op een model dat bekend staat als serverless computing. In plaats van een computer-server constant aan te laten staan om verzoeken af te handelen, wordt er een verse, lege omgeving geactiveerd op het moment dat een gebruiker er een nodig heeft, voert deze de taak uit, en laat de omgeving vervolgens weer in slaap vallen. Deze aanpak bespaart geld en vermindert verspilling, maar heeft een frustrerend gebrek: de eerste keer dat een gebruiker om een dienst vraagt, moet het systeem die omgeving vanaf nul opbouwen. Dit proces, bekend als een "cold start", veroorzaakt een merkbare vertraging. Om dit op te lossen, kunnen systeembeheerders enkele van deze omgevingen wakker en klaar houden, een strategie die "prewarming" wordt genoemd. Het warmhouden van te veel omgevingen verspilt echter precies de middelen die het systeem bedoeld was te besparen. De uitdaging ligt in het beslissen welke functies exact warm moeten worden gehouden en voor hoe lang, vooral wanneer duizenden verschillende functies strijden om een beperkte pool van middelen.
Onderzoekers hebben een nieuwe methode ontwikkend genaamd BudgetFunnel om deze balansact op te lossen. De kern van het idee is om de totale tijd die beschikbaar is om omgevingen wakker te houden te behandelen als een gedeeld budget dat verstandig moet worden uitgegeven over een enorme workload. In een typisch cloudsysteem kunnen duizenden verschillende functies zijn, elk met een eigen uniek gebruikspatroon. Sommige worden constant gebruikt, terwijl andere zelden of in plotselinge, onvoorspelbare pieken worden gebruikt. Als een beheerder probeert de perfecte "keep-alive"-tijd voor elke afzonderlijke functie te berekenen om vertragingen te minimaliseren, duurt de berekening zelf zo lang dat het onpraktisch wordt. BudgetFunnel pakt dit aan door een tweestaps-proces te gebruiken dat het probleem eerst filtert tot de meest kritieke onderdelen.
De onderzoekers testten hun methode met behulp van echte gegevenslogs van twee grote cloudproviders, één van Microsoft Azure en een andere van Alibaba. Deze logs bevatten miljoenen records die lieten zien wanneer verschillende functies werden aangeroepen. Het team gebruikte eerst een eenvoudige, snelle controle om te identificeren welke functies de meeste vertragingen zouden veroorzaken als ze zouden mogen afkoelen. Ze keken naar basispatronen, zoals hoe vaak een functie werd gebruikt, hoe onregelmatig het gebruik was en of het een dagelijks ritme volgde. Op basis van deze eenvoudige aanwijzingen selecteerden ze slechts de bovenste tien procent van de functies als "kandidaten" voor een gedetailleerde analyse. De resterende negentig procent kregen een standaardinstelling van nul, wat betekent dat het systeem niet zou proberen hen warm te houden.
Zodra de kandidaten waren geïdentificeerd, voerden de onderzoekers een gedetailleerde simulatie uit op slechts deze kleine groep. Ze testten verschillende duurperiodes voor het warm houden van deze specifieke functies, waarbij ze exact berekenden hoeveel vertraging er zou worden bespaard versus hoeveel de kosten voor de middelen zouden zijn voor elke optie. Ten slotte gebruikten ze een "greedy algorithm" om het totale beschikbare "warm-tijd"-budget te verdelen onder deze kandidaten. Dit algoritme werkte als een zorgvuldige shopper met een vast bedrag aan geld, die de upgrades koos die de grootste vermindering in vertragingen boden voor de kleinste kosten. Het resultaat was een op maat gemaakt plan dat specifieke keep-alive-tijden toewees aan de belangrijkste functies, terwijl de rest werd genegeerd.
De bevindingen toonden aan dat deze gefocuste aanpak opmerkelijk effectief was. Door slechts tien procent van de functies te evalueren, bereikte het systeem een negenvoudige snelheidstoename vergeleken met het proberen te berekenen van de beste instellingen voor elke afzonderlijke functie. Ondanks deze enorme reductie in rekentijd bleef de kwaliteit van het resultaat zeer hoog. Het aantal vertraagde verzoeken, gemeten als een percentage van het totale verkeer, bleef binnen slechts 1,54 procent van het resultaat dat werd geproduceerd door een volledige evaluatie-greedy aanpak (die alle functies analyseert) op de Azure-data, en binnen 1,93 procent op de Alibaba-data. Met andere woorden, het systeem behield bijna alle potentiële prestatievoordelen terwijl het de zware computationele kosten van het analyseren van alles vermeed.
De studie vergeleek deze methode ook met andere veelvoorkomende strategieën, zoals het warm houden van alle functies voor dezelfde vaste tijd of het gebruik van gemiddelde wachttijden om de duur te raden. BudgetFunnel presteerde aanzienlijk beter dan deze standaardbenaderingen, waarbij het de rate van cold starts met tot wel 39 procent verminderde op de Alibaba-workload. De onderzoekers bevestigden dat hun methode robuust was, wat betekent dat het goed werkte zelfs wanneer ze de manier waarop ze vertragingen telden veranderden of de specifieke tijdsintervallen aanpasten die ze testten. Ze verifieerden ook dat het greedy algorithm dat ze gebruikten zeer dicht bij de wiskundig optimale oplossing lag voor kleinere testgevallen, met een verschil van minder dan 2,6 procent van het gecertificeerde optimum.
Dit werk demonstreert dat het in complexe systemen vaak mogelijk is om een bijna optimale oplossing te vinden zonder elk afzonderlijk detail te onderzoeken. Door een grove filter te gebruiken om de meest kritieke elementen te identificeren en vervolgens een gedetailleerde analyse toe te passen alleen waar dat ertoe doet, kunnen beheerders middelen efficiënt beheren zonder te verdrinken in onmogelijke berekeningen. Het BudgetFunnel-framework biedt een praktische manier om serverless applicaties snel en responsief te houden zonder de bank te breken, en bewijst dat een beetje slim filteren een lange weg kan afleggen in het beheren van de onzichtbare machinerie van de cloud.
Verdrinkt u in papers in uw vakgebied?
Ontvang dagelijkse digests van de nieuwste papers die bij uw onderzoekswoorden passen — met technische samenvattingen, in uw taal.