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
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.