Migliorare il calcolo serverless con pool caldi multi-livello
Un nuovo framework affronta i problemi di avvio a freddo nel computing serverless attraverso pool caldi condivisi.
― 5 leggere min
Indice
La computing senza server è un modo per eseguire applicazioni senza gestire server. Gli utenti devono solo caricare il loro codice e il fornitore del servizio si occupa di tutto il resto, come scalare e gestire i server. Questo rende più facile e conveniente per gli sviluppatori costruire applicazioni.
In questo sistema, i compiti vengono scomposti in piccole funzioni che possono essere eseguite separatamente. Questo consente flessibilità, poiché ogni funzione può scalare in modo indipendente in base alla domanda. La computing senza server è popolare tra le aziende che vogliono concentrarsi sulla scrittura di codice senza preoccuparsi dell'infrastruttura sottostante.
La sfida del cold start
Una delle sfide più grandi nella computing senza server è qualcosa chiamato "cold starts". Un cold start si verifica quando una funzione viene chiamata, ma non ci sono istanze disponibili in esecuzione per gestirla. Di solito succede quando una funzione non è stata utilizzata per un po', e ci vuole tempo per avviare una nuova istanza.
I cold start possono rallentare l'esperienza dell'utente, poiché possono richiedere da centinaia di millisecondi a diversi secondi per completarsi. Questo è problematico perché molte funzioni senza server sono pensate per essere rapide, durando circa 1 secondo. Ridurre i tempi di cold start è importante sia per gli utenti che per i fornitori di servizi.
Cos'è un Warm Pool?
Per combattere i cold start, molte piattaforme senza server mantengono un "warm pool" di istanze pre-inizializzate. Quando una funzione viene eseguita, l'istanza rimane inattiva nel warm pool invece di essere distrutta. In questo modo, se la stessa funzione viene richiesta di nuovo a breve, l'istanza esistente può essere riutilizzata, portando a tempi di risposta più rapidi.
Il concetto di warm pool è simile a come funzionano le cache della CPU. Una cache memorizza dati frequentemente accessibili per ridurre i tempi di accesso. In termini di serverless, una funzione calda è come un cache hit, mentre un cold start è simile a un cache miss.
Tuttavia, la maggior parte dei warm pool è limitata a un solo utente per motivi di sicurezza. Questo significa che le istanze non possono essere condivise tra diversi utenti, portando a inefficienze, specialmente in ambienti a risorse limitate dove più utenti richiedono accesso alla potenza computazionale contemporaneamente.
Ottimizzare i Warm Pool
I metodi attuali per migliorare l'efficienza del warm pool ruotano principalmente attorno alla gestione delle istanze che dovrebbero rimanere inattive. Alcuni sistemi trattano il warm pool come una cache della CPU, utilizzando politiche di espulsione per determinare quali istanze mantenere o rimuovere.
Queste politiche, come Least Recently Used (LRU) o Least Frequently Used (LFU), aiutano a decidere quali istanze di funzione dovrebbero rimanere nel warm pool più a lungo. Tuttavia, questi metodi potrebbero non funzionare sempre bene in scenari reali, specialmente in ambienti di edge computing dove le risorse sono limitate.
Multi-tenant
Un nuovo approccio: framework serverlessUn nuovo framework mira a migliorare la computing senza server migliorando il modo in cui operano i warm pool. Questo framework introduce un design di warm pool multi-livello che consente la condivisione sicura delle istanze di funzione tra più utenti.
Prendendo spunto dalle tecniche di caching, questo approccio costruisce un reclaim pool, che è un secondo livello dove le istanze possono essere condivise tra gli utenti. Questo metodo di pooling consente a diversi utenti di riutilizzare le istanze invece di competere per risorse limitate, riducendo così le occorrenze di cold start.
Apprendimento automatico per espulsioni ottimizzate
In aggiunta all'approccio multi-livello, il framework utilizza anche l'apprendimento automatico per prendere decisioni più intelligenti su quali istanze mantenere attive e quali rimuovere dal warm pool. Analizzando i modelli nell'uso delle funzioni, i modelli di apprendimento automatico possono approssimare strategie di espulsione ottimali, come quelle viste nei metodi di caching avanzati.
Un sistema dedicato raccoglie dati sulle richieste di funzioni e li utilizza per creare vettori di stato, che riassumono lo stato attuale delle istanze di funzione. Questi vettori di stato vengono poi inseriti in un modello di apprendimento automatico che predice quale istanza dovrebbe essere espulsa quando le risorse sono limitate.
Configurazione del Framework
Per illustrare come funziona questo framework, è stato costruito un prototipo su una comune piattaforma serverless. Il sistema tiene traccia dell'uso delle istanze di funzione e raccoglie informazioni rilevanti, come conteggi di invocazioni e tempi di inattività. Queste informazioni aiutano il modello di apprendimento automatico a decidere quali istanze dovrebbero rimanere calde e quali possono essere espulse in modo sicuro.
Il framework è stato progettato per funzionare insieme alle piattaforme serverless esistenti, rendendo facile l'integrazione senza necessità di una revisione completa del sistema. Migliorando come vengono gestite le istanze, migliora l'efficienza generale riducendo al minimo i costi generali associati ai cold start.
Test nel mondo reale e risultati
Sono stati condotti test approfonditi per valutare l'efficacia di questo nuovo framework. I risultati hanno mostrato che il warm pool multi-tier e le strategie di espulsione tramite apprendimento automatico hanno ridotto significativamente il numero di cold start rispetto agli approcci tradizionali.
In scenari in cui erano presenti sia utenti normali che utenti mobili, il warm pool ha aumentato il tasso di warm start, rendendo molto più facile per gli utenti mobili accedere alle risorse senza sperimentare lunghi tempi di attesa. Il sistema è riuscito a gestire più richieste in modo efficiente, consentendo un'esperienza utente più fluida.
Conclusione
La computing senza server sta trasformando il modo in cui vengono costruite e eseguite le applicazioni. Tuttavia, sfide come i cold start possono ostacolare la sua efficacia. Il nuovo framework di warm pool multi-tier, combinato con l'apprendimento automatico per espulsioni ottimizzate, offre una soluzione promettente a questi problemi.
Consentendo la condivisione sicura delle istanze di funzione tra più utenti e gestendo in modo intelligente i warm pool, questo approccio non solo migliora le prestazioni ma arricchisce anche l'esperienza complessiva degli utenti in ambienti a risorse limitate. Man mano che la computing senza server continua a crescere, innovazioni come queste giocheranno un ruolo cruciale nel massimizzare il suo potenziale.
Titolo: Caching Aided Multi-Tenant Serverless Computing
Estratto: One key to enabling high-performance serverless computing is to mitigate cold-starts. Current solutions utilize a warm pool to keep function alive: a warm-start can be analogous to a CPU cache-hit. However, modern cache has multiple hierarchies and the last-level cache is shared among cores, whereas the warm pool is limited to a single tenant for security concerns. Also, the warm pool keep-alive policy can be further optimized using cache replacement algorithms. In this paper, we borrow practical optimizations from caching, and design FaasCamp, a caching-aided multi-tenant serverless computing framework. FaasCamp extends the single-tier warm pool into multi-tiers, with a reclaim pool introduced enabling secure function instance sharing among tenants. Also, FaasCamp leverages machine learning to approximate the optimal cache replacement policy to improve the warm rate. We have implemented a prototype and conducted extensive experiments under multiple scenarios. The results show that FaasCamp can outperform existing platforms with minimal overhead.
Autori: Chu Qiao, Cong Wang, Zhenkai Zhang, Yuede Ji, Xing Gao
Ultimo aggiornamento: 2024-08-01 00:00:00
Lingua: English
URL di origine: https://arxiv.org/abs/2408.00957
Fonte PDF: https://arxiv.org/pdf/2408.00957
Licenza: https://creativecommons.org/licenses/by/4.0/
Modifiche: Questa sintesi è stata creata con l'assistenza di AI e potrebbe presentare delle imprecisioni. Per informazioni accurate, consultare i documenti originali collegati qui.
Si ringrazia arxiv per l'utilizzo della sua interoperabilità ad accesso aperto.