Ricerca nel sito web

Il kernel Linux potrebbe ottenere riavvii più intelligenti


Gli ingegneri di Google propongono LUO, un sistema guidato da macchine a stati per gestire gli aggiornamenti del kernel Linux in tempo reale con interruzioni minime.

Di recente è emerso qualcosa di interessante sul fronte del kernel Linux: una nuova serie di patch intitolata "Live Update Orchestrator", scritta dall'ingegnere di Google Pasha Tatashin e costruita su un precedente set di patch comunemente indicato come la serie di patch KHO v5.

Ha lo scopo di consentire aggiornamenti del kernel senza problemi, denominati "Live Update", in modo che alcuni dispositivi rimangano pienamente operativi durante la transizione da un vecchio kernel a uno nuovo.

In sostanza, l'innovativo sottosistema LUO (Live Update Orchestrator) intende ridurre al minimo i tempi di inattività del sistema preservando gli stati dei dispositivi durante un riavvio, a vantaggio in particolare degli ambienti cloud dinamici in cui anche le interruzioni minori possono essere sgradite.

Secondo gli sviluppatori, questo approccio utilizza un meccanismo di macchina a stati per orchestrare la transizione. Il sottosistema LUO tiene traccia dello stato di avanzamento attraverso diversi stati, "normale", "preparato" e "aggiornato", e li collega tra loro tramite API di callback.

Questi callback consentono ad altri sottosistemi del kernel (ad esempio, KVM, IOMMU, interrupt, il nuovo livello di dispositivo dev_liveupdate e la gestione della memoria) di integrarsi perfettamente nel flusso di lavoro di aggiornamento in tempo reale.

Inoltre, il sistema può essere controllato tramite un'interfaccia sysfs in "/sys/kernel/liveupdate/{state, prepare, finish}." Quando viene utilizzata, la sequenza di Live Update si svolge come segue:

  1. normale: il kernel funziona come al solito, senza alcun aggiornamento in tempo reale.
  2. prepare: Scrivere "1 " in "/sys/kernel/liveupdate/prepare" attiva il callback LIVEUPDATE_PREPARE, spostando i sottosistemi in uno stato di transizione "prepared".
  3. aggiornato: una volta che il nuovo kernel prende il sopravvento, il sistema entra nello stato "aggiornato", il che significa che i dispositivi e i sottosistemi riprendono la funzionalità.
  4. finish: Scrivendo in "/sys/kernel/liveupdate/finish" si esegue una transizione finale di ritorno a "normale", invocando il callback LIVEUPDATE_FINISH e ripristinando lo stato operativo completo.

Tuttavia, un cambiamento così importante al kernel Linux non può avvenire in questo modo. Greg Kroah-Hartman, una figura importante nel suo sviluppo, ha espresso riserve e ha chiesto prove più sostanziali della fattibilità di LUO.

In particolare, sottolinea la necessità di "patch reali, effettive, funzionanti per almeno tre sottosistemi di bus" prima che lui e gli altri manutentori prendano in considerazione una seria revisione.

Come potete immaginare, ho "pensieri" su tutto questo che viene aggiunto al nucleo del driver. Ma, prima di andare avanti con questo, voglio vedere alcune patch reali, effettive, funzionanti, per almeno 3 sottosistemi di bus che implementano correttamente questo prima di prendere in considerazione la revisione di questo.

Inoltre, nella sua risposta alla mailing list per lo sviluppo del kernel Linux, sottolinea l'importanza di strumenti in spazio utente ben sviluppati in grado di gestire il numero potenzialmente elevato di dispositivi coinvolti in qualsiasi scenario di aggiornamento in tempo reale.

In altre parole, c'è ancora molta strada da fare prima che la funzionalità LUO si faccia strada nel kernel Linux, se mai lo farà. Terremo d'occhio la situazione e, come sempre, vi terremo aggiornati su eventuali nuovi sviluppi. Per ulteriori informazioni, consultare l'annuncio stesso qui.