Simple Science

Scienza all'avanguardia spiegata semplicemente

# Informatica# Informatica distribuita, parallela e in cluster

Uno strumento per prevedere le prestazioni delle applicazioni e i costi

Questo strumento prevede i compromessi tra prestazioni e costi su diversi sistemi informatici.

― 6 leggere min


Prevedere le prestazioniPrevedere le prestazionidelle app in modoefficienteapplicazioni su diversi sistemi.performance e i costi delleUno strumento per prevedere le
Indice

Nel mondo di oggi, molti utenti hanno accesso a diversi sistemi informatici come cluster locali, cloud privati o cloud pubblici. Con così tante opzioni, può essere difficile scegliere il miglior sistema e setup per far girare un'applicazione e raggiungere le prestazioni e i costi desiderati. Per aiutare gli utenti a fare queste scelte, presentiamo uno strumento di previsione che mostra il compromesso tra prestazioni e costi delle applicazioni su più sistemi.

La sfida di scegliere un sistema

Selezionare il sistema e la configurazione giusti per un'applicazione è tosto. Dipende da come si comporta l'applicazione e cosa vuole l'utente. Ogni applicazione può avere motivi diversi per essere lenta o veloce. Per esempio, alcune applicazioni possono andare meglio con più risorse, mentre altre potrebbero non beneficiarne molto, o addirittura rallentare con più risorse. Gli utenti hanno anche obiettivi diversi; alcuni vogliono risparmiare, mentre altri vogliono velocizzare i tempi di esecuzione.

La necessità di previsioni

Eseguire un'applicazione su ogni sistema e configurazione disponibile per ottenere dati di prestazioni e costi richiederebbe troppo tempo e risorse. Quindi, c'è bisogno di strumenti che possano prevedere questi dati senza necessitare di esecuzioni complete. Questa intuizione può aiutare gli utenti a prendere decisioni migliori in base alle loro specifiche esigenze.

Approcci precedenti

In passato, alcuni strumenti hanno provato ad aiutare gli utenti a trovare il miglior sistema e configurazione usando diversi metodi di previsione. Alcuni strumenti si sono concentrati sulla ricerca della configurazione ottimale per ridurre i costi o massimizzare le prestazioni. Tuttavia, scegliere solo un'opzione quasi ottimale non sempre offre agli utenti l'immagine completa di cui hanno bisogno per fare la scelta migliore. A volte, gli utenti potrebbero essere disposti ad accettare una leggera diminuzione delle prestazioni se questo significa risparmiare molto sui costi.

Altri metodi hanno usato modelli analitici per prevedere le prestazioni, ma richiedevano spesso di far girare l'applicazione molte volte sullo stesso sistema. Questi approcci potevano essere limitati perché erano per lo più specifici per una sola applicazione o sistema, rendendoli meno adattabili.

Il nostro strumento di previsione

Proponiamo uno strumento che prevede il compromesso tra prestazioni e costi di qualsiasi applicazione su diversi sistemi e varie configurazioni. Ecco come funziona:

  1. Profilo dell'applicazione: Lo strumento esegue l'applicazione su alcune configurazioni selezionate per raccogliere informazioni.

  2. Genera impronta: Crea un profilo unico (chiamato impronta) per l'applicazione in base ai dati raccolti.

  3. Classifica il comportamento di scaling: Lo strumento usa questa impronta per categorizzare se l'applicazione scala bene con più risorse o meno.

  4. Fai previsioni: In base alla classificazione, prevede le prestazioni su tutti i sistemi e configurazioni.

  5. Valuta la sensibilità all'interferenza: Lo strumento prevede anche quanto l'applicazione è sensibile all'interferenza di altre applicazioni, il che può essere cruciale in ambienti condivisi.

Passi nel processo di previsione

Passo 1: Profilazione dell'applicazione

Quando un utente invia un'applicazione, il nostro strumento la esegue su un set selezionato di configurazioni. Queste configurazioni sono scelte per fornire una buona panoramica delle prestazioni dell'applicazione.

Passo 2: Generazione delle impronte

Mentre l'applicazione viene eseguita, raccoglie vari indicatori di prestazione, che insieme formano la sua impronta. Questa impronta funge da riepilogo del comportamento dell'applicazione nelle configurazioni testate.

Passo 3: Classificazione delle applicazioni

Una volta che l'impronta è disponibile, lo strumento classifica l'applicazione in due categorie principali:

  • Scala bene: Applicazioni che mostrano un significativo miglioramento delle prestazioni con più risorse.

  • Scala male: Applicazioni che non beneficiano di risorse aggiuntive e potrebbero addirittura rallentare.

Passo 4: Previsione delle prestazioni

A seconda della classificazione, lo strumento fa previsioni. Per le applicazioni che scalano bene, prevede le prestazioni su tutte le configurazioni. Per quelle che scalano male, prevede solo le prestazioni per la configurazione meno intensive in risorse.

Passo 5: Sensibilità all'interferenza

In ambienti dove più applicazioni girano contemporaneamente, è importante sapere come le prestazioni di un'applicazione potrebbero cambiare se altri utenti eseguono le loro applicazioni nello stesso momento. Lo strumento stima questo impatto modellando diversi scenari di interferenza.

Valutazione dello strumento

Test con benchmark

Per valutare quanto bene funzioni lo strumento, lo abbiamo testato con un totale di 69 applicazioni diverse. Queste applicazioni sono state eseguite su tre diversi sistemi CPU a nodo singolo, ognuno con varie configurazioni.

Risultati

La valutazione ha mostrato che il nostro strumento poteva prevedere accuratamente il compromesso tra prestazioni e costi su questi sistemi. Per esempio, profilando l'applicazione per solo un breve periodo su poche configurazioni, lo strumento poteva comunque fornire previsioni preziose con tassi di errore relativamente bassi.

Caso studio specifico: GROMACS

Per dimostrare ulteriormente l'efficacia dello strumento, lo abbiamo applicato a GROMACS, un'applicazione di simulazione di dinamica molecolare. Lo strumento è stato in grado di prevedere le prestazioni di GROMACS sui sistemi testati con un errore medio di solo 17,3%. Questo risultato mostra che anche senza eseguire l'applicazione fino alla fine, lo strumento può fornire previsioni significative.

Vantaggi del nostro approccio

  1. Vari ambiti di previsione: Gli utenti possono scegliere tra previsioni globali, previsioni per sistemi specifici o previsioni localizzate basate su configurazioni vicine.

  2. Flessibilità: Il nostro strumento consente la selezione automatizzata delle configurazioni e può prevedere le prestazioni senza necessitare di esecuzioni esaustive.

  3. Previsioni di sensibilità: Gli utenti ricevono informazioni su come l'interferenza potrebbe influenzare le prestazioni della loro applicazione in ambienti condivisi.

  4. Riduzione dell'uso delle risorse: Utilizzando metriche di profilazione da esecuzioni parziali, lo strumento minimizza il sovraccarico associato alla raccolta dei dati di prestazione.

Direzioni future

Sebbene il nostro strumento sia efficace per le applicazioni e i sistemi attualmente testati, c'è spazio per l'espansione. Il lavoro futuro potrebbe includere:

  • Test più ampi: Valutare lo strumento su diversi tipi di applicazioni e sistemi come sistemi multi-nodo o sistemi con GPU.

  • Miglioramento delle previsioni: Sviluppare metodi più avanzati per classificare applicazioni che sono più difficili da prevedere.

  • Database delle impronte: Creare un repository che memorizzi le impronte per applicazioni già analizzate per evitare duplicazioni inutili in future previsioni.

Conclusione

Scegliere il sistema e la configurazione giusti per eseguire le applicazioni rimane una sfida complessa. Il nostro strumento di previsione serve a semplificare questo processo offrendo intuizioni sul compromesso tra prestazioni e costi su più sistemi. Profilando solo poche configurazioni, fornisce agli utenti informazioni preziose basate sulle loro specifiche esigenze, migliorando così il loro processo decisionale. Man mano che espandiamo le capacità dello strumento e perfezioniamo i suoi metodi, puntiamo a supportare ulteriormente gli utenti nell'ottimizzare le prestazioni delle loro applicazioni e i costi in modo efficiente.

Fonte originale

Titolo: Predicting the Performance-Cost Trade-off of Applications Across Multiple Systems

Estratto: In modern computing environments, users may have multiple systems accessible to them such as local clusters, private clouds, or public clouds. This abundance of choices makes it difficult for users to select the system and configuration for running an application that best meet their performance and cost objectives. To assist such users, we propose a prediction tool that predicts the full performance-cost trade-off space of an application across multiple systems. Our tool runs and profiles a submitted application on a small number of configurations from some of the systems, and uses that information to predict the application's performance on all configurations in all systems. The prediction models are trained offline with data collected from running a large number of applications on a wide variety of configurations. Notable aspects of our tool include: providing different scopes of prediction with varying online profiling requirements, automating the selection of the small number of configurations and systems used for online profiling, performing online profiling using partial runs thereby make predictions for applications without running them to completion, employing a classifier to distinguish applications that scale well from those that scale poorly, and predicting the sensitivity of applications to interference from other users. We evaluate our tool using 69 data analytics and scientific computing benchmarks executing on three different single-node CPU systems with 8-9 configurations each and show that it can achieve low prediction error with modest profiling overhead.

Autori: Amir Nassereldine, Safaa Diab, Mohammed Baydoun, Kenneth Leach, Maxim Alt, Dejan Milojicic, Izzat El Hajj

Ultimo aggiornamento: 2023-04-04 00:00:00

Lingua: English

URL di origine: https://arxiv.org/abs/2304.01676

Fonte PDF: https://arxiv.org/pdf/2304.01676

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.

Altro dagli autori

Articoli simili