Misurare le prestazioni del sistema operativo nelle applicazioni HPC
Lo strumento STaKTAU semplifica la misurazione delle prestazioni per le applicazioni HPC che interagiscono con il sistema operativo.
― 5 leggere min
Indice
Le applicazioni di High-Performance Computing (HPC) sono fondamentali per risolvere problemi grandi e complessi. Queste applicazioni spesso si affidano a più interfacce e ambienti di programmazione per funzionare al meglio. Un fattore chiave nelle prestazioni di queste applicazioni è quanto tempo passano nel Sistema Operativo (OS). Capire come viene utilizzato questo tempo può aiutare a identificare aree di miglioramento.
Importanza della Misurazione delle Prestazioni
Per migliorare le prestazioni delle applicazioni, gli sviluppatori devono osservare come gira il loro codice. Questo implica raccogliere varie metriche, come il tempo speso in diverse sezioni del codice, come si muovono i dati nel sistema e l'uso dell'hardware, come le prestazioni della cache. Anche se molti strumenti di performance si concentrano sull'analisi dell'applicazione stessa, è anche essenziale studiare come l'OS influisce sulle prestazioni.
Gli aspetti chiave da considerare includono quanto tempo l'OS spende nella gestione dei processi, nel muovere la memoria, nell'allocare risorse e nel gestire le operazioni di input/output. Analizzare queste aree può fornire un quadro più completo delle prestazioni dell'applicazione.
Sfide nella Misurazione delle Prestazioni dell'OS
Misurare il tempo speso in operazioni a livello di OS presenta delle sfide. I metodi di analisi precedenti spesso richiedevano di modificare il kernel dell'OS, il che può essere complesso e non portabile tra diverse versioni del kernel. Questo significa che gli sviluppatori dovevano adattare i loro strumenti ogni volta che il kernel veniva aggiornato, portando a un lavoro aggiuntivo.
È stato sviluppato un nuovo approccio per semplificare questo processo e renderlo più efficace, consentendo misurazioni delle prestazioni senza bisogno di modificare il codice del kernel.
Metodi Tradizionali di Analisi delle prestazioni
L'analisi delle prestazioni di solito coinvolge due tecniche principali: profiling e tracing. Il profiling fornisce informazioni su quanto tempo è speso in diverse parti del programma, mentre il tracing registra eventi con timestamp. Entrambi i metodi raccolgono dati durante l'esecuzione del programma, utilizzando strumenti progettati per questo scopo.
Le applicazioni HPC usano spesso interfacce di programmazione che aiutano gli strumenti di performance a raccogliere dati. Ad esempio, l'interfaccia MPI include routine che permettono l'analisi delle prestazioni senza interrompere il flusso dell'applicazione. Ci sono anche interfacce di callback in alcuni ambienti di programmazione che attivano azioni in punti specifici dell'esecuzione.
Tecniche Avanzate di Misurazione
Le Chiamate di Sistema sono un aspetto vitale su come le applicazioni comunicano con il sistema operativo. Permettono alle applicazioni di richiedere servizi che necessitano di privilegi superiori. Tuttavia, le tecniche di misurazione tradizionali spesso non riescono a catturare cosa succede durante queste chiamate. Il nuovo approccio si concentra sulla misurazione del tempo speso all'interno delle chiamate di sistema e può anche essere usato per analizzare altre routine dell'OS.
SystemTap è uno strumento che consente di monitorare il kernel di Linux. Utilizza un linguaggio di scripting unico per definire azioni per eventi specifici del kernel. Questo significa che gli sviluppatori possono raccogliere informazioni dettagliate sull'attività del kernel senza avere accesso root, purché siano nel giusto gruppo utenti.
Progettazione dello Strumento STaKTAU
STaKTAU è uno strumento di analisi delle prestazioni che raccoglie dati su quanto tempo le applicazioni spendono nell'OS. Ha due parti principali: lo strumento di raccolta dati e l'interfaccia utente, che visualizza le informazioni raccolte.
Quando viene effettuata una chiamata di sistema, STaKTAU avvia un timer. Quando la chiamata è completa, segna la fine del timer e memorizza le informazioni. Questi dati vengono mantenuti nello spazio del kernel e devono essere spostati nello spazio utente per l'analisi. Una delle principali sfide è trasferire efficientemente questi dati senza rallentare il sistema.
Per affrontare questo problema, STaKTAU utilizza un buffer per memorizzare i dati raccolti. Una volta che il buffer è pieno o alla fine dell'esecuzione dell'applicazione, i dati vengono inviati per l'analisi. Questo metodo aiuta a prevenire la perdita di dati mantenendo il sistema in funzione senza intoppi.
Valutazione delle Prestazioni di STaKTAU
Per vedere quanto bene funziona STaKTAU, sono state effettuate valutazioni usando due tipi di applicazioni: un semplice benchmark di calcolo e un'applicazione di ray tracing più complessa. L'obiettivo era vedere quanto overhead aggiunge STaKTAU al tempo di esecuzione.
Il primo benchmark, un semplice calcolo, non ha fatto molto lavoro pesante ma si è concentrato principalmente sulla gestione dei thread. Il secondo benchmark, il ray tracing, ha passato più tempo a fare calcoli reali. Attraverso i test, è stato trovato che l'overhead causato da STaKTAU era minimo, specialmente per le applicazioni che erano pesanti in termini di calcolo.
La valutazione ha coinvolto l'esecuzione di ogni applicazione più volte per raccogliere dati coerenti. Per il compito di benchmark più semplice, c'era un overhead più evidente dato che dipendeva molto dalle chiamate di sistema. Al contrario, il compito di ray tracing ha mostrato poche differenze nel tempo di esecuzione quando STaKTAU era attivo.
Conclusioni
STaKTAU offre un modo efficace per misurare come le applicazioni HPC interagiscono con il sistema operativo. A differenza dei metodi precedenti che richiedevano modifiche al kernel, STaKTAU opera in modo più portatile, facilitandone l'uso su diverse versioni del kernel senza necessitare di modifiche estese.
L'analisi delle prestazioni mostra che, per molte applicazioni focalizzate sul calcolo, l'overhead derivante dall'uso di STaKTAU è minimo. Tuttavia, è essenziale riconoscere che le applicazioni che dipendono pesantemente dalle chiamate di sistema potrebbero affrontare impatti prestazionali più evidenti.
Questo strumento offre una visione autonoma di quanto tempo le applicazioni spendono nel kernel, ma può anche essere combinato con altri strumenti di analisi delle prestazioni per ottenere approfondimenti più completi. Combinando strumenti diversi, gli sviluppatori possono individuare dove nel loro codice si verifica l'interazione con il kernel e come influisce sulle prestazioni complessive.
Lo sviluppo di STaKTAU rappresenta un significativo passo avanti nella misurazione delle prestazioni per le applicazioni HPC, rendendo più facile per gli sviluppatori ottimizzare il loro codice in modo efficace.
Titolo: STaKTAU: profiling HPC applications' operating system usage
Estratto: This paper presents a approach for measuring the time spent by HPC applications in the operating system's kernel. We use the SystemTap interface to insert timers before and after system calls, and take advantage of its stability to design a tool that can be used with multiple versions of the kernel. We evaluate its performance overhead, using an OS-intensive mini-benchmark and a raytracing mini app.
Autori: Camille Coti, Kevin Huck, Allen D. Malony
Ultimo aggiornamento: 2023-04-21 00:00:00
Lingua: English
URL di origine: https://arxiv.org/abs/2304.11205
Fonte PDF: https://arxiv.org/pdf/2304.11205
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.