Pagina 1 di 1

Ottimizzare i tempi di compilazione di un programma

Inviato: dom 19 ott 2008, 17:52
da conraid
Ieri in IRC accennavo a delle prove fatte per stabilire il numero di jobs ottimale nel mio sistema nella compilazione del kernel

Ecco i risultati
http://www.dabliutri.net/2008/10/19/ott ... programma/

Re: Ottimizzare i tempi di compilazione di un programma

Inviato: dom 19 ott 2008, 18:40
da Mario Vanoni
conraid ha scritto:Ieri in IRC accennavo a delle prove fatte per stabilire il numero di jobs ottimale nel mio sistema nella compilazione del kernel

Ecco i risultati
http://www.dabliutri.net/2008/10/19/ott ... programma/
Interessante, ma altri parametri sono importanti:

- la L2 cache del/dei processore/i
- la memoria totale disponibile
- il Makefile, kernel OK esecuzione parallela prevista

Ho compilato oggi il 2.6.27.2, statico, su 3 macchine:
make -j 3 bzImage, sono Intel Core 2 Dual 1866MHz,
una ha L2 di 2MB e 3GB RAM, le altre due 4MB e 4GB.

I tempi variano di qualche secondo +/- contro make -j 2,
tempi (con time di bash) su 6 minuti e 5...10 secondi,
contano di piu` i processi in sottofondo (crontab).

Rimango alla regola make -j NUMERO_PROCESSORI.

Re: Ottimizzare i tempi di compilazione di un programma

Inviato: dom 19 ott 2008, 19:22
da Vito
Da quello che vedo anche secondo me è meglio restare al make -j Numero_processori ...ho provato a fare lo stesso sulle mie 2 macchine :una con un Intel Core 2 Duo T9300 e 4GB di Ram , l'altra con un Athlon XP 3000+ e 1GB di Ram.

Ottimizzare i tempi di compilazione di un programma

Inviato: dom 19 ott 2008, 23:44
da birg81
Si ma come si stabilisce il numero migliore?!

Re: Ottimizzare i tempi di compilazione di un programma

Inviato: mar 21 ott 2008, 15:02
da jurrehart
Ciao tutti,

E molto difficile stabilire il numero migliore perche ci sono troppi fattori in gioco.
come hanno gia detto prima nel forum
nr di CPU/core
dimensione della cache
RAM

Ma puoi anche aggiungere:
Velocita disco
dipendenze dal codice durante la compilazione

quello che intendo dire se per la compilazione di un programma hai bisogno di moduli A,B,C e D ma D dipende da C che a suo tempo dipende da B che dipende da A anche se hai un -j 4 devi comunque aspettare che hai A pornto prima di poter finire B e cosi via.

Re: Ottimizzare i tempi di compilazione di un programma

Inviato: mar 21 ott 2008, 15:18
da conraid
jurrehart ha scritto: quello che intendo dire se per la compilazione di un programma hai bisogno di moduli A,B,C e D ma D dipende da C che a suo tempo dipende da B che dipende da A anche se hai un -j 4 devi comunque aspettare che hai A pornto prima di poter finire B e cosi via.
Come ho scritto nel blog, a volte hai anche errori, perché magari una parte viene compilata prima e si aspetta che ce ne sia un'altra già pronta.
Ma devo dire che usando -j2 solo una volta mi è capitata una situazione simile, ma può succedere.

La cosa da fare sarebbe fare tutti uno stesso test, magari con le stesso .config sugli stessi kernel e postare i risultati per ogni tipologia di macchina... ma alla fine ognuno fa prima a farselo da solo :)

Re: Ottimizzare i tempi di compilazione di un programma

Inviato: gio 23 ott 2008, 21:07
da Mario Vanoni
Ho fatto dei test seri,
kernel 2.6.26.[56] statici e 2.6.27.[123] statici,
tre macchine Core 2 Dual, 3/4GB RAM, 1866MHz,
una HD IDE, le altre due HD SATA,
totale quindi 15 compilazioni, con e senza X.
Tempi +/- 3 secondi, riproducibili.

Con X attivo:
time make -j 2 bzImage 6m45
time make -j 3 bzImage 6m45

Senza X, unico schermo con sh:
time make -j 2 bzImage 6m12
time make -j 3 bzImage 6m12

Quindi incidono molto i processi in sottofondo,
_NON_ make -j NUMERO_PROCESSORI,
la diifferanza: circa 8 percento.