Ottimizzare i tempi di compilazione di un programma

Forum dedicato alla programmazione.

Moderatore: Staff

Regole del forum
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Rispondi
Avatar utente
conraid
Staff
Staff
Messaggi: 13631
Iscritto il: gio 14 lug 2005, 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Desktop: kde
Località: Livorno
Contatta:

Ottimizzare i tempi di compilazione di un programma

Messaggio 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/

Mario Vanoni
Iper Master
Iper Master
Messaggi: 3174
Iscritto il: lun 3 set 2007, 21:20
Nome Cognome: Mario Vanoni
Slackware: 12.2
Kernel: 3.0.4 statico
Desktop: fluxbox/seamonkey
Località: Cuasso al Monte (VA)

Re: Ottimizzare i tempi di compilazione di un programma

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

Avatar utente
Vito
Staff
Staff
Messaggi: 4182
Iscritto il: mar 5 dic 2006, 17:28
Nome Cognome: Vito
Desktop: MacOS
Località: Monaco (DE)
Contatta:

Re: Ottimizzare i tempi di compilazione di un programma

Messaggio 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.
"Stat rosa pristina nomina, nomina nuda tenemus." [ Umberto Eco - Il nome della rosa]

"Faber est suae quisque fortunae ." [ Appio Claudio Cieco]

birg81
Linux 3.x
Linux 3.x
Messaggi: 760
Iscritto il: lun 16 gen 2006, 10:57
Nome Cognome: Biagio
Slackware: 12.2
Kernel: 3.4.7
Desktop: LxDE
Distribuzione: ArchLinux
Località: Castellammare di Stabia (NA)
Contatta:

Ottimizzare i tempi di compilazione di un programma

Messaggio da birg81 »

Si ma come si stabilisce il numero migliore?!

jurrehart
Linux 0.x
Linux 0.x
Messaggi: 3
Iscritto il: gio 25 set 2008, 10:43
Nome Cognome: Jurgen Hart
Slackware: 12.1
Kernel: 2.6.25-jur #9
Desktop: KDE

Re: Ottimizzare i tempi di compilazione di un programma

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

Avatar utente
conraid
Staff
Staff
Messaggi: 13631
Iscritto il: gio 14 lug 2005, 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Desktop: kde
Località: Livorno
Contatta:

Re: Ottimizzare i tempi di compilazione di un programma

Messaggio 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 :)

Mario Vanoni
Iper Master
Iper Master
Messaggi: 3174
Iscritto il: lun 3 set 2007, 21:20
Nome Cognome: Mario Vanoni
Slackware: 12.2
Kernel: 3.0.4 statico
Desktop: fluxbox/seamonkey
Località: Cuasso al Monte (VA)

Re: Ottimizzare i tempi di compilazione di un programma

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

Rispondi