Tecnologia e non solo

giugno 9, 2008

Icecream

Filed under: Debian,Gentoo,Guida pericolosa,Hardy,Sid — telperion @ 7:12 pm

Ho recentemente scoperto icecream (icecc) da questo blog e lo ho subito utilizzato con soddisfazione per effettuare “compilazioni distribuite”, oltre che per compilare kd4svn anche su Debian Sid e Gentoo per compilare qualsiasi cosa.

immagine icecc icemon

Per Gnu/linux uso un pc Athlon xp 3200+ con 512 MB, ho poi un altro pc con Athlon 64 3800+ e 512 MB.
Esiste anche distcc per la compilazione distribuita ma dovendo usare la stessa distribuzione nelle macchine “da calcolo” non lo ho mai utilizzato, visto che non intendo installare nulla sul secondo pc che ha Windows.

Con icecream, è stato sufficiente lanciare una live di Xubutu, installare (da live) icecc e…
finito!
Il computer “aggiunto” per la compilazione è praticamente pronto.

Sul “master” ho installato icecc e icemon configurati lanciati il servizio e lo scheduler,
e via di compilazione distribuita di kde4 kernel emerge genkernel e quant’altro.
Il demone lo lancio quando mi serve e la configurazione avviene tramite export nella shell,
solo per genkernel di gentoo bisogna editare un path in /usr/bin/genkernel per usare o no icecc,
il massimo del “non invasivo”, posso compilare con o senza “distribuzione” in un attimo.

Notare che con qualunque distribuizione sul “master”,
l’altro pc funziona sempre con la live di Xubuntu.
Su gentoo ho perfino una versione inferiore di icecream (0.7.4) e nessun problema.

Free Image Hosting at www.ImageShack.us Free Image Hosting at www.ImageShack.us

Il guadagno è circa il 20-30% a occhio appena ho tempo faccio qualche test.
Ovviamente la compilazione parallela avviene solo in compilazione, altre fasi come configure link ed install non sono coinvolte, inoltre il trasferimento dei file da un pc all’altro via rete costa un pò di tempo.

Comuque sono soddisfatto dalla relativa semplicità dell’operazione.
Maggiori info su icecream qui.

Annunci

18 commenti

  1. 🙂 grazie, adesso il mio articolo ha maggiore visibilità…

    Commento di halphaz — giugno 9, 2008 @ 10:04 pm

  2. @halphaz:
    grazie a te che mi hai fatto scoprire questo nuovo “giocattolo”.
    😀

    Commento di telperion — giugno 9, 2008 @ 10:51 pm

  3. avevo fatto le prove con DISTCC e il guadagno è mostruoso, (cè un articolo sul mio blogghetto) questo sà da provare
    prova comparativa ? 😀

    Commento di LuNa — giugno 9, 2008 @ 11:05 pm

  4. @LuNa
    dai miei test +25% con le macchine dette (lenta la master veloce lo slave)
    non sò se al contrario il boost è maggiore.
    Il vantaggio (per me, che non voglio installare nulla sull’altro pc)
    è che vai con una live sullo slave e si crea lui automaticamente un ambiente chroot con le tue librerie originali (~6MB zippati) permettendo di usare qualsiasi pc con distro eterogenee basta siano della stessa architettura tua.
    Con distcc se non ho capito male, invece i pc devono essere omogenei (stesse librerie e compilatore installati) quindi sei obbligato ad installare un pc ad hoc per ogni distro che vuoi usare.

    Ho letto il tuo articolo, sicuro che non usavi anche ccache perchè il guadagno mi sembrava veramente tanto. (Tra l’altro è giusto il grafico 160 vs 90 o il testo 83 vs 38 ?)

    Il mio 25-30% è in linea con le aspettative di overhead, con la macchina veloce che compila circa il doppio di thread della lenta, quindi la fase di compilazione viene circa dimezzata ma pesa per il 50% di tutto procedimento rimanendo config link ed altro esclusi.

    Commento di telperion — giugno 9, 2008 @ 11:38 pm

  5. @telperion: l’immagine è casuale ed è l’unica che mi andava da mettere nel post cercando “distcc” in immagini Google. 😀
    Comunque il guadagno è quello che leggi infondo al post, mostruoso. (testato su un kernel più o meno come hai fatto tu)
    No, niente ccache.

    Il guadagno credo sia logico essere veramente tanto perchè parliamo di stesso sistema operativo, con equivalenti librerie e toolchain che lavorano in parallelo, quindi tolto l’overhead, hai tutta la potenza dei proci che usi per compilare. Con Icecream data la sua estrema portabilità questo non avviene, è piuttosto un piccolo cluster che fa calcolo distribuito. Per questo ho detto facciamo un confronto. Prima o poi mi tocca 😀

    Commento di LuNa — giugno 10, 2008 @ 3:32 pm

  6. @Luna

    makefusion9 normale ubuntu
    real 11m32.484s
    user 8m26.490s
    sys 1m15.244s

    makefusion9 -j4 ubuntu 25% in meno
    real 8m33.800s
    user 5m36.888s
    sys 1m16.657s

    gimp 2.5.1 svn
    real 18m19.460s
    user 12m25.533s
    sys 2m21.239s

    gimp 2.5.1 svn -j4
    real 14m39.322s
    user 7m54.967s
    sys 2m29.775s

    In linea con la valutazione “ad occhio”.

    Peccato non avere un quad core sottomano.
    😀

    Commento di telperion — giugno 10, 2008 @ 4:32 pm

  7. mettici una live di zenwalk e vedi un po’ 😀
    ubuntu è molto lento a compilare da quello che ho visto.

    Commento di LuNa — giugno 11, 2008 @ 11:19 pm

  8. buh
    ho voluto provarlo ma non riesco a farlo funzionare in alcun modo. ho avviato i demoni su tutte le macchine ma nel monitor non si vede nulla, ho avviato lo scheduler e naturalmente compilando compila da solo.
    sono troppo vecchio per queste cose 🙂

    Commento di LuNa — giugno 12, 2008 @ 9:25 pm

  9. il firewall del router mannagg 😀 risolto eheh

    Commento di LuNa — giugno 12, 2008 @ 9:35 pm

  10. ragazzi, sul mio blog ho appena messo una guida per usare ccache… altro che icecc… provatela!!!

    http://halphaz.wordpress.com/2008/06/16/kde4-ccache/

    Commento di halphaz — giugno 16, 2008 @ 4:46 pm

  11. @halphaz
    puoi usare entrambi, ma ccache usa un macello di disco.

    Commento di telperion — giugno 16, 2008 @ 5:18 pm

  12. io ho smesso di usare icecc, ora uso ccache.
    Compilo 23 moduli di kde4 da trunk e la dimensione della cartella ~/.ccache è 300 MB per 50.000 files… a me sta bene come utilizzo del disco.
    Se poi consideriuamo che i sorgenti occupano 2,5 GB per 250.000 files… direi che 300 MB li posso anche sacrificare per risparmiare l’80% di tempo, cosa difficile da ottenere con icecc (servono troppi computer, che io non ho…)
    E IMHO icecc+ccache non conviene perchè la cache di ccache non è condivisa… (nei commenti del mio sito ci sono commenti a proposito…)

    Commento di halphaz — giugno 18, 2008 @ 11:42 am

  13. Beh se compili sempre la stessa cosa (kde4) certo che ccache è efficente.
    Se compili cose diverse ogni volta l’efficienza non è cosi eccezionale.

    Commento di telperion — giugno 18, 2008 @ 1:47 pm

  14. Ripensandoci il problema del fatto che la ccache non è condivisa non sussiste, perchè la compilazione viene eseguita solo per i files che devono essere compilati e poi il risultato viene memorizzato da ccache in locale… quindi la cosa si potrebbe fare e a me personalmente converrebbe parecchio… sto cercando di farlo… ma non capisco come… magari fra un poco riesco a capire come fare…

    Commento di halphaz — novembre 18, 2008 @ 3:33 pm

  15. è molto semplice basta mettere nel binpath delkdesvn-buildrc
    prima il path di ccache poi di icecc
    es

    binpath /usr/lib/ccache:/usr/lib/icecc/bin:/opt/qt4/bin:/opt/kde4/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

    Commento di telperion — novembre 18, 2008 @ 3:55 pm

  16. Dici? Ma così trova ccache e usa quello (cioè non sfrutta icecc); nel sito di icecc descrivono una certa procedura che in pratica va a modificare le chiamate di ccache al compilare nel caso il file da compilare non sia nella cache (così le chiamate vengono reindirizzate a icecc, che divide il lavoro tra più computer). Il problema è che la guida fa riferimento a OpenSuse e non riesco ad contestualizzarla su Ubuntu.

    Comunque un commento di “LuNa” ad un mio post faceva riferimento ad un file di configurazione relativo ad ccache; ecco cosa diceva:

    LuNa:”

    Ho notato questo, sembra interessante

    # Should we add the ccache compiler symlinks to PATH
    # yes|no
    # Please note that if added to $PATH the user can still disable
    # it with CCACHE_DISABLE
    # If not enabled by default, the user can add /usr/lib/ccache/bin/
    # to their $PATH
    USE_CCACHE_DEFAULT=”no”

    # Enable icecream integration
    USE_CCACHE_WITH_ICECREAM=”no”

    è il contenuto del file /etc/sysconfig/ccache. con particolare riferimento all’ultima riga, come la vedi ccache+icecream ?”

    A quanto pare la collaborazione tra ccache e icecc era prevista, e quando ho letto il commento ero scettico relativamente al fatto che bastasse modificare un file di configurazione per far funzionare il tutto. Tuttavia adesso, riguardando il commento, ho rivalutato il discorso e penso che potrebbe bastare: non ho ancora provato, ma appena torno da dove devo andare provo…

    Tu che ne pensi?

    Commento di halphaz — novembre 21, 2008 @ 10:35 am

  17. @halphaz
    io lo uso come da commento 15 senza fare nulla, e con kdesvn-build e da icemon vedo distibuire le compilazione e ccache -s vedo che i missing e i cache avanzano.
    Poi alcune cose non passano ne da icecc ne da ccache, oppure solo da ccache tipo le qt4 o i compilatori gcc che si “autocompilano”.

    Commento di telperion — novembre 21, 2008 @ 11:21 am

  18. Sì, hai ragione, funziona.

    Commento di halphaz — novembre 22, 2008 @ 8:24 pm


RSS feed for comments on this post.

%d blogger hanno fatto clic su Mi Piace per questo: