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
