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
>

_______________________________________________
RLUG mailing list
[email protected]
http://lists.lug.ro/mailman/listinfo/rlug_lists.lug.ro

Raspunde prin e-mail lui