Finalmente il kernel Linux sarà in Real Time!
Dopo 2 decenni di sviluppo, Real-Time Linux (PREEMPT_RT) sarà finalmente integrato nel prossimo kernel Linux mainline, la versione principale e più aggiornata del kernel Linux, che include le ultime funzionalità e miglioramenti. Linus Torvalds ha ufficialmente approvato il codice durante l’Open Source Summit Europe, un evento di primo piano per sviluppatori, tecnologi e leader della comunità open source, tenutosi a Vienna, Austria, dal 16 al 18 settembre 2024. Ma perché è così importante? Iniziamo spiegando cos’è un sistema operativo in tempo reale (RTOS) e a cosa serve.
Cos’è un RTOS?
Un RTOS (Real-Time Operating System) è un sistema operativo specializzato progettato per gestire compiti critici in tempo reale con precisione e affidabilità. A differenza dei sistemi operativi generici come Windows o macOS, un RTOS è costruito per rispondere agli eventi e processare i dati entro vincoli di tempo rigorosi, spesso misurati in millisecondi o microsecondi. Come ha affermato Steven Rostedt, un noto sviluppatore di Linux in tempo reale e ingegnere di Google:
Il tempo reale è lo scenario peggiore più veloce.
Questa affermazione sottolinea la caratteristica essenziale di un RTOS: il comportamento deterministico. Un RTOS garantisce che i compiti critici vengano completati entro scadenze specificate. Molti pensano che gli RTOS siano progettati per processi veloci, ma non è così. La velocità non è il punto focale degli RTOS, bensì l’affidabilità. Questa prevedibilità è cruciale in applicazioni dove il tempismo è essenziale, come nei sistemi di controllo industriale, nei dispositivi medici e nelle apparecchiature aerospaziali.
Esempi di RTOS in uso
Un esempio di RTOS utilizzato oggi è VxWorks, impiegato nei rover marziani della NASA per guidarli e negli aerei Boeing 787 Dreamliner per controllare i sistemi avionici, garantendo una risposta in tempo reale per i controlli di volo. Un altro esempio è QNX Neutrino, ampiamente utilizzato nelle automobili per i sistemi di “infotainment” e nei sistemi avanzati di assistenza alla guida come i freni antibloccaggio.
Storia di Linux in Tempo Reale
Il codice di Linux in tempo reale sarà ora integrato in tutte le distribuzioni GNU/Linux a partire dal kernel Linux 6.12 di prossima uscita (è appena uscito il kernel Linux 6.11). Questo significa che Linux inizierà presto ad apparire in dispositivi mission-critical e hardware industriale. Ma ci è voluto molto tempo per arrivare a questo punto.
La storia di Linux in tempo reale inizia alla fine degli anni ’90, quando cresceva la necessità di supportare applicazioni in tempo reale. Gli sforzi iniziali si concentrarono sulla creazione di kernel in tempo reale separati che funzionavano accanto al kernel Linux. Tra questi progetti accademici c’erano KURT dell’Università del Kansas, RTAI dell’Università di Milano e RTLinux del New Mexico Institute of Mining and Technology.
Nel 2004, Ingo Molnar, uno sviluppatore senior del kernel Linux, iniziò a raccogliere e rielaborare vari elementi di queste tecnologie per creare le fondamenta del set di aggiornamenti software, noto come PREEMPT_RT, che introduce la preemption in tempo reale. La preemption è un meccanismo che permette di interrompere temporaneamente un processo in esecuzione per dare priorità a un altro processo più urgente, garantendo così che i compiti critici vengano eseguiti tempestivamente.
Questo approccio era diverso dalle soluzioni precedenti in quanto modificava il kernel Linux esistente piuttosto che creare un kernel in tempo reale separato. Entro il 2006, aveva guadagnato sufficiente supporto e adesioni tanto che Linus Torvalds osservò:
Controllare un laser con Linux è folle, ma ognuno in questa stanza è folle a modo suo. Quindi, se vuoi usare Linux per controllare un laser industriale, non ho problemi con l’uso di PREEMPT_RT.
Entro il 2009, un piccolo team di sviluppatori del kernel Linux, tra cui Thomas Gleixner, Peter Zijlstra e Steven Rostedt, aveva consolidato i precedenti sviluppi sperimentali in un unico pacchetto di aggiornamenti esterno al kernel principale. Fu allora che molte aziende iniziarono a utilizzare questo pacchetto per costruire sistemi industriali che richiedevano proprietà di tempo reale rigorose e una precisione millimetrica.
Man mano che il progetto avanzava, molti elementi venivano integrati nel kernel Linux. Rostedt ha affermato che, in un certo senso, è sbagliato dire che il tempo reale è solo ora in Linux. Molte delle sue funzionalità sono state introdotte nel kernel Linux nel corso degli anni. Alcune di queste, infatti, sono essenziali per il Linux che usi ogni giorno.
Ad esempio, probabilmente non hai mai sentito parlare di “NO_HZ,” che riduce il consumo energetico nei sistemi inattivi. NO_HZ è ciò che consente a Linux di funzionare in modo efficiente su macchine con migliaia di CPU come ha sottolineato Rostedt:
Non ti rendi conto di quanto Linux sia migliorato grazie alla patch in tempo reale. L’unico motivo per cui Linux funziona nei data center oggi è grazie al lavoro che abbiamo fatto.
Senza NO_HZ, Linux non funzionerebbe praticamente in tutti i data center. Questo, a sua volta, spiega perché Linux gestisce il cloud. Non so esattamente come sarebbe il mondo senza questo contributo in tempo reale, ma non assomiglierebbe affatto a quello che è oggi.
Utilizzi inaspettati di Linux in Tempo Reale
Linux in tempo reale si è rivelato utile in modi che nessuno avrebbe mai immaginato all’inizio. Rostedt ha ricordato: Nel 2005, ho ricevuto un rapporto di bug in tempo reale, e ho inviato una patch dicendo, ‘Ecco la soluzione. Puoi applicarla?’ E il tizio ha risposto, ‘Non so cosa sto facendo.’ Ho risposto, ‘Aspetta, non sei uno sviluppatore del kernel?’ Ha risposto, ‘Sono un chitarrista.’”
Si è scoperto che stava usando le prime patch in tempo reale perché stava usando JACK, il server audio per connessioni audio a bassa latenza. Lo stava usando perché, come la maggior parte dei musicisti, era troppo al verde per comprare attrezzature di fascia alta, quindi, ha continuato Rostedt, “ha preso un laptop economico, con Linux e JACK, perché con la patch in tempo reale avrebbe fatto buone registrazioni invece di saltare quando il disco rigido stava scrivendo.”
Si è scoperto che molti musicisti erano utenti precoci di Linux in tempo reale perché permetteva loro di produrre registrazioni di alta qualità a basso costo. Chi l’avrebbe mai detto? Altre funzionalità di Linux in tempo reale che sono state integrate nel kernel Linux nel corso degli anni includono:
- L’introduzione di mutexes
- Ftrace, probabilmente lo strumento di debug più importante di Linux
- Priority inheritance per le applicazioni user-space
Perché ci è voluto tanto tempo?
La completa integrazione di Linux in tempo reale nel kernel Linux è avvenuta solo recentemente perché non è stata promossa alcuna modifica fino a quando non si è ritenuto che fosse pronta. Quasi tutto è stato riscritto almeno tre volte prima di essere incluso nel kernel Linux, poiché gli standard per l’inclusione erano molto elevati.
Inoltre, il percorso verso il kernel Linux non ha riguardato solo le sfide tecniche, ma anche questioni politiche e di percezione. Inizialmente, non era possibile nemmeno menzionare il tempo reale, poiché molti ritenevano che non fosse di interesse.
Un altro problema era il denaro. Per molti anni, il finanziamento per Linux in tempo reale è stato irregolare. Nel 2015, la Linux Foundation ha istituito il progetto collaborativo Real-Time Linux (RTL) per coordinare gli sforzi intorno allo sviluppo di PREEMPT_RT.
L’ultimo ostacolo per l’integrazione completa è stato il rifacimento della funzione printk
del kernel Linux, uno strumento di debug critico risalente al 1991. Linus Torvalds era particolarmente protettivo nei confronti di essa perché aveva scritto il codice originale e lo usa ancora per il debug. Tuttavia, printk
introduce anche un ritardo significativo in un programma Linux ogni volta che viene chiamata. Questo tipo di rallentamento è inaccettabile nei sistemi in tempo reale.
Rostedt ha spiegato: “Printk ha mille hack per gestire mille situazioni diverse. Ogni volta che modificavamo printk per fare qualcosa, rompeva uno di questi casi. La cosa grandiosa di printk per il debug è che puoi sapere esattamente dove eri quando un processo si è bloccato. Quando stavo martellando il sistema davvero, davvero duramente, e la latenza era per lo più intorno ai 30 microsecondi, quando poi improvvisamente saltava a 5 millisecondi.” Quel ritardo era il messaggio printk
.
Dopo molto lavoro, molte discussioni accese e diverse proposte respinte, è stato raggiunto un compromesso all’inizio di quest’anno. Linus Torvalds è felice, gli sviluppatori di Linux in tempo reale sono felici, gli utenti di printk
sono felici e, finalmente, Linux in tempo reale è realtà.
Una nuova era per Linux
Dopo 2 decenni di sviluppo, la patch in tempo reale di Linux è stata finalmente integrata nel kernel Linux principale. Questo traguardo segna la culminazione di anni di lavoro da parte degli sviluppatori del kernel Linux per portare prestazioni deterministiche e a bassa latenza in Linux.
Con questa integrazione, il kernel Linux è completamente preemptible, il che gli consente di rispondere agli eventi entro tempi velocissimi in pochi microsecondi. Questa capacità è cruciale per applicazioni che richiedono un tempismo preciso, come i sistemi di controllo industriale, la robotica e la produzione audio.
Con l’integrazione della patch in tempo reale, Linux è ora pronto per essere un serio concorrente nel mondo degli RTOS. Questa è una vittoria non solo per i produttori di sistemi in tempo reale, ma per tutti gli utenti di Linux. Un po’ meno per gli altri produttori di sistemi RTOS che ora avranno un concorrente non da poco sulla piazza.
Fonte: https://www.zdnet.com/article/20-years-later-real-time-linux-makes-it-to-the-kernel-really/
Se vuoi sostenerci, puoi farlo acquistando qualsiasi cosa dai diversi link di affiliazione che abbiamo nel nostro sito o partendo da qui oppure alcune di queste distribuzioni GNU/Linux che sono disponibili sul nostro negozio online, quelle mancanti possono essere comunque richieste, e su cui trovi anche PC, NAS e il ns ServerOne. Se ti senti generoso, puoi anche donarmi solo 1€ o più se vuoi con PayPal e aiutarmi a continuare a pubblicare più contenuti come questo. Grazie!
Hai dubbi o problemi? Ti aiutiamo noi!
Se vuoi rimanere sempre aggiornato, iscriviti al nostro canale Telegram.Se vuoi ricevere supporto per qualsiasi dubbio o problema, iscriviti alla nostra community Facebook o gruppo Telegram.
Cosa ne pensi? Fateci sapere i vostri pensieri nei commenti qui sotto.
Ti piace quello che leggi? Per favore condividilo con gli altri.
Una risposta
[…] portato a un’integrazione completa e definitiva di questa funzionalità. Questa integrazione era stata anticipata da Linus Torvalds qualche settimana […]