Linux 6.12 potrebbe avere il supporto “PREEMPT_RT” in tempo reale

Preempt-RT è una modifica che consente alle attività con priorità più alta di interrompere attività con priorità più bassa.

El concetto di sistema in tempo reale Non è qualcosa a cui si è pensato negli ultimi anni in Linux, dall'idea di questo è iniziato quasi 20 anni fa, per la precisione nel 2005 nell'ambito del progetto “Realtime-Preempt” (“-rt”) con lo sviluppo della modalità PREEMPT_RT per il kernel Linux.

Per coloro che non lo sanno PREVIO_RT, dovrebbero saperlo è una toppa per il kernel Linuxe converte il sistema operativo in uno in tempo reale (in tempo reale). L'obiettivo principale di PREEMPT_RT è ridurre la latenza e garantire la prevedibilità nell'esecuzione delle attività, che è fondamentale nelle applicazioni che richiedono risposte rapide.

In parole più semplici, possiamo dire che PREEMPT_RT permette di interrompere quasi tutte le parti del chicco, che riduce la latenza. A differenza di un kernel standard, non tutte le sezioni possono essere interrotte, il che può causare ritardi nei tempi di risposta.

Dal 2015 il progetto è sotto la supervisione della Linux Foundation e fino ad ora l'implementazione della modalità PREEMPT_RT è stata offerta sotto forma di patch esterne. Sulla base di queste patch, distribuzioni come RHEL, SUSE e Ubuntu hanno creato edizioni in tempo reale dei loro prodotti, molto richiesti in settori quali sistemi finanziari, dispositivi di elaborazione audio e video, sistemi aeronautici, medicina, robotica, telecomunicazioni e applicazioni industriali, dove è fondamentale garantire tempi di risposta prevedibili agli eventi.

En 2019 è iniziato il processo di promozione delle patch sviluppate nel progetto PREEMPT_RT al kernel Linux principale. Nella versione 5.3 del kernel, l'opzione PREEMPT_RT era inclusa nel file di configurazione per abilitare la modalità in tempo reale.

I bit printk richiesti per PREEMPT_RT si trovano in linux-next. Questo è stato l'ultimo ostacolo noto per PREEMPT_RT. La coda RT ha anche la "console atomica" per l'UART 8250 che non è ancora arrivata Linux-successivo. Ciò significa un comportamento da "console legacy" come non stampare da il contesto atomico in casi di emergenza. Il controller UART 8250 è l'unico che oggi fornisce il supporto della “console atomica”.

tutto questo lavoro sta per dare i suoi frutti, poiché l'integrazione completa delle modifiche necessarie ha richiesto cinque anni ed è prossima al completamento, poiché si prevede che nella versione 6.12 il kernel possa essere compilato in modalità PREEMPT_RT senza la necessità di applicare patch aggiuntive.

Si dice che l'ultimo ostacolo ciò che impediva l'abilitazione di PREEMPT_RT era la mancanza di supporto per output atomico non bloccante utilizzando la funzione printk. Questa funzionalità è già stata adottato nel ramo linux-next. Inoltre, è in attesa di implementazione una console atomica non bloccante per il controller UART 8250, la cui assenza attualmente impedisce l'output di messaggi di emergenza alla console dal codice eseguito in contesti atomici.

Con i bit printk uniti, PREEMPT_RT potrebbe essere abilitato su X86, ARM64 e Risc-V. Queste tre architetture unite hanno richiesto modifiche nel corso degli anni.
anni, lasciandomi in una posizione in cui non ho cambiamenti essenziali nel
coda che li influenzerebbe. ARM e POWERPC hanno ancora alcune patch essenziali...

Sviluppatori del kernel Linux hanno annunciato l'integrazione delle ultime modifiche necessarie nel ramo linux-next, che verrà utilizzato per compilare la versione 6.12. Queste modifiche consentiranno di compilare il kernel con l'opzione PREEMPT_RT, che introduce funzionalità in tempo reale.

Una volta accettate queste modifiche sul ramo principale, modalità PREEMPT_RT Sarà disponibile per le architetture X86, ARM64 e RISC-V. Il supporto per le architetture ARM e POWERPC verrà aggiunto in seguito, poiché le patch necessarie non sono state ancora completamente integrate.

Vale la pena ricordare che le modifiche proposte non sono ancora definitive ed è possibile che se PREEMPT_RT non arriverà nel ramo 6.12, verrà integrato fino al prossimo anno nella versione 6.13.

Infine, se sei interessato a saperne di più, puoi controllare i dettagli nel file seguente link