Sunday, October 5, 2008

Un Eee-PC da Formula 1

Ritorno sull'argomento boot con un po' di ritardo, anche per fare in modo che l'articolo di LWN che ne parla sia accessibile a tutti (appena usciti sono riservati agli abbonati).

Per prima cosa, un chiarimento doveroso: a meno di "miracoli", è improbabile che i nostri laptop riusciranno a fare un boot in 5 secondi (e neanche in 10...) troppo presto; le modifiche apportate ai vari componenti del sistema lo hanno reso un Eee-PC da Formula 1, e come (purtroppo) sappiamo, non tutte le meraviglie che si trovano nelle monoposto da F1 sono trasportabili nelle macchine di serie.

Detto questo, vediamo alcuni dettagli. Per iniziare, gli sviluppatori hanno investigato i tempi di boot del sistema con diverse distribuzioni, utilizzando il tool Bootchart.

La prima scoperta è che i tempi originali, per la cronaca intorno ai 45-50 secondi, sono appesantiti da voci quantomeno "curiose": as esempio, Fedora spende due secondi per far partire sendmail e altri 5(!!!) per il demone setroubleshootd. Ubuntu non è da meno, bruciando 2.5 secondi di sola CPU per mostrare l'immagine di sfondo per GDM e altrettanti per caricare il tool di gestione dei driver proprietari.

In ogni modo è chiaro che anche risolvendo questi problemi il target dei 5 secondi è inarrivabile senza un approccio radicalmente diverso. L'idea è stata quella di invertire l'approccio, assegnando a priori un "budget" ad ogni componente del boot e lavorando poi sulle componenti per rientrare in quanto stabilito.

La ripartizione è: un secondo per caricare kernel, un altro secondo per gli script di init, un secondo per X e due per l'ambiente desktop.

Per raggiungere tale risultato le principali modifiche hanno interessato:
  • kernel, compilando i driver necessari non come modulo
  • kernel, patch per l'inizializzazione asincrona di alcuni sottosistemi
  • kernel, salvataggio della lista dei blocchi letti al boot (per sReadAhead)
  • sReadAhead, che permette di creare una cache dei dati letti al boot da usare nei successivi
Per la cronaca sReadAhead è già in review e speriamo entri presto in Fedora, per le patch del kernel pare che dovremo aspettare la 2.6.28 (a meno che i maintainer del kernel non decidano di includere la patch nell'RPM).


Per finire, il video del boot: