Domanda

Ci sono buoni sistemi di make indipendente dal linguaggio distribuito per Linux che sono sicuro e gratuito?

Informazioni di base:

Ho eseguito esperimenti scientifici (quelli da computer science), che a volte hanno grandi alberi di dipendenza, di tanto in tanto l'ordine di migliaia o decine di migliaia di nodi dell'albero. Questo albero dipendenza è sopra i file di dati, file eseguibili di trattamento dei dati e file di risultati.

Ho sperimentato varie tecniche nel corso degli anni, tra cui:

  1. rotolamento mio inseguitore dipendenza utilizzando un database ed esecuzione di uno script su ogni macchina worker. Questo può ottenere un po 'ingombrante, soprattutto quando si cerca di lavorare con lingue non di scripting.
  2. Mettendo tutti i comandi di elaborazione a singolo makefile, con pseudo-obiettivi che possono essere manualmente "costruita" su differenti macchine worker. Questo non richiede attrezzi speciali, ma può essere un dolore per rompere manualmente il lavoro in modo uniforme dimensioni pezzi pseudo-bersaglio e correttamente invocando "fare" su ogni scatola dei lavoratori.
  3. distmake : distribuire automaticamente l'esecuzione dei comandi da un unico Makefile ...

Sono fondamentalmente alla ricerca di qualcosa di simile distmake, ma più sicura. Per quanto posso dire, distmake lascia essenzialmente una backdoor spalancata in ogni nodo dei lavoratori.

Sarebbe anche bello se fosse una sostituzione più robusto di distmake. Se si rompe fuori della chiamata distmake principale, può arrestare i server backdoor, ma non uccidere correttamente i processi in esecuzione sui nodi dei lavoratori.


Chiarimenti:

Io sono l'elaborazione dei dati con il makefile, non compilazione e collegamento con gcc. Da quello che ho letto nella documentazione, distcc è uno strumento specializzato per la distribuzione di gcc. Sarò in esecuzione le mie eseguibili su file molto grandi di dati ospitati su un filesystem condiviso, non GCC su file sorgente, in modo da distcc non è utile.

I nodi dei lavoratori sono macchine esternamente visibile, quindi voglio tutti i demoni lavoratore di farsi almeno sicuro come SSH. Come meglio posso dire senza leggere la fonte, distmake demoni lavoratori aprono una porta e accetterà i comandi da chi attribuisce ad esso. Essi eseguire i comandi come utente che ha avviato il demone.

È stato utile?

Soluzione

Ci sono anche distcc , che sostiene di essere in grado di operare su SSH (anche se meno che distmake è in qualche modo molto strano, si dovrebbe essere in grado di limitare l'accesso a localhost e costruire tunnel SSH per eseguire la compilazione), e .

Aggiornamento: Perché l'obiettivo non è una compilazione distribuita, ma un calcolo distribuito che succede solo a utilizzare make come bootstrap, è più sensato di utilizzare uno strumento che è stato progettato per la distribuzione calcolo come BOINC . I commenti che seguono indicano condor come la piattaforma scelta.

Altri suggerimenti

Le dipendenze sono difficili da gestire, e non so di qualsiasi sistema perfetto che fa quello che si vuole senza una notevole quantità di lavoro.

La cosa più vicina che ho usato è la seguente configurazione: - una coda di Condor per gestire le macchine in cluster - il Condor Dagman meta-scheduler di presentare lavori che sono interdipendenti. Dagman è l'acronimo di Aciclica grafo diretto Manager, in cui un grafo orientato aciclico viene utilizzato per rappresentare le dipendenze tra i lavori.

Abbiamo fatto questo per un iterativa protocollo scientifico nel nostro laboratorio con grande successo e ha funzionato grande, anche se è stata un'esperienza di apprendimento per un postdoc di grande talento per ottenere l'attuazione di corsa iniziale. Si richiede di impostare ed eseguire un cluster Condor, che non è banale, ma suppongo si hanno o Condor o qualcosa di simile per gestire tutte le macchine. Potrebbe essere che Sun GridEngine ha qualcosa di analogo che io non so.

Anche se probabilmente sarà complicato per integrare in modo trasparente con 'make', GNU parallelamente sembra fornire una scelta conveniente per distribuire i comandi tra i server.

Se siete diligenti con dipendenze (cioè fanno -jxx funziona bene a livello locale), distcc è probabilmente quello che volete. È molto facile da utilizzare e lavora felicemente con parecchi nascondigli CC popolari. Anche in questo caso, le dipendenze corretto è la chiave, soprattutto quando si utilizza una cache per contribuire ad accelerare il processo di ricostruzione.

Se la vostra utilizzando GCC per generare le dipendenze al di là della portata delle dipendenze dei moduli nel makefile per sé, probabilmente vi piace distcc. Ho iniziato ad usare in una piccola fattoria costruzione con grande successo .. ma il mio setup / albero non è neanche lontanamente elaborati come quello che si descrive.

Si può fare questo con AT & T nmake combinato con il programma coshell. Non so come valutare la sicurezza, ma il gruppo di Glenn Fowler è piena di grandi ingegneri che hanno fatto un sacco di roba veramente buona. Mi fido di loro con il mio codice sorgente :-) Il loro miglior strumento noto potrebbe essere graphviz .

Makeflow sembra anche una soluzione eccellente: http: //www.cse. nd.edu/~ccl/software/makeflow/

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top