Repository 32bit  Forum
Repository 64bit  Wiki

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.

Ottimizzare i tempi di compilazione di un programma

Messaggioda conraid » dom ott 19, 2008 16:52

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/
Avatar utente
conraid
Staff
Staff
 
Messaggi: 12022
Iscritto il: mer lug 13, 2005 23:00
Località: Livorno
Nome Cognome: Corrado Franco
Slackware: current

Re: Ottimizzare i tempi di compilazione di un programma

Messaggioda Mario Vanoni » dom ott 19, 2008 17:40

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.
Mario Vanoni
Iper Master
Iper Master
 
Messaggi: 3174
Iscritto il: lun set 03, 2007 20:20
Località: Cuasso al Monte (VA)
Nome Cognome: Mario Vanoni
Slackware: 12.2
Kernel: 3.0.4 statico
Desktop: fluxbox/seamonkey

Re: Ottimizzare i tempi di compilazione di un programma

Messaggioda Vito » dom ott 19, 2008 18:22

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]
Avatar utente
Vito
Staff
Staff
 
Messaggi: 4146
Iscritto il: mar dic 05, 2006 17:28
Località: Augsburg (DE)
Nome Cognome: Vito
Distribuzione: Linux Mint 17

Ottimizzare i tempi di compilazione di un programma

Messaggioda birg81 » dom ott 19, 2008 22:44

Si ma come si stabilisce il numero migliore?!
birg81
Linux 2.6
Linux 2.6
 
Messaggi: 760
Iscritto il: lun gen 16, 2006 10:57
Località: Castellammare di Stabia (NA)
Nome Cognome: Biagio
Slackware: 12.2
Kernel: 3.4.7
Desktop: LxDE
Distribuzione: ArchLinux

Re: Ottimizzare i tempi di compilazione di un programma

Messaggioda jurrehart » mar ott 21, 2008 14:02

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.
jurrehart
Linux 1.0
Linux 1.0
 
Messaggi: 3
Iscritto il: gio set 25, 2008 9: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

Messaggioda conraid » mar ott 21, 2008 14:18

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 :)
Avatar utente
conraid
Staff
Staff
 
Messaggi: 12022
Iscritto il: mer lug 13, 2005 23:00
Località: Livorno
Nome Cognome: Corrado Franco
Slackware: current

Re: Ottimizzare i tempi di compilazione di un programma

Messaggioda Mario Vanoni » gio ott 23, 2008 20:07

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.
Mario Vanoni
Iper Master
Iper Master
 
Messaggi: 3174
Iscritto il: lun set 03, 2007 20:20
Località: Cuasso al Monte (VA)
Nome Cognome: Mario Vanoni
Slackware: 12.2
Kernel: 3.0.4 statico
Desktop: fluxbox/seamonkey


Torna a Programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite