Ma quanto dura questo Boot ??

Sab, 05/07/2008 - 22:06

Ma quanto dura questo Boot ??

Inviato da Moreno 53 commenti

MGSM0063 05/07/2008 Ma quanto dura questo Boot ??.

1) Introduzione

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.

2) Installazione dei pacchetti
2.1) Aprire un terminale

Innanzi tutto occorre aprire un terminale con Menu -> Strumenti -> konsole

2.2) Diventare root

$ su
Password: LaPasswordDiRoot
#

2.3) Installazione dei pacchetti

# urpmi bootchart-logger bootchart

Oltre ai due pacchetti indicati verranno installati altri pacchetti di supporto come psacct e jakarta-commons-cli.

I pacchetti bootchart si trovano nella sezione Contrib di Mandriva, prima di installarli verificare che le sorgenti di Mandriva siano correttamente configurate.
3) Acquisizione delle informazioni

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

init=/sbin/bootchartd

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.

4) Generazione del grafico

Ora occorre generare il grafico a partire dai dati acquisiti durante il boot

4.1) Aprire un terminale

Innanzi tutto occorre aprire un terminale con Menu -> Strumenti -> konsole

4.2) generare il grafico

$ bootchart --format png

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.

Ho notato che alcune volte il comando bootchart --format png dato da utente non funziona perché intervengono gli script di sicurezza di mandriva che rendono il file /var/log/bootchart.tgz leggibile solo da root, in questi casi quindi il comando va dato come root.

Ciao Ciao, Moreno


In:



Commenti

Ritratto di bigceca
#1

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|



Ritratto di Moreno
#2

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.



Ritratto di Nick78
#3

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!! Laughing 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



Ritratto di bigceca
#4

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|



Ritratto di bat86
#5

Inviato da bat86 il Dom, 06/07/2008 - 11:53.

Re: lo cercavo da un po' d tempo....

un minuto e venti.... Sad



Ritratto di Moreno
#6

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.



Ritratto di maurelio79
#7

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/



Ritratto di Moreno
#8

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.



Ritratto di maurelio79
#9

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/



Ritratto di Moreno
#10

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

Cool Durante l'avvio di S50network-up (gli usleep e sleep sono generati dal primo modulo che non sa cosa fare)

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.