MGSM0063 05/07/2008 Ma quanto dura questo Boot ??.
Quante volte ci siamo chiesti ma cosa combina il computer durante la base di boot e quanto tempo ci impiega.
Normalmente si procede con un cronometro a misurare i tempi di avviamento ma questo sistema, oltre ad essere estremamente empirico, non ci aiuta minimamente a sapere cosa fa la macchina e dove si potrebbe intervenire per migliorare i tempi di boot.
Fortunatamente altra gente si è posta lo stesso problema ed ha sviluppato un software specifico per analizzare le fasi di boot, questo software si chiama bootchart e si trova già bello impacchettato nella sezione Contrib di Mandriva.
I programmi in realtà sono 2 uno serve ad acquisire le informazioni durante la fase di boot ed uno invece serve a generare un grafico relativo al boot con tutte le informazioni utili.
Innanzi tutto occorre aprire un terminale con Menu -> Strumenti -> konsole
Password: LaPasswordDiRoot
#
Oltre ai due pacchetti indicati verranno installati altri pacchetti di supporto come psacct e jakarta-commons-cli.
Una volta installati i pacchetti affinché i dati vengano acquisiti occorre riavviare la macchina e seguire la seguente procedura
3.1) Riavviare la macchina
3.2) All'apparire della schermata di scelta del sistema operativo selezionare la voce desiderata.
3.3) Premere il tasto F2 (altre opzioni) in modo da poter fornire parametri aggiuntivi al kernel
3.4) Digitare il seguente testo in fondo alla riga di avvio del kernel
3.5) Premere Invio (mi raccomando a questo punto non fate più nulla sino a che non appare la maschera di Login).
A questo punto la fase di boot ha inizio e si concluderà come di consueto.
Ora occorre generare il grafico a partire dai dati acquisiti durante il boot
Innanzi tutto occorre aprire un terminale con Menu -> Strumenti -> konsole
Così facendo viene generato un grafico, in questo caso in formato grafico png, dal nome bootchart.png
Ora con un qualsiasi programma di visione di immagini, va benissimo anche konqueror, aprite il file e vi comparirà un immagine simile a questa:
Come si vede dal grafico il ciclo di Boot dura 33 secondi ed all'avvio ben 11 secondi vengono persi dal processo nash-hotplug a fare non si sa bene cosa, questo modulo appartiene a mkinitrd, vedrò di indagare più a fondo su cosa serva.
Il resto dei processi parte in modo parallelo ottimizzando così i tempi di avviamento, ora si tratta di capire se si può limare questi tempi e come.
Ciao Ciao, Moreno
Commenti
Inviato da bigceca il Dom, 06/07/2008 - 09:28.
lo cercavo da un po' d tempo....
era da un po' ke mi chiedevo se si poteva ottimizzare il boot.......
cioè test alla mano io ho 66 secondi di boot.......è un filino tragico (nn ho un dual core, ho un portatile con un celeron M [inside] e solo 512 mega d ram......xo sono convinto ke potrebbe essere + performante....
aspetto risvolti
ciao
Diego
ciao
Big Ceca
|_|0|_|
|_|_|0|
|0|0|0|
Inviato da Moreno il Dom, 06/07/2008 - 10:13.
Re: lo cercavo da un po' d tempo....
Ciao
Beh comincia ad effettuare il test e a postare il risultato così possiamo fare una verifica su cosa succede.
Ciao Ciao, Moreno
Addio, e grazie per tutto il pesce.
Avatar by moonlight-dream.
Inviato da Nick78 il Dom, 06/07/2008 - 10:31.
Re: lo cercavo da un po' d tempo....
Grande Moreno con queste chicche di domenica mattina!!
Il mio test è andato bene, il time si è fermato a 35 secondi, ma credo che si possa limare qualcosa, il problema che nn saprei dove metterci mani.... :-P
Ciao ciao!
Nicola
ps. Posso postare i risultati del test?
NiCk on Mandriva 2011 - Asus K61IC - P8700 - 4Gb Ram - KDE SC 4.6.5 - Kernel 3.0.1 - Nvidia GT_220M 1Gb - Linux registered user #496729 - www.nickworlds.it - Samsung Galaxy S3 Android 4.0.3
Inviato da bigceca il Dom, 06/07/2008 - 10:56.
Re: lo cercavo da un po' d tempo....
ecco il test....Dottore è grave????
kiedo scusa se l'immagine è enorme.....
ciao
Big Ceca
|_|0|_|
|_|_|0|
|0|0|0|
Inviato da bat86 il Dom, 06/07/2008 - 11:53.
Re: lo cercavo da un po' d tempo....
un minuto e venti....
Inviato da Moreno il Dom, 06/07/2008 - 11:58.
Re: lo cercavo da un po' d tempo....
Ciao
Dunque va premesso che non disponi di una macchina particolarmente performante, è un Celeron 450 a 1,7Ghz ed anche il disco non brilla con un transfer rate di 11MB/Sec.
I punti critici nel tuo grafico sono 3
1) Init, dura ben 15,1Sec contro i miei 7,5
2) DKMS, qui la differenza è ancora più evidente 16Sec contro 1
3) Infine c'è network-up con 10,5 Sec contro 2
Direi proprio che c'è qualche cosa che non va con il DKMS, 16 secondi per partire sono una mostruosità, anche sul più catorcio delle mie macchine impiega molto meno tempo.
Cerca di analizzare il boot per vedere cosa succede durante l'avvio di DKMS, alla peggio disabilita dkms al boot e abilitalo solo quando ti serve (per gli aggiornamenti ad esempio).
In Init il problema principale sembrerebbe rc.modules, la PCU ed il disco si addormentano per ben 3 secondi però non so proprio dirti da cosa dipenda.
Per quel che riguarda network-up forse il problema potrebbe essere legato al servizio OpenVPN ma non ci posso giurare.
Ciao Ciao, Moreno
Addio, e grazie per tutto il pesce.
Avatar by moonlight-dream.
Inviato da maurelio79 il Dom, 06/07/2008 - 12:07.
Re: lo cercavo da un po' d tempo....
Anche il mount ntfs-3g mi sembra molto più lento quello di Bigceca rispetto al tuo, Moreno.
Comunque molto interessante questo programmino, sono curioso di provarlo su eeepc, dove il boot è di 70 secondi circa, magari riesco a diminuirlo ulteriormente
Debian Squeeze+Mandriva2009 on Asus X59SLseries
http://www.mylinuxexperience.org/
Inviato da Moreno il Dom, 06/07/2008 - 12:26.
Re: lo cercavo da un po' d tempo....
Ciao
No non mi pare particolarmente differente.
Ho analizzato anche il boot del mio nuovo Dell M4300 ed assomiglia molto a quello di Bigceca.
Nonostante la CPU sia 3 volte più veloce del D3GHz non influisce minimamente sui tempi di boot forse a causa del fatto che invece il disco è molto più lento (si sa che i 2,5" sono sempre molto più lenti dei 3,5" nonostante siano entrambi a 7200Rpm).
Anche io ho un tempo morto durante l'Init dovuto a splash.sh ed rc.modules che non sono presenti nel primo grafico e che portano via quasi 6 secondi.
Anche la scheda di rete impiega una vita ad avviarsi con oltre 8 secondi.
Quello che non ho sono invece i mostruosi tempi morti dovuti a DKMS che anche in questo grafico dura solo 1 secondo.
Decisamente ci deve essere qualche casino li dentro, sicuramente non è la ricompilazione di un modulo dato che comparirebbero i moduli make e gcc (ho provato), sono quegli strani diff che compaiono e quegli awk e tail che durano uno sproposito che mi insospettiscono.
Ciao Ciao, Moreno
Addio, e grazie per tutto il pesce.
Avatar by moonlight-dream.
Inviato da maurelio79 il Dom, 06/07/2008 - 12:34.
Re: lo cercavo da un po' d tempo....
Forse allora non ho capito come leggere il grafico: nel tuo mi sembra di capire che ci vogliono circa 20 secondi per il mount ntfs-3g, in quello di Bigceca mi pare si vada oltre i 40 secondi.
Altra domanda: cos'è quello sleep appena sotto bootchartd.
Ciao
Debian Squeeze+Mandriva2009 on Asus X59SLseries
http://www.mylinuxexperience.org/
Inviato da Moreno il Dom, 06/07/2008 - 13:06.
Re: lo cercavo da un po' d tempo....
Ciao
Devi guardare il grafico nella sua interezza per capire come funziona.
Da un po' di anni e cioè da quando il Grande Couriousos lo ha implementato per Mandriva, e attivo il parrallel init.
Prima tutto era una grande catena, non si poteva passare all'anello successivo se prima non si era finito di eseguire l'anello in corso questo implicava che il tempo di boot era pari alla somma dei tempi di avvio di ogni singolo modulo, una morte insomma.
Ora con il parallel init questo discorso non vale più ma il sistema cerca di avviare contemporaneamente più moduli possibile in modo che teoricamente il tempo di boot sia pari al tempo di avvio del modulo più impegnativo.
Dico teoricamente perché in realtà ciò non è possibile perchè alcuni moduli come hardrake devono attendere che dkms sia partito, in modo da avere tutti i moduli kernel disponibili, altrettanto vale per le periferiche che non possono essere avviate sino a che harddrake non è partito.
Quindi in realtà abbiamo un mix di blocchi concatenati come splash.sh > start_udev > rc.modules che fanno perdere tempo e blocchi paralleli come mpunt.ntfs-3g || rc || prcsys che invece lavorando appunto in parallelo occupano meno tempo.
A questo punto intervengono i 2 grafici superiori di occupazione della CPU e del disco.
Perché tutto vada bene sia la CPU che il Disco devono sgobbare il più possibile durante la fase di boot se invece stanno li a cazzeggiare questo è una brutta cosa.
Nel mio ultimo grafico abbiamo appunto 2 momenti di lungo cazzeggio e precisamente:
a) Durante l'avvio dei moduli rc.modules || modprobe
Questo cazzeggiamento è un gran male perché la macchina è li a far niente mentre ci sono una montagna di moduli che vorrebbero partire ma non possono (vedi ad esempio Apache e ProFTPD)
Un caso particolare è quello di Bigceca con il modulo DKMS, in questo caso sia la CPU che il Disco sgobbano come matti solo che stanno facendo cose che in realtà non dovrebbero fare e quindi comunque fanno perdere un mucchio di tempo al sistema.
Per concludere i principali nemici del boot sono il cazzeggio di CPU e Disco e attività anomala dei moduli.
Ciao Ciao, Moreno
Addio, e grazie per tutto il pesce.
Avatar by moonlight-dream.