[distcc] Te weinig jobs op slave en ongewenste jobs op maste

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • cyberstalker
  • Registratie: September 2005
  • Niet online

cyberstalker

Eersteklas beunhaas

Topicstarter
Mijn vraag

Ik probeer distcc op te zetten zodat alle compilaties van onze laptops worden geoffload naar een snellere machine. Nu worden er echter slechts enkele jobs naar de slave gestuurd en blijven de meeste jobs gewoon op de laptop zelf uitgevoerd. De master kan wel bij de slave - sommige jobs worden dus wel op de slave uitgevoerd.

Relevante software en hardware die ik gebruik

Zowel master als slave draaien op een up-to-date debian stretch-installatie. distcc is het pakket dat standaard in de repos zit (3.1.6.2+b1). Als compiler is clang 6.0 geinstalleerd en geconfigureerd als default (via update-alternatives).

Wat ik al gevonden of geprobeerd heb

- expliciet aantal jobs voor localhost in .distcc/hosts op 0 zetten (werkt niet, geeft een error)
- expliciet aantal jobs voor localhost in .distcc/hosts op 1 zetten (genegeerd, nog steeds 4 jobs localhost)
- DISTCC_FALLBACK op 0 gezet - er komen geen errors van de slave

Als ik een compile start zie ik in het begin wel een aantal jobs op slave draaien, voorbeeld uit distccmon-text:

code:
1
2
3
4
5
6
 11466  Compile     iterator.c                                 192.168.1.16[0]
 11184  Compile     easylogging++.cc                           192.168.1.16[2]
 11179  Compile                                                   localhost[0]
 11454  Compile                                                   localhost[1]
 11248  Compile                                                   localhost[2]
 11180  Compile                                                   localhost[3]


Na bijvoorbeeld een minuut blijven er enkel maar entries van localhost over. Ik heb ook logging aangezet, en daar zie ik ook dat bepaalde jobs op localhost worden uitgevoerd. Sterker nog, de allereerste regel begint met
code:
1
distcc[18115] exec on localhost: /usr/bin/c++ ...


Er zijn dus sowieso geen errors op dit punt die distcc laten besluiten het toch lokaal te proberen.

~/.distcc/hosts op master:

code:
1
192.168.1.16/64


/etc/default/discc op slave:

code:
1
2
3
4
5
6
STARTDISTCC="true"
ALLOWEDNETS="192.168.1.0/24"
LISTENER="192.168.1.16"
NICE="10"
JOBS="64"
ZEROCONF="false"


Ik heb geen flauw idee wat ik nog meer zou kunnen proberen. Hoe krijg ik distcc zover dat het genoeg jobs naar de slave stuurt en localhost met rust laat?

Ik ontken het bestaan van IE.

Alle reacties


Acties:
  • 0 Henk 'm!

  • igmar
  • Registratie: April 2000
  • Laatst online: 20:15

igmar

ISO20022

De reden waarom dit meestal gebeurd is dat distcc heeft bepaald dat de betreffende taak niet op een andere host neergezet kan worden, en het daarom lokaal uitvoert.

Zet de logging van distcc aan, en daar zou als het goed is de reden in moeten staan.

  • cyberstalker
  • Registratie: September 2005
  • Niet online

cyberstalker

Eersteklas beunhaas

Topicstarter
Helaas @igmar, ik zie in de logfiles ook niet een reden staan waarom het gebeurt. Zoals in de TS ook al aangegeven is de allereerste regel in de logfile al "exec on localhost". Ik heb een stuk van de logfile op pastebin gezet (het lijkt me teveel om direct in het topic te zetten). Als voorbeeld compile ik hier de monero master branch.

https://pastebin.com/guGKxXrp

Ik merk ook niet een specifiek patroon in welke files wel en niet remote uitgevoerd kunnen worden. Er worden zowel .c als .cpp bestanden remote uitgevoerd - maar het meeste gebeurt toch lokaal.

Ik ontken het bestaan van IE.


Acties:
  • 0 Henk 'm!

  • justahuman
  • Registratie: Maart 2011
  • Laatst online: 23:32
Alles waarvoor de preproccesor nodig is word locaal uitgevoerd.
Draai je met of zonder de pump mode, en hoeveel threads geef je mee aan make om te compilen?

En wat is de output van --show-hosts ?

Wat je nog kan proberen is met de waardes van --localslots en --localslots_cpp spelen icm met pump mode aanzetten.