4. Innovazioni Tecnologiche e Supporto di Opentelemetry
Opentelemetry si adatta rapidamente all’evoluzione del panorama tecnologico, supportando e integrandosi con le più recenti innovazioni. Una di queste innovazioni è l’introduzione del frame pointer di default in Ubuntu 24.04 LTS, che permetterà di sfruttare la tecnologia eBPF per garantire una maggiore precisione nella tracciatura delle prestazioni delle applicazioni.
Il frame pointer è un registro del processore che contiene l’indirizzo della base dello stack frame corrente. Lo stack frame è una struttura dati che memorizza le informazioni relative a una chiamata di funzione, come i parametri, le variabili locali e il valore di ritorno. Il frame pointer permette di ricostruire la catena delle chiamate di funzione, facilitando il processo di stack tracing, che consiste nel determinare la sequenza delle funzioni eseguite da un programma.
eBPF è una tecnologia che permette di eseguire codice in modo sicuro e efficiente nel kernel del sistema operativo, senza la necessità di ricompilare il kernel o di installare moduli aggiuntivi. eBPF offre la possibilità di strumentare le applicazioni a livello di kernel, raccogliendo dati di basso livello, come il tempo di CPU, la latenza di I/O, il consumo di memoria e altro. Questi dati possono essere poi correlati con i dati di alto livello, come le tracce e le metriche, per ottenere una visione completa e dettagliata delle prestazioni delle applicazioni.
Opentelemetry supporta eBPF tramite il suo componente Collector, che si occupa di raccogliere, trasformare e instradare i dati di telemetria verso le piattaforme di analisi. Il Collector può essere configurato per utilizzare eBPF come sorgente di dati, e per inviare i dati verso le destinazioni preferite, come Elasticsearch, Prometheus, Jaeger e altre.
Frame pointer per ottenere stack trace più completi e precisi
L’abilitazione del frame pointer di default in Ubuntu 24.04 LTS è una novità importante, che migliora la qualità e l’accuratezza dei dati di telemetria raccolti da eBPF. Infatti, il frame pointer permette di ottenere stack trace più completi e precisi, senza la necessità di utilizzare tecniche di inferenza basate su euristiche, che possono essere soggette a errori o incompletezze. Questo rende più facile e affidabile il processo di profilazione e di debugging delle applicazioni, e consente di individuare e risolvere più rapidamente eventuali problemi di prestazioni.
Questa innovazione è stata resa possibile grazie alla collaborazione tra Canonical, la società che sviluppa e supporta Ubuntu, e Polar Signals, una società che offre una piattaforma di osservabilità basata su Opentelemetry. Insieme, hanno deciso di abilitare il frame pointer di default nella compilazione dei pacchetti di Ubuntu 24.04 LTS, con poche eccezioni per i casi in cui il frame pointer potrebbe causare un impatto negativo sulle prestazioni. Questa decisione è stata presa dopo aver analizzato il trade-off tra il costo e il beneficio del frame pointer, e aver constatato che il costo è trascurabile (tra l’1% e il 2%) rispetto al beneficio ottenuto in termini di osservabilità.
Questa decisione è stata anche influenzata dal fatto che Fedora, un’altra distribuzione Linux, aveva già abilitato il frame pointer di default per i suoi pacchetti, creando uno standard de facto nel mondo open source. Inoltre, il frame pointer di default è già una pratica comune in altri sistemi operativi, come Windows e MacOS, che lo utilizzano per facilitare il debugging e la profilazione delle applicazioni.