science >> Wetenschap >  >> Elektronica

Systeem wijst tijdgevoelige gegevensverwerking beter toe aan kernen om snelle gebruikersreactietijden te behouden

Een nieuw systeem van MIT-onderzoekers verbetert de efficiëntie van snelle operaties in datacenters door een betere toewijzing van tijdgevoelige gegevensverwerking aan de CPU-kernen en zorgt ervoor dat hardware productief werkt. Krediet:Massachusetts Institute of Technology

De datacenters van tegenwoordig verslinden en verspillen veel energie door zo snel mogelijk op gebruikersverzoeken te reageren, met slechts enkele microseconden vertraging. Een nieuw systeem van MIT-onderzoekers verbetert de efficiëntie van snelle operaties door een betere toewijzing van tijdgevoelige gegevensverwerking aan de cores van de centrale verwerkingseenheid (CPU) en zorgt ervoor dat hardware productief werkt.

Datacenters werken als gedistribueerde netwerken, met tal van web- en mobiele applicaties geïmplementeerd op een enkele server. Wanneer gebruikers verzoeken naar een app sturen, stukjes opgeslagen gegevens worden opgehaald van honderden of duizenden services op evenveel servers. Voordat u een reactie stuurt, de app moet wachten op de langzaamste service om de gegevens te verwerken. Deze vertragingstijd staat bekend als staartlatentie.

Huidige methoden om staartlatenties te verminderen, laten tonnen CPU-kernen in een server open om snel binnenkomende verzoeken te verwerken. Maar dit betekent dat kernen een groot deel van de tijd niet werken, terwijl servers energie blijven gebruiken om aan te blijven. Datacenters kunnen honderdduizenden servers bevatten, dus zelfs kleine verbeteringen in de efficiëntie van elke server kunnen miljoenen dollars besparen.

Alternatief, sommige systemen wijzen kernen opnieuw toe aan apps op basis van werkbelasting. Maar dit gebeurt in milliseconden - ongeveer een duizendste van de gewenste snelheid voor de snelle verzoeken van vandaag. Te lang wachten kan ook de prestaties van een app verslechteren, omdat alle informatie die niet vóór een toegewezen tijd is verwerkt, niet naar de gebruiker wordt verzonden.

In een paper die volgende week wordt gepresenteerd op de USENIX Networked Systems Design and Implementation-conferentie, de onderzoekers ontwikkelden een sneller kerntoekenningssysteem, genaamd Shenango, die staartlatenties vermindert, terwijl een hoog rendement wordt behaald. Eerst, een nieuw algoritme detecteert welke apps moeite hebben om gegevens te verwerken. Vervolgens, een softwarecomponent wijst inactieve kernen toe om de werklast van de app aan te kunnen.

"In datacenters er is een afweging tussen efficiëntie en latentie, en je moet echt kernen opnieuw toewijzen met een veel fijnere granulariteit dan elke milliseconde, " zegt eerste auteur Amy Ousterhout, een doctoraat student in het Computer Science and Artificial Intelligence Laboratory (CSAIL). Shenango laat servers "operaties beheren die plaatsvinden op zeer korte tijdschalen en dit efficiënt doen."

Energie- en kostenbesparingen verschillen per datacenter, afhankelijk van grootte en werkdruk. Maar het algemene doel is om het CPU-gebruik van het datacenter te verbeteren, zodat elke kern goed wordt benut. De beste CPU-gebruikspercentages liggen tegenwoordig rond de 60 procent, maar de onderzoekers zeggen dat hun systeem dat cijfer mogelijk tot 100 procent zou kunnen verhogen.

"Het datacentergebruik is tegenwoordig vrij laag, " zegt co-auteur Adam Belay, een assistent-professor elektrotechniek en informatica en een CSAIL-onderzoeker. "Dit is een zeer serieus probleem [dat niet] op één plek in het datacenter kan worden opgelost. Maar dit systeem is een cruciaal onderdeel om het gebruik te verhogen."

Samen met Ousterhout en Belay op het papier zijn Hari Balakrishnan, de Fujitsu-leerstoelhoogleraar bij de afdeling Elektrotechniek en Informatica, en CSAIL Ph.D. studenten Jonathan Behrens en Joshua Fried.

Efficiënte congestiedetectie

In een echt datacenter, Shenango - algoritme en software - zou op elke server in een datacenter draaien. Alle servers zouden met elkaar kunnen communiceren.

De eerste innovatie van het systeem is een nieuw algoritme voor congestiedetectie. Elke vijf microseconden controleert het algoritme datapakketten die in de wachtrij staan ​​voor verwerking voor elke app. Als er nog een pakket wacht van de laatste waarneming, het algoritme merkt op dat er een vertraging van minstens 5 microseconden is. Het controleert ook of er rekenprocessen zijn, draden genoemd, wachten om te worden geëxecuteerd. Als, het systeem beschouwt dat als een "overbelaste" app.

Het lijkt eenvoudig genoeg. Maar de structuur van de wachtrij is belangrijk voor het bereiken van congestiedetectie op microsecondenschaal. Traditioneel denken betekende dat de software de tijdstempel van elk in de wachtrij geplaatst datapakket moest controleren, wat te veel tijd zou kosten.

De onderzoekers implementeren de wachtrijen in efficiënte structuren die bekend staan ​​als 'ringbuffers'. Deze structuren kunnen worden gevisualiseerd als verschillende sleuven rond een ring. Het eerste ingevoerde datapakket gaat in een startslot. Als er nieuwe gegevens binnenkomen, ze worden in volgende sleuven rond de ring gedropt. Gebruikelijk, deze structuren worden gebruikt voor first-in-first-out gegevensverwerking, gegevens uit de startsleuf halen en naar de eindsleuf werken.

Het systeem van de onderzoekers, echter, slaat datapakketten slechts kort op in de structuren, totdat een app ze kan verwerken. Ondertussen, de opgeslagen pakketten kunnen worden gebruikt voor congestiecontroles. Het algoritme hoeft slechts twee punten in de wachtrij te vergelijken - de locatie van het eerste pakket en waar het laatste pakket vijf microseconden geleden was - om te bepalen of pakketten een vertraging ondervinden.

"Je kunt naar deze twee punten kijken, en hun voortgang elke vijf microseconden volgen, om te zien hoeveel gegevens er zijn verwerkt, " zegt Fried. Omdat de structuren eenvoudig zijn, "je hoeft dit maar één keer per core te doen. Als je naar 24 cores kijkt, je doet 24 controles in vijf microseconden, die mooi schaalt."

Slimme toewijzing

De tweede innovatie heet de IOKernel, de centrale softwarehub die datapakketten naar de juiste apps stuurt. De IOKernel gebruikt ook het algoritme voor congestiedetectie om snel kernen toe te wijzen aan overbelaste apps, veel sneller dan traditionele benaderingen.

Bijvoorbeeld, de IOKernel ziet mogelijk een inkomend datapakket voor een bepaalde app waarvoor verwerkingssnelheden van microseconden vereist zijn. Als de app overbelast is door een gebrek aan kernen, de IOKernel wijdt meteen een idle core aan de app. Als het ook een andere app ziet draaien met kernen met minder tijdgevoelige gegevens, het zal een aantal van die kernen pakken en ze opnieuw toewijzen aan de overbelaste app. De apps zelf helpen ook:als een app geen gegevens verwerkt, het waarschuwt de IOKernel dat de kernen opnieuw kunnen worden toegewezen. Verwerkte gegevens gaan terug naar de IOKernel om het antwoord te verzenden.

"De IOKernel concentreert zich op welke apps cores nodig hebben die ze niet hebben, "Zegt Behrens. "Het probeert erachter te komen wie overbelast is en meer kernen nodig heeft, en geeft ze zo snel mogelijk kernen, zodat ze niet achterop raken en enorme latenties hebben."

De strakke communicatie tussen de IOKernel, algoritme, appjes, en serverhardware is "uniek in datacenters" en laat Shenango naadloos functioneren, Belay zegt:"Het systeem heeft wereldwijd inzicht in wat er op elke server gebeurt. Het ziet de hardware die de pakketten levert, wat draait waar in elke kern, en hoe druk elk van de apps is. En dat doet het op microsecondeschaal."

Volgende, de onderzoekers verfijnen Shenango voor real-world datacenterimplementatie. Om dit te doen, ze zorgen ervoor dat de software een zeer hoge gegevensdoorvoer aankan en de juiste beveiligingsfuncties heeft.