On Monday, 18 March 2002, Dan Nae wrote: > > La make clean dep all, compilez distribuit pe 5 masini :-) Speedup e > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ > Ce folosesti pentru compilarea asta distribuita?
Niste programete scris de mine. Fiecare masina care e dispusa sa faca compilari ruleaza un server si asculta cereri. una din cereri poate sa fie exec <nu-stiu-ce> in directorul cu proiectul. E absolut insecure, dar o folosesc doar in reteaua locala. Probabil ca se poate substitui cu ssh cumva, dar ma intereseaza exit-status-ul comenzilor la compilare asa ca am inventat un protocol simplu care sa il trimita. Pe unul din calculatoare ruleaza un dispatcher, care primeste si el cereri. Cand primeste mai multe cereri decat servere disponibile, se blocheaza pana e unul liber. Pe urma, in makefile, in loc de $(CC) $(CFLAGS) .... am un programete care trimite cererea (exec $CC $CFLAGS ...) catre dispatcher, care o trimite la unul din serverele libere. In fine, "make -j 5" pe masina cu dispatcher-ul. Se pare ca make-urile mai noi stiu sa paralelizeze mai mult decat target-uri din makefile-ul top-level. Ma rog, directorul cu proiectul trebuie sa fie NFS-mounted de undeva si ceasurile de pe sisteme trebuie bine sincronizate. In afara de asta, trebuie sa mai fii atent cand faci dependency-urile, ca "gcc -MM" iti pune path-urile complete catre fisiere. Evident, in functie de locul unde montezi directorul prin NFS, astea pot fi diferite. Daca te intereseaza, iti pot trimite o arhiva cu programele. Deocamdata sunt in stadiul de hack, dar sunt perfectibile :) Matei --- Send e-mail to '[EMAIL PROTECTED]' with 'unsubscribe rlug' to unsubscribe from this list.
