Pagina 1 di 1

icecream

Inviato: ven 9 mag 2025, 22:19
da commodore64
buonasera al gruppo.
giocherellando con due host slackware current ho provato a mettere in moto icecream ,per provare l'ebrezza della compilazione distribuita.
il nodo .137 virtuale ed il nodo .223 fisico . ambedue slack current.
ebbene , la cpu del nodo .223 (8 core , 8 gb ram) e' praticamente a zero , e la cpu della VM .137 (1 core, 1/2 gb ram) e' a palla. non ho errori nei log, ma mi piacerebbe riuscire nell'impresa di svolgere in parallelo una compilazione. qualcuno ha voglia/tempo di aiutarmi? magari ci esco un how-to

grazie

Re: icecream

Inviato: sab 10 mag 2025, 0:13
da ponce
se puo' esserti utile su LQ c'e' gia' una guida

https://www.linuxquestions.org/question ... 175647336/

Re: icecream

Inviato: sab 10 mag 2025, 20:12
da commodore64
e' la prima cosa che ho letto.
tuttavia non funziona. il nodo 2 proprio non vuole saperne di compilare.
ho. chi ha altre guida da sottopormi e' ben accetto.

grazie

Re: icecream

Inviato: dom 11 mag 2025, 18:19
da ponce
strano, qui funziona regolarmente...

controlla che i demoni siano attivi sulla macchina: sul nodo principale io ho attivato sia lo scheduler ("chmod +x /etc/rc.d/rc.icecc-scheduler ; /etc/rc.d/rc.icecc-scheduler start", che sta in ascolto sulle porte 8765 e 8766) che il demone ("chmod +x /etc/rc.d/rc.iceccd ; /etc/rc.d/rc.iceccd start", che sta in ascolto sulla porta 10245)

Codice: Seleziona tutto

# pgrep -a ice
969 /usr/sbin/icecc-scheduler -n mia.lan -d -l /var/log/icecream/icecc-scheduler.log
976 /usr/sbin/iceccd -n mia.lan -d -b /var/cache/icecream -l /var/log/icecream/iceccd.log -m 13
sugli altri membri del cluster solo il demone

Codice: Seleziona tutto

# pgrep -a ice
955 /usr/sbin/iceccd -n mia.lan -d -b /var/cache/icecream -l /var/log/icecream/iceccd.log -m 13
poi viene usato semplicemente perche' nella variabile PATH i comandi che usano icecc vengono prima di quelli dei compilatori tradizionali: la variabile PATH viene cosi' aggiornata quando il tuo utente fa login dal file di profilo /etc/profile.d/icecream.sh e solo se il file /etc/rc.d/rc.iceccd e' eseguibile

Codice: Seleziona tutto

# set | grep ^PATH
PATH=/usr/lib64/zulu-openjdk17/bin:/usr/libexec/icecc/bin:/usr/lib64/go1.24.2/go/bin:/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/usr/games:/usr/lib64/libexec/kf5:/usr/lib64/qt5/bin:/usr/lib64/qt6/bin:/root/bin
# ls -la /usr/libexec/icecc/bin
total 8
drwxr-xr-x 2 root root 4096 May  5 09:24 ./
drwxr-xr-x 3 root root 4096 May  5 09:24 ../
lrwxrwxrwx 1 root root   14 May  5 09:24 c++ -> /usr/bin/icecc*
lrwxrwxrwx 1 root root   14 May  5 09:24 cc -> /usr/bin/icecc*
lrwxrwxrwx 1 root root   14 May  5 09:24 clang -> /usr/bin/icecc*
lrwxrwxrwx 1 root root   14 May  5 09:24 clang++ -> /usr/bin/icecc*
lrwxrwxrwx 1 root root   14 May  5 09:24 g++ -> /usr/bin/icecc*
lrwxrwxrwx 1 root root   14 May  5 09:24 gcc -> /usr/bin/icecc*
lrwxrwxrwx 1 root root   14 May  5 09:24 x86_64-slackware-linux-c++ -> /usr/bin/icecc*
lrwxrwxrwx 1 root root   14 May  5 09:24 x86_64-slackware-linux-clang -> /usr/bin/icecc*
lrwxrwxrwx 1 root root   14 May  5 09:24 x86_64-slackware-linux-clang++ -> /usr/bin/icecc*
lrwxrwxrwx 1 root root   14 May  5 09:24 x86_64-slackware-linux-g++ -> /usr/bin/icecc*
lrwxrwxrwx 1 root root   14 May  5 09:24 x86_64-slackware-linux-gcc -> /usr/bin/icecc*
quindi, nel caso non ci sia quel percorso, potresti, per esempio, sloggarti e riloggarti e vedere se la variabile PATH viene aggiornata regolarmente.

occhio che, come spiegato nella guida, le macchine devono essere nel solito dominio: il nome del cluster e' ricavato dal comando "hostname -d", che normalmente restituisce il nome di dominio, quindi se non funziona (o i demoni non partono) controlla anche su entrambe le macchine /etc/HOSTNAME, /etc/hosts e /etc/resolv.conf (magari postali).

Re: icecream

Inviato: lun 12 mag 2025, 21:25
da commodore64
grazie per la risposta, ti posto le configurazioni del nodo1 , virtuale, se mi dai conferma che e' tutto corretto allora poi posto le conf del nodo2 , fisico.
nodo1 = scheduler + iceccd , 192.168.1.238 , virtuale, 1gb ram , 1 core processore.
hostname = slackvm.dominio.lan , nessun firewall ,

root@slackvm:~# pgrep -a ice
742 /usr/sbin/icecc-scheduler -n dominio.lan -d -l /var/log/icecream/icecc-scheduler.log
749 /usr/sbin/iceccd -n dominio.lan -d -b /var/cache/icecream -l /var/log/icecream/iceccd.log -m 2 -vvv

root@slackvm:/etc/profile.d# cat icecream.csh
#!/bin/csh
# Only add the icecream directory to the PATH if we see that iceccd is
# supposed to be running on this machine:

if ( -x /etc/rc.d/rc.iceccd ) then
setenv PATH /usr/libexec/icecc/bin:${PATH}
endif

root@slackvm:/etc/profile.d# cat icecream.sh
#!/bin/sh
# Only add the icecream directory to the PATH if we see that iceccd is
# supposed to be running on this machine:

if [ -x /etc/rc.d/rc.iceccd ]; then
export PATH=/usr/libexec/icecc/bin:$PATH
fi

root@slackvm:/etc/profile.d# icecc --version
ICECC 1.4.0

rete a gigabit, testata con iperf3

root@slackvm:/etc/profile.d# set | grep ^PATH
PATH=/usr/libexec/icecc/bin:/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/usr/games:/usr/lib64/libexec/kf5:/usr/lib64/qt5/bin:/usr/lib64/qt6/bin
root@slackvm:/etc/profile.d#



a me sembra tutto in ordine. se vedi errori allora li correggo.

domanda: puo' essere che la compilazione avvenga effettivamente anche sul nodo2 ma la cpu rimanga a 0% ? non ha senso lo so, ma non mi viene in mente altro

grazie

Re: icecream

Inviato: lun 12 mag 2025, 22:24
da ponce
Devi dare un make con un numero di job maggiore dei processori che hai per vederli eseguiti anche sull'altro nodo...

Ma hai controllato anche l'host fisico? posta anche i dati relativi a quello (non dimenticare le informazioni relative al nome host e dominio)...

Re: icecream

Inviato: mar 13 mag 2025, 20:51
da commodore64
ecco le configurazioni del nodo 2 , fisico.

hostname = slack-c.dominio.lan

root@slack-c:/home/claudio# pgrep -a ice
994 /usr/sbin/iceccd -n dominio.lan -d -b /var/cache/icecream -l /var/log/icecream/iceccd.log --log-file /var/log/icecream/iceccd.log -m 9 -vvv


root@slack-c:/home/claudio# icecc --version
ICECC 1.4.0


root@slack-c:/etc/rc.d# cat rc.iceccd
#!/bin/sh
# Start/stop/restart iceccd.
# $Id: rc.iceccd,v 1.0 2009/04/18
# Author: Heinz Wiesinger <pprkut@liwjatan.at>
# ---------------------------------------------------------------------------

# Get the configuration information from /etc/rc.d/rc.icecream.conf:
. /etc/rc.d/rc.icecream.conf

# Start iceccd:
iceccd_start() {
if [ -x /usr/sbin/iceccd ]; then
echo "Starting distributed compiler daemon: /usr/sbin/iceccd $ICECCD_OPTIONS $ICECCD_JOBS $ICECCD_NICENESS $ICECCD_EXTRA_OPTIONS"
/usr/sbin/iceccd $ICECCD_OPTIONS --log-file /var/log/icecream/iceccd.log $ICECCD_JOBS $ICECCD_NICENESS $ICECCD_EXTRA_OPTIONS
fi
}

# Stop iceccd:
iceccd_stop() {
echo "Stopping iceccd."
killall iceccd
}

# Restart iceccd:
iceccd_restart() {
iceccd_stop
sleep 1
iceccd_start
}

case "$1" in
'start')
iceccd_start
;;
'stop')
iceccd_stop
;;
'restart')
iceccd_restart
;;
*)
echo "usage $0 start|stop|restart"
esac
root@slack-c:/etc/rc.d#



root@slack-c:/etc/profile.d# cat icecream.csh
#!/bin/csh
# Only add the icecream directory to the PATH if we see that iceccd is
# supposed to be running on this machine:

if ( -x /etc/rc.d/rc.iceccd ) then
setenv PATH /usr/libexec/icecc/bin:${PATH}
endif


root@slack-c:/etc/profile.d# cat icecream.sh
#!/bin/sh
# Only add the icecream directory to the PATH if we see that iceccd is
# supposed to be running on this machine:

if [ -x /etc/rc.d/rc.iceccd ]; then
export PATH=/usr/libexec/icecc/bin:$PATH
fi
root@slack-c:/etc/profile.d#



proprio non ho idee. ovviamente sul nodo 1 ho lanciato una compilazione con make -j 12 , ma il nodo2 proprio non vuole saperne.

boh.

grazie per le risposte

Re: icecream

Inviato: mar 13 mag 2025, 20:55
da ponce
ma slack-c.dominio.lan a che ip corrisponde?
potresti per favore postarmi, come ti avevo chiesto prima, i file /etc/hosts e i file /etc/HOSTNAME delle due macchine?
come sono collegate le due macchine (cavo o che altro)?

hai messo per caso opzioni aggiuntive dentro /etc/rc.d/rc.icecream.conf? perche', ad esempio, nel pgrep vedo come parametro un -vvv che io non ho nel mio processo...
prova a usare i file di default.

e poi: hai mica un firewall attivo (iptables o nftables) sulle macchine in questione? puoi controllare se le porte sono aperte con nmap da una macchina all'altra

Codice: Seleziona tutto

nmap -p 10245 ${IP}
(deve rispondere che e' "open")