Ah,
fairyvilje biricchino
Grazie delle risposte ragazzi, preciso un po' meglio il contesto. In pratica è un software che ho scritto io in gran parte, fa calcoli per risolvere le equazioni di Maxwell in certe situazioni, ed è parallelizzato in una certa misura. Potrei usare OpenMP, anche se di solito il problema viene dall'occupazione di memoria che richiede macchine con 64 GiB di RAM almeno, se non di più (quindi non hardware obsoleto).
In pratica, adesso abbiamo tre macchine con caratteristiche leggermente diverse che sono usate come server.
Se voglio, io posso collegarmi alla macchina 1 e lanciare un calcolo, poi un mio collega si lancia alla macchina 2 ed un terzo alla macchina 3. Adesso come adesso le macchine sono viste ed utilizzate separatamente, io vorrei aggiungere un sistema che permetta agli utenti di vedere le tre macchine come una sola entità ed effettuare la ripartizione dei vari calcoli a seconda delle risorse disponibili.
Per esempio, io vorrei poter fare in modo che se un collega ha lanciato dei calcoli sulla macchina 1 e 3, una mia richiesta venga automaticamente assegnata alla macchina 2 perché è libera.
Se supponiamo che la macchina 1 abbia più memoria o sia più veloce delle macchine 2 e 3, potrei fare dei calcoli piccoli che possono girare in maniera indifferente sulle macchine 1, 2 e 3 o calcoli più complessi che devono girare sulla macchina 1. Se però ho una collega che la sta già usando, vorrei che la mia richiesta finisca in coda e venga eseguita nonappena il suo calcolo finisce.
Poi, in un secondo tempo, per certe problematiche possiamo passare ad utilizzare OpenMP, oppure anche una parallellizzazione più grezza (abbiamo già fatto qualcosa in merito e funziona bene).
Se poi, poniamo, in un progetto ci arrivano 5k€ da spendere in informatica, posso pensare di comperare un nodo nuovo e di aggiungerlo al sistema (diventerebbe la macchina 4), magari mandando in pensione dopo un po' di tempo la macchina 2 che inizia a diventare vecchiotta rispetto al resto.
Per me sarebbe anche più semplice da gestire l'aggiornamento del programma in questione perché attualmente abbiamo 3 macchine ed ognuna (per ragioni diverse e varie) fa girare una versione diversa
In passato, ho usato un cluster, ma l'avevamo acquistato in un sol blocco (1 master e 10 nodi identici), già perfettamente configurato ed è invecchiato piano piano fino a che non è stato smantellato perché pesantemente obsoleto. Io cercherei più flessibilità, perché investimenti da 50-100 k€ non ne possiamo fare in questo momento e non possiamo permetterci l'acquisto di un cluster in un sol blocco. D'altro canto, i responsabili del nostro servizio informatico non sono formati alla configurazione di un cluster e se questa strada è percorribile dovrei dare io delle informazioni chiare ed abbastanza dettagliate su come procedere.
Mi piacerebbe anche fosse possibile definire quote di calcolo, per evitare situazioni spiacevoli da gestire dove qualcuno monopolizza tutto il sistema intasandolo di richieste.
Tutto ciò che mi interessa si può fare con un cluster Beowulf? E' difficile da configurare (sono tutte macchine Linux CentOS)?
Potremmo tenere le macchine separate ed andare avanti come si fa adesso, ma mi pare una soluzione inefficiente e scomoda e dato che le risorse scarseggiano razionalizzarle permetterebbe a tutti gli interessati di approfittarne pienamente.