Ciao,
sto partecipando ad un progetto di ricerca genetica e sto realizzando
con altri colleghi un’applicazione web in Rails che tra le varie cose
consente di organizzare e gestire le analisi “intensive” (dal punto di
vista computazionale) che vengono poi eseguite su diverse macchine
remote.
La gestione della distribuzione dei calcoli e’ stata finora implementata
con una soluzione “fatta in casa”: inizialmente infatti tutte le analisi
venivano inviate ad un cluster controllato da un server che implementava
un gestore di code e di risorse (Torque+Maui). Ora abbiamo accesso ad
ulteriori macchine che hanno differenti gestori di code e vorremmo, se
possibile, sfruttare - nei momenti di non utilizzo - i personal computer
in dotazione.
Un’analisi e’ normalmente composta dai seguenti passi:
- recupero di dati dal database o da un file di dati
- preparazione del file di input
- preparazione dello script da eseguire
- accesso e trasferimento dello script, degli eseguibili (se non gia’
presenti sulla macchina remota) e dei file di input (in SSH) - inizio esecuzione (se non è presente un gestore di code l’esecuzione
inizia subito, altrimenti potrebbe venire rimandata) - trasferimento (SSH) dei file di output, cancellazione dei file dalla
macchina remota - parsing dei risultati e salvataggio nel db
Ora vorrei rendere piu’ generale la procedura finora implementata per
eseguire in remoto (su pc o cluster) le varie analisi che tenga conto:
- del tipo diverso di macchine (SO)
- della presenza o meno di gestori di risorse e/o code
- della disponibilita’ della macchina (carica o libera?)
- della gestione delle abilitazioni delle macchine ad eseguire una certa
analisi. Non ci sono solo eseguibili da linea di comando: ci sono
analisi che richiedono Java, altre che richiedono il software statistico
R, ecc. Altre analisi richiedono la presenza di specifiche librerie (ad
esempio gnuplot, imagemagick, ecc.) - della gestione dei permessi dei vari utenti (l’utente U e’ autorizzato
ad eseguire E su S?)
Inoltre sarebbe bello poter monitorare lo stato delle varie macchine che
come si evince sono piuttosto disomogenee, e memorizzare un minimo di
storico.
Prima di reinventare la ruota, esiste gia’ un plugin o una gemma che fa
qualcosa di simile a quanto vorrei realizzare?
Grazie mille, come al solito, per i vostri suggerimenti,
Iwan