# [Risolto]Non funziona DISTCC

## digu

Ciao a tutti...

Ho configurato le mie macchine (un laptop e un desktop) affiche' possano utilizzare il distcc per ridurre i tempi di compilazione...

ho seguito la wiki :

http://www.gentoo.org/doc/it/distcc.xml

ma non riesco a capire se effettivamente c'e' una ripartizione del carico di lavoro.. ho lanciato sia un emerge --update world e poi emerge tuxracer per vedere se notavo qualcosa...

lanciando il comando:

```
distccmon-text 2
```

(al posto di 2 ho messo anche altri valori) non mi visualizza nulla mentre la compilazione e' in esecuzione...

Secondo voi ho configurato male i distcc?

come posso verificare se tutto e' corretto?

Grazie in anticipo

----------

## Luca89

la variabile DISTCC_DIR l'hai settata a /var/tmp/portage/.distcc come spiegato nella guida gentoo?

----------

## digu

ops... veramente no...

se non setto tale variabile d'ambiente potrei aver problemi anche in fase di compilazione o riguarda solo il distccmon-text?

----------

## Luca89

 *digu wrote:*   

> ops... veramente no...
> 
> se non setto tale variabile d'ambiente potrei aver problemi anche in fase di compilazione o riguarda solo il distccmon-text?

 

credo la seconda, tu però usala solo per quel comando:

```
DISTCC_DIR=/var/tmp/portage/.distcc distccmon-text 2
```

----------

## Danilo

La devi settare in /etc/make.conf per attivare il distcc.

La devi settare nell'amiente (.bashrc o a mano) per il distmon-text.

Io comunque verifico se funge attraverso il monitor della eth0: se distcc funge con c++ te ne accorgi eccome

A proposito non ricordo come si chiama il monitor grafico del distcc

 ----  EDIT -----

arrivato in ritardo

----------

## Luca89

 *Danilo wrote:*   

> La devi settare in /etc/make.conf per attivare il distcc.

 

Non quella variabile, bisogna settare la feature di portage semmai.

 *Quote:*   

> A proposito non ricordo come si chiama il monitor grafico del distcc

 

ci sono distccmon-gtk e distccmon-gnome, vengono compilati aggiungendo le rispettive use flag (gtk e gnome).

----------

## Danilo

 *Luca89 wrote:*   

>  *Danilo wrote:*   La devi settare in /etc/make.conf per attivare il distcc. 
> 
> Non quella variabile, bisogna settare la feature di portage semmai.
> 
> 

 

Ok per la features ma non mi andava se non presente in /etc/make.conf anche la variabile.

PS: grazie per i monitor grafici  :Smile: 

----------

## Scen

Dall'output dell'emerge di distcc:

 *Quote:*   

> 
> 
> To use the distccmon programs with Gentoo you should use this command:
> 
>  *       To use the distccmon programs with Gentoo you should use this command:
> ...

 

Comunque tieni presente che molti ebuild disabilitato la compilazione con distcc, quindi la compilazione distribuita non viene sfruttata e non noterai nessuna ripartizione del carico di lavoro.

Comunque per tenere sotto controllo la compilazione con distcc usa questo comando:

```

watch -n X 'DISTCC_DIR=/var/tmp/portage/.distcc distccmon-text'

```

dove X è ogni quanti secondi vuoi aggiornare la visualizzazione (ti consiglio 1 o 2, per avere una visualizzazione ottimale)

----------

## Luca89

 *Scen wrote:*   

> Comunque per tenere sotto controllo la compilazione con distcc usa questo comando:
> 
> ```
> 
> watch -n X 'DISTCC_DIR=/var/tmp/portage/.distcc distccmon-textDISTCC_DIR=/var/tmp/portage/.distcc distccmon-text'
> ...

 

e perchè scusa? si ottiene lo stesso effetto semplicemente con:

```
DISTCC_DIR=/var/tmp/portage/.distcc distccmon-text X
```

 *Quote:*   

> Ok per la features ma non mi andava se non presente in /etc/make.conf anche la variabile. 

 

Boh, strano, perchè la home dell'utente che compila (portage) è /var/tmp/portage e quindi di conseguenza .distcc si va a piazzare là

----------

## Scen

 *Luca89 wrote:*   

> 
> 
> e perchè scusa? si ottiene lo stesso effetto semplicemente con:
> 
> ```
> ...

 

Ho editato il comando, per sbaglio l'ho incollato 2 volte di seguito  :Embarassed: 

No, con il comando che dici tu avrai un output del tipo

```

rohan ~ # DISTCC_DIR=/var/tmp/portage/.distcc distccmon-text 5

  7171  Compile     conftest.c                                    localhost[0]

 10244  Compile     fbpict.tmp.rohan.10228.i                      localhost[0]

[....]

```

(con le voci che si accodano)

mentre con il mio comando avrai un output del tipo

```

every 5,0s: DISTCC_DIR=/var/tmp/portage/.distcc distccmon-text                                        Wed May 24 23:41:25 2006

 24293  Compile                                                   localhost[0]

```

con la visualizzazione che si aggiorna ogni tot secondi, e vedrai solo i processi di compilazione attivi in quel momento (similmente al distccmon grafico)

----------

## digu

La cosa non mi funziona ancora anzi compilando il pacchetto graphviz mi da errore:

```
distcc[30814] ERROR: compile Dynagraph.cpp on 192.168.x.99 failed

make[3]: *** [Dynagraph.lo] Error 1

make[3]: *** Waiting for unfinished jobs....

```

in make.conf ho:

```
FEATURES="distcc"

DISTCC_DIR="/var/tmp/portage/.distcc"

```

in /etc/conf.d/distccd:

```
DISTCCD_OPTS="${DISTCCD_OPTS} --allow 192.168.x.99 --allow 153.90.x.x"
```

dove solo 192.168.x.99 al momento e' visibile dal mio laptop mentre l'altra macchina e' presente quando mi sposto in un altra rete...

con questi indirizzi dico che tali macchine possono usare la mia per compilare?

eseguendo :

```
distcc-config --set-hosts "192.168.x.99 localhost" 
```

gli indico che voglio compilare su ...x.99 e su localhost? se x.99 non e' disponibile usa solo localhost?

il comando:

```
export PATH=/usr/lib/distcc/bin:$PATH"
```

va eseguito su tutte le macchine coinvolte o solo sul client?

non e' che facendo questo, se provo da utente normale a compilare un mio codice c,c++ va a prendermi il distcc? se lo fa ci possono essere dei problemi? o sono obbligato ad usare la flag -J1?

----------

## Ic3M4n

mi auguro che quelle x siano dei numeri   :Laughing: 

----------

## digu

 *Ic3M4n wrote:*   

> mi auguro che quelle x siano dei numeri  

 

ma   :Rolling Eyes:  ... direi proprio di si...   :Very Happy: 

----------

## digu

e' necessaria l'installazione di ccache per un corretto funzionamento di distcc?

deve essere configurato in maniera particolare?

----------

## Danilo

ccache e distcc sono due cose (ed installazioni) differenti.

Possono lavorare ANCHE insieme ma in /etc/make.conf deve avere precedenza ccache

```
ppp $ grep FEATURES /etc/make.conf

FEATURES="ccache distcc"

```

----------

## digu

 *digu wrote:*   

> La cosa non mi funziona ancora anzi compilando il pacchetto graphviz mi da errore:
> 
> ```
> distcc[30814] ERROR: compile Dynagraph.cpp on 192.168.x.99 failed
> 
> ...

 

qualcuno sa dirmi se quello che ho supposto e' giusto o sbagliato?

----------

## Ic3M4n

io ho semplicemente:

```
DISTCCD_OPTS=""

DISTCCD_EXEC="/usr/bin/distccd"

DISTCCD_PIDFILE="/var/run/distccd/distccd.pid"

DISTCCD_OPTS="${DISTCCD_OPTS} --port 3632"

DISTCCD_OPTS="${DISTCCD_OPTS} --log-level info"

DISTCCD_OPTS="${DISTCCD_OPTS} --allow 192.168.0.0/24"

DISTCCD_NICE="15"

```

nel mio file di conf di distcc. 

in make.conf devi mettere solo FEATURES="distcc" in aggiunta alle altre cose che già hai, non su una riga nuova. DISTCC_DIR non credo che venga letta dal make.conf. dovrebbe essere impostata nal bashrc o da linea di comando.

 *digu wrote:*   

> gli indico che voglio compilare su ...x.99 e su localhost? se x.99 non e' disponibile usa solo localhost? 

 esatto. puoi specificare anche il numero di jobs che vuoi che vengano esportati sulle altre macchine. tipo 192.168.0.24/3 indica che voglio esportare 3 job, quindi nel caso in cui avessi una rete con 2 pc che compilano uno con /3 ed uno con /2 ho 5 processi paralleli in compilazione. in make.conf imposterò la flag -j6 in modo da avere un job che balla dall'uno all'altro. ultima cosa: ho notato che il pc di destinazione non sfrutta mai appieno la sua potenza di calcolo. ho fatto delle prove aumentando il numero dei processi e sembra che la cosa migliori un po'.

----------

## digu

il comando:

```
 export PATH=/usr/lib/distcc/bin:$PATH" 
```

va eseguito su tutte le macchine coinvolte o solo sul client?

----------

## Ic3M4n

ma... dove l'hai letto scusa? http://www.gentoo.org/doc/it/distcc.xml

----------

## digu

 *Ic3M4n wrote:*   

> ma... dove l'hai letto scusa? http://www.gentoo.org/doc/it/distcc.xml

 

 *Quote:*   

> 
> 
> Configurare distcc per lavorare con automake
> 
> È generalmente più semplice rispetto alla configurazione di Portage. È necessario aggiornare la variabile d'ambiente PATH in modo che includa /usr/lib/distcc/bin prima della locazione di gcc (/usr/bin). Un avvertimento: se usi ccache devi mettere distcc dopo ccache:
> ...

 

----------

## Scen

Quel comando di export serve solamente se si vuole utilizzare distcc per compilare manualmente, quindi senza l'utilizzo di Portage.

Devi farlo solo nella macchina "locale", che distribuirà i lavori di compilazione agli altri nodi.

----------

## digu

Risolto...

Dopo i vostri chiarimenti ho capito meglio cosa descriveva la guida... e anche se mi sembra di aver fatto tutto correttamente gia' la prima volta... so che ora, ripetendo pedissequamente tutti i passi, distcc funziona..

 :Rolling Eyes:  chissa' cosa avevo combinato  :Rolling Eyes: 

----------

## digu

a volte capita che alcuni pacchetti, diano errore in compilazione con distcc... E' una cosa che capita o se si verifica vuol dire che ci sono dei problemi con la configurazione del distcc?

----------

## Ic3M4n

può capitare... calcola che i pacchetti che non si possono compilare con distcc perchè causano errori hanno gli ebuild che filtrano l'opzione -jX e la mettono a -j1. purtroppo a volte capita che altri, in specifiche versioni non compilino per errori diciamo a random. ho fatto un po' di prove quando me ne è capitato uno e semplicemente modificando i parametri di distcc (diminuendo il numero di processi simultanei) sia riuscito a portare a termine la compilazione del pacchetto in questione. purtroppo in casi de genere non c'è molto da fare.

----------

## digu

ad esempio a me e' capitato con kicker, kghostview, khotkey,... forse avevo messo un numero troppo elevato nell'opzione "-j"

----------

## Ic3M4n

tipo? quanti pc compilano contemporaneamente? calcola anche che bisognerebbe cercare di mantenere un'equilibrio tra i pc... se migri 3 processi su un chiodo mentre dall'altra parte ne migri uno su un pc veloce potrebbe darsi che ci siano problemi.

----------

## digu

 *Ic3M4n wrote:*   

> tipo? quanti pc compilano contemporaneamente? calcola anche che bisognerebbe cercare di mantenere un'equilibrio tra i pc... se migri 3 processi su un chiodo mentre dall'altra parte ne migri uno su un pc veloce potrebbe darsi che ci siano problemi.

 

Ho un laptop e un desktop...

il desktop e' un P4 3.2GHz HT con 1GB ram... il laptop e' un Centrino 2.26GHz con 2GB di ram su cui faccio girare vmware su cui ho gentoo (la vm di gentoo ha  768MB di ram dedicati).

il desktop essendo HT ha 2 core logici mentre il centrino ne ha 1 solo...

Io compilo sul laptop usando il distcc... ho impostato la use flag MAKEOPTS="-j4" (desktop 2 + laptop 1) +1

Ho fatto un test facendo migrare 1 sola compilazione sul desktop e, ad esempio con amarok, mi da lo stesso errore: una cosa del tipo ..

 *Quote:*   

> ERROR in compiling filexyz on 192.168.1.1

 

e poi mi dice:

 *Quote:*   

> waiting for unfinisced jobs

 

Cmq riprovo e se mai posto l'errore facendo compia e incolla...

----------

## digu

Ho fatto delle prove su 4 macchine: la compilazione su 3 di queste (con CFLAGS identiche) non da' problemi, mentre con 1 da errore (questa ha l'opzione "-Os" mentre le altre "-O2")...

I CFLAGS inizialmente erano diversi (e pensavo fosse questa la causa dell'errore), ma li ho ridefiniti e ora sono identici... ma la compilazione dei alcuni pacchetti da' ancora errore...

Come e' possibile scoprirne la causa?

----------

## Scen

Qualche consiglio:

Segui SCRUPOLOSAMENTE la guida Da http://www.gentoo.org/doc/it/distcc.xml

Controlla di avere le STESSE versioni di gcc su tutte le macchine coinvolte nella compilazione

Se le macchine coinvolte hanno architetture diverse, segui la guida http://www.gentoo.org/doc/it/cross-compiling-distcc.xml

Certi ebuild non vengono compilati correttamente con distcc (magari hai attivato delle USE flag particolari che attivano delle ottimizzazioni che il compilatore di qualche macchina remota non riesce a gestire)

le variabili (tipo CFLAGS) che imposti in /etc/make.conf influenzano solo il sistema locale, non occorre sia uguale per tutte le macchine coinvolte nella compilazione.

Inoltre:

Quali ebuild non si compilano con distcc?

Controlla che le macchine che compilano abbiano lo stesso CHOST, altrimenti devi seguire la guida http://www.gentoo.org/doc/it/cross-compiling-distcc.xml

----------

## 0101

...mah   ...a me e' bastato metter piu' volte nel file /root/.distcc/hosts (o anche direttamente nelle variabili) gli stessi server per "fregare" distcc e farmi migrare piu' di "solo" 2 processi usando dei violentissimi -j23 (ke tralaltro uso anche senza distcc .ndr)

...cmq ci dovrebbe essere anche la "vera" soluzione ke apra piu' "slot" di distcc ke di default permette di migrare solo 2 processi a server ma non ho approfondito inquanto l'altra soluzione funziona senza ultreriori "accertamenti"  :Smile: 

0101

P.S coi gcc "serie 4" potete usare il -jxx ke volete, noterete solo carichi mai visti (tipo -j8 carico massimo 8, -j23 carico massimo 23, ecc...) non sempre costante inquanto a volte (quando si spianava "prima" aggiungerei) compila "solo" 2 cose lo stesso, ma appena puo' ...pam... ...23 processi "nuovi" e carico a 23....

P.S.2 ...non preoccupatevi riguardo al carico makkina, nonostante il 23 di picco il sistema "canta" (nel senso ke si sentono ancora gli mp3) e si muove anche il mouse tranquillamente, direi ke non ci si accorge di nulla...  (tranne ke la compilazione finisce prima:) )

P.S.3  ..un violento "test" con un clusterino di 20 celeron 466 ci ha permesso di vedere ke il carico "massimo" dei processori e' spesso non sfruttato per nulla inquanto per ore tutte le cpu sono rimaste attorno al 144 di carico "medio" (con pikki visti di 188) e ciononostante il mouse si muoveva ancora (male, ma si muoveva...)   ...e io ke pensavo ke 100 fosse il massimo, o anche solo ki pensa ke 1 sia il massimo...    ....mah... ...nessuno sa' veramente quanto sia il massimo  :Smile: 

----------

## digu

 *Scen wrote:*   

> Qualche consiglio:
> 
> Segui SCRUPOLOSAMENTE la guida Da http://www.gentoo.org/doc/it/distcc.xml
> 
> Controlla di avere le STESSE versioni di gcc su tutte le macchine coinvolte nella compilazione
> ...

 

Su una macchina ho il gcc-3.4.5 sull'altra gcc-3.4.6 ... in teoria non dovrebbe funzionare lo stesso?

----------

## digu

ho lanciato:

```
gcc --version
```

 e ho notato che mi diceva gcc-3.3.6 ... ora ho eseguito gcc-config impostando come gcc la versione 3.4.6... in teoria il problema si dovrebbe risolvere...

Ora provo

----------

## Luca89

 *Quote:*   

> Su una macchina ho il gcc-3.4.5 sull'altra gcc-3.4.6 ... in teoria non dovrebbe funzionare lo stesso?

 

Se la differenza riguarda solo il terzo numero non ci sono problemi.

----------

## digu

Sembrerebbe risolto...

Ricapitolando.. il problema era dovuto al fatto che su entrambe le macchine era presente un gcc compatibile (3.4.5 e 3.4.6) solo che su una delle due era rimasto impostato il gcc-3.3.x come gcc di default...

usando 

```
gcc-config -l
```

ho visualizzato una lista dei gcc disponibili e poi ho selezionato un gcc uguale per entrambe le macchine con

```
gcc-conifg gcc<version>
```

Prima di mettere il TAG risolto, faccio ancora delle prove... ma ad esempio gia' il pacchetto

 *Quote:*   

> graphviz

  ora riesco a compilarlo tramite distcc mentre prima dava errore.

Grazie a tutti per il supporto,   :Very Happy:  e per avermi sopportato   :Very Happy: 

----------

## Luc484

Salve a tutti. Sto cercando di impostare distcc per velocizzare le compilazioni sul mio portatile, sfruttando il server (che utilizza anche per la navigazione). Ho seguito passo passo la guida di gentoo, ma mi pare proprio che non cambi nulla. Il monitor di distcc non mi indica alcun tipo di comunicazione con l'altro host. Esiste un modo per capire cosa possa aver configurato male?

Questi sono i make.conf:

```
ACCEPT_KEYWORDS="x86"

CHOST="i686-pc-linux-gnu"

CFLAGS="-O2 -march=athlon-xp -fomit-frame-pointer"

CXXFLAGS="${CFLAGS}"

USE="video_cards_radeon nsplugin asf apache2 sdk ldap opengl dri radeon gtk gnome qt kde dvd alsa cdr win32codecs cups foomaticdb ppds usb avi pic gimp musicbrainz divx v4l xvid"

VIDEO_CARDS="radeon"

PORTDIR="/usr/portage"

GENTOO_MIRRORS="http://gentoo.osuosl.org/"

SYNC="rsync://rsync.namerica.gentoo.org/gentoo-portage"

SANE_BACKENDS="hplip"

CCACHE_SIZE="2G"

CCACHE_DIR="/home/luca/ccache"

FEATURES="ccache distcc"

MAKEOPTS="-j3"
```

e

```
CFLAGS="-O2 -march=pentium4 -pipe"

CHOST="i686-pc-linux-gnu"

CXXFLAGS="${CFLAGS}"

MAKEOPTS="-j3"

GENTOO_MIRRORS="ftp://gentoo.risq.qc.ca/ http://gentoo.osuosl.org"

SYNC="rsync://rsync.gentoo.org/gentoo-portage"

#SYNC="rsync://rsync.namerica.gentoo.org/gentoo-portage"

RSYNC_RETRIES=3

RSYNC_TIMEOUT=180

USE="radeon dri fbsplash pic gtk -gnome kde qt dvd dvdr dvdread alsa cdr win32codecs musicbrainz"

VIDEO_CARDS="radeon"

#ACCEPT_KEYWORDS="~x86"

PORTAGE_TMPDIR=/mnt/ext3/archive/portage

FEATURES="ccache distcc"

CCACHE_DIR="/home/luca/ccache"
```

e questo è il file di configurazione:

```
DISTCCD_OPTS=""

# this is the distccd executable 

DISTCCD_EXEC="/usr/bin/distccd"

# this is where distccd will store its pid file

DISTCCD_PIDFILE="/var/run/distccd/distccd.pid"

# set this option to run distccd with extra parameters

# Default port is 3632.  For most people the default is okay.

DISTCCD_OPTS="${DISTCCD_OPTS} --port 3632"

# Logging

# You can change some logging options here:

# --log-file FILE

# --log-level LEVEL  [critical,error,warning, notice, info, debug]

#

# Leaving --log-file blank will log to syslog

# example: --log-file /dev/null --log-level warning

# example: --log-level critical

DISTCCD_OPTS="${DISTCCD_OPTS} --log-level critical"

# SECURITY NOTICE:

# It is HIGHLY recomended that you use the --listen option

# for increased security. You can specify an IP to permit connections 

# from or a CIDR mask

# --listen accepts only a single IP

# --allow is now mandatory as of distcc-2.18.

# example:  --allow 192.168.0.0/24

# example:  --allow 192.168.0.5 --allow 192.168.0.150

# example:  --listen 192.168.0.2

DISTCCD_OPTS="${DISTCCD_OPTS} --allow 192.168.0.4"

#DISTCCD_OPTS="${DISTCCD_OPTS} --listen 192.168.0.2"

# set this for niceness

# Default is 15

DISTCCD_NICE="15"
```

Il server ha IP 192.168.0.1 mentre l'altro client ha IP 192.168.0.4.

----------

## Ic3M4n

credo che questa discussione possa esserti utile.

https://forums.gentoo.org/viewtopic-t-465138.html

----------

## digu

Ora a me funziona... piu' che dirti quello che mi han consigliato e quello che ho controllato non posso...

1- controlla di aver su entrambe le macchine la stessa versione di gcc (questo era il mio problema alla fine):

```
gcc --version
```

se non hai la stessa versione lancia

```
gcc-config -l
```

per vedere le versioni disponibili e

```
gcc-config gcc<version>
```

per selezionare la versione che ti serve...

2- attiva il demone sulla macchina server:

```
 /etc/init.d/distccd start
```

3- per lanciare il monitor di distcc devi lanciare il comando:

```
watch --interval=1 DISTCC_DIR="/var/tmp/portage/.distcc/" distccmon-text
```

sulla macchina client... 

4- sulla macchina server per vedere se ricevi qualche processo lancia il comando:

```
top
```

vedrai una lista dei processi che stanno usando la cpu: se vedi comparire distcc e cc1plus in cima alla lista dopo aver lanciato una compilazione sul client vuol dire che il server sta ricevendo...in teoria se gia' vedi qualcosa su distccmon-text sai gia' che quei file sono stati inviati in remoto per la compilazione

5- MAKEOPTS="-j3" mi sembra un po' basso, io ho messo sul portatile -j20 e ho lanciato:

```
distcc-config --set-hosts "192.168.x.200/10"
```

 per dire che su quella macchina voglio esportare un max di 10 compilazioni

Spero ti possa essere utile

----------

## Luc484

 *digu wrote:*   

> Ora a me funziona... piu' che dirti quello che mi han consigliato e quello che ho controllato non posso...
> 
> 1- controlla di aver su entrambe le macchine la stessa versione di gcc (questo era il mio problema alla fine):
> 
> ```
> ...

 

Ho appena controllato e la versione è la stessa.

 *Quote:*   

> 2- attiva il demone sulla macchina server:
> 
> ```
>  /etc/init.d/distccd start
> ```
> ...

 

Ok anche qui.

 *Quote:*   

> 3- per lanciare il monitor di distcc devi lanciare il comando:
> 
> ```
> watch --interval=1 DISTCC_DIR="/var/tmp/portage/.distcc/" distccmon-text
> ```
> ...

 

Sia questo che quello grafico mi danno questo errore a ripetizione:

```
distccmon-gnome[9505] (dcc_mkdir) ERROR: mkdir /var/tmp/portage/.distcc//state failed: No such file or directory

distccmon-gnome[9505] (dcc_gnome_update_cb) Warning: poll failed
```

Cosa può essere? Non so se possa essere il motivo per cui non funziona distcc.

 *Quote:*   

> 4- sulla macchina server per vedere se ricevi qualche processo lancia il comando:
> 
> ```
> top
> ```
> ...

 

Si, ho usato anche quello per controllare, ma sul server la CPU è sempre al 4% o 5%, poca roba, per di più amarok è sempre in funzione, quindi è normale. Non compila. Ho controllato anche la rete e non c'è decisamente trasferimento di dati.

 *Quote:*   

> 5- MAKEOPTS="-j3" mi sembra un po' basso, io ho messo sul portatile -j20 e ho lanciato:
> 
> ```
> distcc-config --set-hosts "192.168.x.200/10"
> ```
> ...

 

Leggo sulla guida che se N è il numero i CPU coinvolte un buon valore è 2N + 1 o 2(N + 1), non si capisce bene mi pare. Quindi ora ho impostato a 5. Poi in caso se riesco a farlo funzionare faccio delle prove.

 *Quote:*   

> Spero ti possa essere utile

 

Grazie mille per la risposta. Purtroppo ho anche seguito da zero di nuovo la guida ma non ho trovato errori e distcc ancora non funziona. Non riesco a capire dove stia l'errore, sembra tutto molto semplice, eppure non funziona proprio.

----------

## digu

 *Quote:*   

> Sia questo che quello grafico mi danno questo errore a ripetizione:
> 
> ```
> 
> distccmon-gnome[9505] (dcc_mkdir) ERROR: mkdir /var/tmp/portage/.distcc//state failed: No such file or directory
> ...

 

crea la directory manualmente:

```
mkdir /var/tmp/portage/.distcc
```

In /etc/make.conf prova a modificare:

```
...

FEATURES="distcc"

...
```

 togliendo "ccache" sulla macchina client... 

Non c'e' un motivo valido per cui non ti dovrebbe funzionare con "ccache distcc" e con "distcc" si... ma non si sa mai..

----------

## Luc484

Si, ho risolto proprio rimuovendo ccache. Sinceramente non ho ben capito il perchè, ma ci deve essere qualche cosa in ccache che mi ha ingannato durante le prove. Stavo facendo delle prove con entramve le features attive sempre sullo stesso pacchetto, e non veniva usato nessun host remoto, solo il localhost. Ho provato di tutto ma nulla. Poi ho provato a togliere ccache e subito ha funzionato. Probabilmente succede che essendo tutto in cache non distribuisce il carico, e quindi nonostante funzionasse non si avvaleva mai di distcc. Ora ho provato con altri pacchetti non in cache e con entrambe le features attive sembra ok.

Ho notato però delle cose: sto facendo le prove sul server, che ha prestazioni nettamente superiori dell'altro singolo host che rientra nella distribuzione della compilazione. In queste condizioni, fino ad ora non ho trovato alcun pacchetto che non abbia subito ritardi. Cioè, ci impiega sempre comunque di più distribuendo il carico di quando faceva tutto da solo. Suppongo che sia per via del fatto che le prestazioni dell'altro host sono troppo basse, e quindi succede che il server deve mettersi in attesa dei risultati dell'altro. Il risultato è che ci impiega più di prima. Forse con qualche configurazione si potrebbe migliorare, ma non so se sia conveniente. E' normale? Devo ancora fare prove all'inverso, ma in quel caso sicuramente ci saranno miglioramenti nell'utilizzare anche il solo server. Grazie mille per l'aiuto.

----------

## digu

credo che bisogna giocare con il parametro "-jN" dove N e' il numero di processori.. con alcuni pacchetti sono riuscito a esportare anche 10 file da compilare in remoto... con altri la stessa configurazione mi fa aumentare, mi sembra, le latenze (compaiono numerosi blocked che attendono che finisca la compilazione di un file prima di sbloccarsi). L'unica e' fare dei test... se hai 2 host uniprocessore, fai -j3 (1+1+1), se hai un processore HT ricordati che hai 2 core logici quindi un processore "equivale a 2": -j4 (cioe' 1 + 2 + 1 )... in teoria potresti provare anche valori -j5 o maggiori...

----------

## Luc484

Si, in effetti noto che è proprio quello il parametro su cui agire. Sto cercando di fare qualche test di compilazione, e noto che il problema sembra essere proprio quello che dicevo nel messaggio precedente. La CPU più veloce si blocca in attesa dei dati provenienti dall'altra. Abbassando il valorei di N si riesce a ridurre il tempo di attesa mi pare. Esiste qualche software che possa monitorare l'utilizzo della CPU mantenendone in memoria l'evoluzione? Mi servirebbe per vedere in funzione del valore di N come varia l'andamente della CPU più veloce. Qualcuno sa se ne esiste uno?

----------

