distccd in einer Jail

lockdoc

Well-Known Member
Hallo,

Wenn distccd in einer Jail laeuft, dann ist diese ja meistens erstmal leer, sprich keine Ports installiert. Was braucht die Jail, damit der distccd server dort auch ordentlich laeuft?
Also braucht sie sowas wie perl, python, etc?
 

lockdoc

Well-Known Member
Also Perl und Python wurden beispielsweise nicht installiert. Darum frag ich ja mal lieber nach
 

lockdoc

Well-Known Member
Also ich frage auch desshalb, weil wenn ich distccmon-text auf dem client mache, dann bekomme ich immer viele dieser Blocked Eintrage.
Code:
root> distccmon-text 
 51181  Blocked                                                            [0]
 51063  Blocked                                                            [0]
 50984  Blocked                                                            [0]
 51183  Blocked                                                            [0]
 51188  Preprocess  qng.c                                            distcc[2]
 51137  Compile     qaws.c                                           distcc[4]
 51187  Compile     qawc.c                                        localhost[0]
 51178  Compile     qawo.c                                        localhost[1]

# distcc ist der Hostname der Jail mit dem distcc
# client macht portupgrade -a

Und da weiss ich nicht genau was das bedeutet.
 

lockdoc

Well-Known Member
Danke fuer den Link. Dort wird ja darauf hingewiesen mal in das debug.log zu kucken und ich habe tatsaechlich beim compilen im Sekundentakt irgendwelche Fehler

Code:
Jun 21 11:06:13 trinity ls: NSSWITCH(_nsdispatch): nis, group_compat, setgrent, not found, and no fallback provided
Jun 21 11:06:14 trinity dhclient[92972]: ip length 328 disagrees with bytes received 332.
Jun 21 11:06:14 trinity dhclient[92972]: accepting packet with data after udp payload.
Jun 21 11:06:14 trinity ls: NSSWITCH(_nsdispatch): nis, passwd_compat, setpwent, not found, and no fallback provided
Jun 21 11:06:14 trinity ls: NSSWITCH(_nsdispatch): nis, group_compat, setgrent, not found, and no fallback provided
Jun 21 11:06:16 trinity ls: NSSWITCH(_nsdispatch): nis, passwd_compat, setpwent, not found, and no fallback provided
Jun 21 11:06:16 trinity ls: NSSWITCH(_nsdispatch): nis, group_compat, setgrent, not found, and no fallback provided
 

metro

i² = -1
Die NSSWITCH Einträge in debug.log sind wahrscheinlich in allen deinen jails und meckern über NIS, was höchstwahrscheinlich nicht mehr im Jail existiert. Kuck mal unter /var/log/cron, da gibt's die möglicherweise auch.
Die *könnten* verschwinden mit einer Änderung der /etc/nsswitch.conf von $default zu

Code:
group: files
hosts: files dns
networks: files
passwd: files
shells: files
Ob das dann auch das distccd Problem löst, wäre interessant.
hth
 
Zuletzt bearbeitet:

lockdoc

Well-Known Member
Also die Fehlermeldung kam ja vom Client...
Ich habs sie aber trotzdem mal beseitigt


Im server log scheinen sich die Nachrichten auch irgendwie immer doppelt anzuzeigen
Code:
Jun 21 18:02:08 distcc distccd[56798]: (dcc_listen_by_addr) listening on 192.168.0.16:3632
Jun 21 18:02:08 distcc distccd[56798]: (dcc_listen_by_addr) listening on 192.168.0.16:3632
Jun 21 18:02:08 distcc distccd[56798]: (dcc_standalone_server) 8 CPUs online on this server
Jun 21 18:02:08 distcc distccd[56798]: (dcc_standalone_server) 8 CPUs online on this server
Jun 21 18:02:08 distcc distccd[56798]: (dcc_standalone_server) allowing up to 10 active jobs
Jun 21 18:02:08 distcc distccd[56798]: (dcc_standalone_server) allowing up to 10 active jobs
Jun 21 18:02:08 distcc distccd[56799]: (dcc_log_daemon_started) preforking daemon started (3.1 amd                  64-portbld-freebsd9.0, built Feb 22 2012 21:03:52)
Jun 21 18:02:08 distcc distccd[56799]: (dcc_log_daemon_started) preforking daemon started (3.1 amd                  64-portbld-freebsd9.0, built Feb 22 2012 21:03:52)
Jun 21 18:02:28 distcc distccd[56799]: (dcc_daemon_terminate) Terminated: 15
Jun 21 18:02:28 distcc distccd[56799]: (dcc_daemon_terminate) Terminated: 15

Da gibt es wohl auch irgendwie ein Problem
 

lockdoc

Well-Known Member
Nochmal wegen den doppelten Logeintraegen.
Beim starten von distcc sagt dieser mir, dass er 8 CPU's sieht und deswegen 10 Slots erlaubt.
Code:
Jun 22 10:28:06 distcc distccd[9530]: (dcc_setup_daemon_path) daemon's PATH is /sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/sbin:/usr/local/bin:/root/bin
Jun 22 10:28:06 distcc distccd[9530]: (dcc_setup_daemon_path) daemon's PATH is /sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/sbin:/usr/local/bin:/root/bin
Jun 22 10:28:06 distcc distccd[9530]: (dcc_listen_by_addr) listening on 192.168.0.16:3632
Jun 22 10:28:06 distcc distccd[9530]: (dcc_listen_by_addr) listening on 192.168.0.16:3632
Jun 22 10:28:06 distcc distccd[9530]: (dcc_standalone_server)[B] 8 CPUs online on this server[/B]
Jun 22 10:28:06 distcc distccd[9530]: (dcc_standalone_server) [B]8 CPUs online on this server[/B]
Jun 22 10:28:06 distcc distccd[9530]: (dcc_standalone_server) [B]allowing up to 10 active jobs[/B]
Jun 22 10:28:06 distcc distccd[9530]: (dcc_standalone_server) [B]allowing up to 10 active jobs[/B]
Jun 22 10:28:06 distcc distccd[9531]: (dcc_log_daemon_started) preforking daemon started (3.1 amd64-portbld-freebsd9.0, built Feb 22 2012 21:03:52)
Jun 22 10:28:06 distcc distccd[9531]: (dcc_log_daemon_started) preforking daemon started (3.1 amd64-portbld-freebsd9.0, built Feb 22 2012 21:03:52)

Meines erachtens sollte er dann auch nurn 10 Instanzen starten. Ein ps auxww zeigt mir allerdings 11 Instanzen

Code:
C:\>ps auxww|grep distcc
distcc  9531   0.0  0.0  19496   1640  ??  INsJ 10:28AM 0:00.00 /usr/local/sbin/distccd --listen 192.168.0.16 --allow 192.168.0.0/24 --user distcc --log-level info --daemon -P /var/run/distccd.pid
distcc  9532   0.0  0.0  19496   1648  ??  INJ  10:28AM 0:00.00 /usr/local/sbin/distccd --listen 192.168.0.16 --allow 192.168.0.0/24 --user distcc --log-level info --daemon -P /var/run/distccd.pid
distcc  9533   0.0  0.0  19496   1648  ??  INJ  10:28AM 0:00.00 /usr/local/sbin/distccd --listen 192.168.0.16 --allow 192.168.0.0/24 --user distcc --log-level info --daemon -P /var/run/distccd.pid
distcc  9535   0.0  0.0  19496   1648  ??  INJ  10:28AM 0:00.00 /usr/local/sbin/distccd --listen 192.168.0.16 --allow 192.168.0.0/24 --user distcc --log-level info --daemon -P /var/run/distccd.pid
distcc  9536   0.0  0.0  19496   1648  ??  INJ  10:28AM 0:00.00 /usr/local/sbin/distccd --listen 192.168.0.16 --allow 192.168.0.0/24 --user distcc --log-level info --daemon -P /var/run/distccd.pid
distcc  9537   0.0  0.0  19496   1648  ??  INJ  10:28AM 0:00.00 /usr/local/sbin/distccd --listen 192.168.0.16 --allow 192.168.0.0/24 --user distcc --log-level info --daemon -P /var/run/distccd.pid
distcc  9538   0.0  0.0  19496   1648  ??  INJ  10:28AM 0:00.00 /usr/local/sbin/distccd --listen 192.168.0.16 --allow 192.168.0.0/24 --user distcc --log-level info --daemon -P /var/run/distccd.pid
distcc  9539   0.0  0.0  19496   1648  ??  INJ  10:28AM 0:00.00 /usr/local/sbin/distccd --listen 192.168.0.16 --allow 192.168.0.0/24 --user distcc --log-level info --daemon -P /var/run/distccd.pid
distcc  9541   0.0  0.0  19496   1648  ??  INJ  10:28AM 0:00.00 /usr/local/sbin/distccd --listen 192.168.0.16 --allow 192.168.0.0/24 --user distcc --log-level info --daemon -P /var/run/distccd.pid
distcc  9542   0.0  0.0  19496   1648  ??  INJ  10:28AM 0:00.00 /usr/local/sbin/distccd --listen 192.168.0.16 --allow 192.168.0.0/24 --user distcc --log-level info --daemon -P /var/run/distccd.pid
distcc  9543   0.0  0.0  19496   1648  ??  INJ  10:28AM 0:00.00 /usr/local/sbin/distccd --listen 192.168.0.16 --allow 192.168.0.0/24 --user distcc --log-level info --daemon -P /var/run/distccd.pid

Ist hier eventuell die 11te Instanz fuer die doppelten Lot-Eintraege verantwortlich?
 

lockdoc

Well-Known Member
So ich konnte jetzt das Raetsel loesen, warum es so viele Blocks gibt.
Standardmaessig gibt der distcc client jedem distccd server nur 2 oder 4 (ich weiss es nicht mehr genau) Processes und alles darueber wird verworfen,

Wenn also die Anzahl der Jobs auf dem client hoeher sind, dann zeigt distccmon-text an, dass der Rest geblockt wird,

Das ganze kann man manuell einstellen. In meinem Fall mit dem 8 Core Bulldozer auf dem Server (welcher 10 distccd Prozesse zur verfuegung stellt), muss man dem client auch sagen, dass dieser 10 Processes nutzen soll.

Das ganze macht man in den exportieren hosts (auf dem client)
/usr/local/etc/distcc/hosts
Code:
HostOne/10 HostTwo/10 localhost/2
Es gibt noch die Moeglichkeiten lzo ranzuhaengen und den pump mode. Aber ich weiss nicht inwieweit FreeBSD den pump mode unterstuetzt, da es kein pump command gibt. Eventuell hat da Jemand naehere Informationen.


Noch eine weitere Anmerkung:

Wenn man nicht gerade die Kernel/World baut, sondern nur die Ports, dann wird mein distccd server sehr wenig ausgelastet, hier empfiehlt es sich dann einfach 3 distccd jails zu haben, die man dem Client auch mitteilen kann.

LG
 
Oben