Un nuovo sistema dei ricercatori del MIT migliora l'efficienza delle operazioni ad alta velocità nei data center assegnando meglio l'elaborazione dei dati sensibili al tempo tra i core della CPU e garantendo che l'hardware funzioni in modo produttivo. Credito:Massachusetts Institute of Technology
I data center di oggi consumano e sprecano una buona quantità di energia rispondendo alle richieste degli utenti il più velocemente possibile, con solo pochi microsecondi di ritardo. Un nuovo sistema dei ricercatori del MIT migliora l'efficienza delle operazioni ad alta velocità assegnando meglio l'elaborazione dei dati sensibili al tempo tra i core dell'unità di elaborazione centrale (CPU) e garantendo che l'hardware funzioni in modo produttivo.
I data center operano come reti distribuite, con numerose applicazioni web e mobile implementate su un unico server. Quando gli utenti inviano richieste a un'app, bit di dati archiviati vengono estratti da centinaia o migliaia di servizi su altrettanti server. Prima di inviare una risposta, l'app deve attendere che il servizio più lento elabori i dati. Questo tempo di ritardo è noto come latenza della coda.
I metodi attuali per ridurre le latenze di coda lasciano aperti tonnellate di core CPU in un server per gestire rapidamente le richieste in entrata. Ma questo significa che i nuclei restano inattivi per la maggior parte del tempo, mentre i server continuano a utilizzare energia solo per rimanere accesi. I data center possono contenere centinaia di migliaia di server, quindi anche piccoli miglioramenti nell'efficienza di ciascun server possono far risparmiare milioni di dollari.
In alternativa, alcuni sistemi riallocano i core tra le app in base al carico di lavoro. Ma ciò si verifica nell'arco di millisecondi, circa un millesimo della velocità desiderata per le richieste frenetiche di oggi. Aspettare troppo a lungo può anche ridurre le prestazioni di un'app, perché tutte le informazioni che non vengono elaborate prima di un tempo assegnato non vengono inviate all'utente.
In un documento presentato alla conferenza USENIX Networked Systems Design and Implementation la prossima settimana, i ricercatori hanno sviluppato un sistema di allocazione del core più veloce, chiamato Shenango, che riduce le latenze di coda, pur ottenendo elevate efficienze. Primo, un nuovo algoritmo rileva quali app hanno difficoltà a elaborare i dati. Quindi, un componente software alloca i core inattivi per gestire il carico di lavoro dell'app.
"Nei data center, c'è un compromesso tra efficienza e latenza, e hai davvero bisogno di riallocare i core con una granularità molto più fine di ogni millisecondo, " dice la prima autrice Amy Ousterhout, un dottorato di ricerca studente del Laboratorio di Informatica e Intelligenza Artificiale (CSAIL). Shenango consente ai server di "gestire le operazioni che si verificano in tempi molto brevi e lo fanno in modo efficiente".
I risparmi energetici e sui costi variano in base al data center, a seconda delle dimensioni e dei carichi di lavoro. Ma l'obiettivo generale è migliorare l'utilizzo della CPU del data center, in modo che ogni nucleo sia messo a frutto. I migliori tassi di utilizzo della CPU oggi si aggirano intorno al 60 percento, ma i ricercatori affermano che il loro sistema potrebbe potenzialmente aumentare tale cifra al 100%.
"Oggi l'utilizzo del data center è piuttosto basso, " dice il coautore Adam Belay, un assistente professore di ingegneria elettrica e informatica e ricercatore CSAIL. "Questo è un problema molto serio [che non può] essere risolto in un unico punto del data center. Ma questo sistema è un elemento fondamentale per aumentare l'utilizzo".
Ad unirsi a Ousterhout e Belay sulla carta ci sono Hari Balakrishnan, la Fujitsu Chair Professor presso il Dipartimento di Ingegneria Elettrica e Informatica, e CSAIL Ph.D. studenti Jonathan Behrens e Joshua Fried.
Rilevamento efficiente della congestione
In un data center reale, Shenango, algoritmo e software, verrebbe eseguito su ciascun server in un data center. Tutti i server sarebbero in grado di comunicare tra loro.
La prima innovazione del sistema è un nuovo algoritmo di rilevamento della congestione. Ogni cinque microsecondi l'algoritmo controlla i pacchetti di dati in coda per l'elaborazione per ogni app. Se un pacchetto è ancora in attesa dall'ultima osservazione, l'algoritmo rileva che c'è un ritardo di almeno 5 microsecondi. Controlla anche se eventuali processi di calcolo, chiamati fili, sono in attesa di essere giustiziati. Se è così, il sistema la considera un'app "congestionata".
Sembra abbastanza semplice. Ma la struttura della coda è importante per ottenere il rilevamento della congestione su scala di microsecondi. Il pensiero tradizionale significava che il software controllasse il timestamp di ogni pacchetto di dati in coda, che richiederebbe troppo tempo.
I ricercatori implementano le code in strutture efficienti note come "buffer ad anello". Queste strutture possono essere visualizzate come diversi slot attorno a un anello. Il primo pacchetto di dati immesso va in uno slot di partenza. Quando arrivano nuovi dati, vengono rilasciati negli slot successivi intorno all'anello. Generalmente, queste strutture sono utilizzate per l'elaborazione dei dati first-in-first-out, estraendo i dati dallo slot iniziale e lavorando verso lo slot finale.
Il sistema dei ricercatori, però, memorizza solo brevemente i pacchetti di dati nelle strutture, fino a quando un'app non può elaborarli. Intanto, i pacchetti memorizzati possono essere utilizzati per i controlli di congestione. L'algoritmo deve solo confrontare due punti nella coda, la posizione del primo pacchetto e dove si trovava l'ultimo pacchetto cinque microsecondi fa, per determinare se i pacchetti stanno incontrando un ritardo.
"Puoi guardare questi due punti, e monitorare i loro progressi ogni cinque microsecondi, per vedere quanti dati sono stati elaborati, " dice Fritto. Perché le strutture sono semplici, "devi farlo solo una volta per core. Se stai guardando 24 core, fai 24 controlli in cinque microsecondi, che scala bene."
Allocazione intelligente
La seconda innovazione si chiama IOkernel, l'hub software centrale che indirizza i pacchetti di dati alle app appropriate. IOKernel utilizza anche l'algoritmo di rilevamento della congestione per allocare rapidamente i core alle app congestionate in modo più rapido rispetto agli approcci tradizionali.
Ad esempio, l'IOkernel potrebbe vedere un pacchetto di dati in arrivo per una determinata app che richiede velocità di elaborazione di microsecondi. Se l'app è congestionata a causa della mancanza di core, l'IOKernel dedica immediatamente un core inattivo all'app. Se vede anche un'altra app che esegue core con dati meno sensibili al tempo, prenderà alcuni di quei core e li riallocherà nell'app congestionata. Anche le app stesse aiutano:se un'app non elabora i dati, avvisa l'IOKernel che i suoi core possono essere riallocati. I dati elaborati tornano a IOKernel per inviare la risposta.
"IOKernel si sta concentrando su quali app necessitano di core che ne sono sprovvisti, " dice Behrens. "Sta cercando di capire chi è sovraccarico e ha bisogno di più core, e fornisce loro i nuclei il più rapidamente possibile, quindi non rimangono indietro e hanno enormi latenze."
La stretta comunicazione tra IOkernel, algoritmo, app, e l'hardware del server è "unico nei data center" e consente a Shenango di funzionare senza problemi, Belay afferma:"Il sistema ha una visibilità globale su ciò che sta accadendo in ogni server. Vede l'hardware che fornisce i pacchetti, cosa sta correndo dove in ogni core, e quanto è occupata ciascuna delle app. E lo fa alla scala dei microsecondi".
Prossimo, i ricercatori stanno perfezionando Shenango per l'implementazione di data center nel mondo reale. Fare così, stanno assicurando che il software sia in grado di gestire un throughput di dati molto elevato e abbia caratteristiche di sicurezza appropriate.