Re: Distributed make

Iulian Dogariu <[email protected]>
Newsgroups gmane.org.user-groups.rlug.general
Message-ID <[email protected]>
distcc ai incercat?
https://wiki.gentoo.org/wiki/Distcc

-- 
 Securely sent with Tutanota. Claim your encrypted mailbox today! 
 https://tutanota.com


Jan 8, 2018, 6:37 PM by [email protected]:

> Salut,
>
>  Lucrez la o aplicatie mareata (+500k linii) care pe o singura mashina se
> compileaza in +30 de minute. Fapt care imi permite sa scriu mesaje pe rlug
> ;-). Dorinta mea ar fi sa reduc timpul de compilare.
>
>  Ce am:
> - o cireada de servere Redhat cu nr variabil de CPUs fiecare, intre 4 si 24
> - acces prin ssh la oricare
>  Directorul de lucru e un Clearcase view (versioning system)  disponibil
> pe toate severele. Pentru cine nu e familiar cu clearcase - e oarecum
> similar cu un NFS mount. Secventa de lucru e:
>  - ssh catre unul din servere
>  - rulat un script de setup pt clearcase
> Dupa asta codul din repository devine vizibil intr-un director predefinit
> de pe serverul remote (the "NFS mount"). Daca dintr-o alta consola efectuez
> ssh + setup catre un alt server voi vedea aceleasi fisiere ca pe primul
> server.
>
>  Ce nu am:
> - root access nicaieri (nici pe statia mea de lucru)
> - posibilitatea de a instala librarii sau programe noi (din motive de
> securitate, stampile, audituri)
>
> As vrea sa emulez un distributed make folosind scripturi/utilitare
> standard. Mai concret, as vrea sa pot rula dintr-o consola un script
> fabulos de genul:
>  "dmake -j <nr jigantic de CPUs> server1 server2 ..."
>
> In imaginatia mea acest dmake ar lansa "make -j <nr>" pe statia de lucru
> locala, insa substituind  "gcc <parametri>" cu un wrapper care:
>  - gaseste la fiecare invocare un server remote cu procesoare libere
>  - lanseaza "something-like-ssh   server_remote  gcc <parametri>"
>  - asteapta finalizarea gcc-ului de pe serverul remote
>
> Pasul #1 de load-balancing cred ca stiu sa il fac. Ce ma incurca este
> lansarea gcc-ului pe un server remote. Lansarea trebuie sa se intample dupa
> setup-ul de clearcase, care dureaza cateva secunde bune si deci trebuie
> facut doar o singura data pt fiecare server. Asadar, pt fiecare server
> remote am nevoie de:
>  - ssh remote
>  - clearcase_setup (remote)
>  - in a loop (remote):
>  while <read command from (tty, stdin, unix-socket ?)  > ; do
> exec command ; done
>
>  Iar pe statia local, wrapperul de gcc:
>  - send command to chosen remote using (pipe, stdout, unix-socket,
> pidgeon ?)
>  - wait for command completion
>  - display stdout/stderr-ul procesului extern
>  - return exit code of external process
>
> Am tot citit pagini de manual de la diverse utilitare standard
> (ssh,tmux,screen,socat) dar nu gasesc nimic care sa functioneze cum imi
> trebuie mie, sau nu stiu eu sa le folosesc. Dintre cele listate "socat"
> pare cel mai promitator, cu o incantatie de genul:
>
>  socat UNIX-LISTEN:/tmp/mysocket_1 exec:'ssh server_1',pty,setsid,ctty
>
> urmat de
>  echo "clearcase_setup.sh ;   g++ a.cpp" | socat - UNIX:/tmp/mysocket_1
>
> Insa nu stiu cum sa pastrez deschis canalul de comunicatie (cand se inchide
> socat-ul "local" moare si ala remote), deci nu pot trimite decat o singura
> linie de comanda. Eu nu stiu dinainte cate/care comenzi vreau sa trimit.
>
> Are cineva vreo sugestie cum sa purced ? Sau impusc tantarul cu tunul si
> exista deja o solutie evidenta si binecunoscuta a problemei de compilare
> distribuita ?
>
> Multumesc,
> Mihai
> _______________________________________________
> RLUG mailing list
> [email protected]
> http://lists.lug.ro/mailman/listinfo/rlug_lists.lug.ro
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.