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:

2 comments:

  1. Ciao! Complimenti per il blog! Io sono un utente archlinux e non ho ancora capito bene il funzionamento di sreadahead e se può essere implementato su qualsiasi distro. Ho provato la git del kernel patchato dagli ingegneri intel e ho trovato il caricamento in memoria realmente piu rapido ma oltre a questo nulla. Vorrei capire come fare utilizzare sreadahead su archlinux magari tu sai darmi qualche info maggiore..ciao ;)

    ReplyDelete
  2. La cosa migliore è leggersi l'articolo che ho linkato, che è molto accurato.
    Considera comunque che la parte kernel è importante, ma da sola non ti porta lontano: anche le modifiche su Xorg di cui parlano sono fondamentali.

    Che io sappia, a parte la dipendenza da quella branch del kernel il programma dovrebbe andare su ogni distro.

    Hai provato anche a vedere con bootchart dove si spende più tempo al boot?

    ReplyDelete