Alcune domande interessanti Penso che potresti fraintendere leggermente il funzionamento dei "supercomputer" realizzati con Raspberry Pis. Non funzionano come un sistema di condivisione automatica del carico. Sono progettati per qualcosa chiamato programmazione parallela , in cui un'attività complessa è suddivisa in pezzi che possono essere eseguiti contemporaneamente. Il Pi principale nel cluster (nodo principale) è responsabile dell'organizzazione dell'attività complessiva e ogni Pi nel cluster (nodi client) esegue il lavoro assegnato e riporta i risultati al nodo principale. Le biblioteche come OpenMPI sono fondamentali per questo.
Inoltre, i cluster Raspberry Pi che sono stati creati non sono stati creati come dispositivi di elaborazione efficienti. Sono stati costruiti come piattaforme di sviluppo . È molto più economico acquistare 32 Raspberry Pis rispetto a 32 PC desktop. In questo modo puoi sviluppare e testare il tuo software di programmazione parallela molto più economico. L'unica alternativa se non si dispone di Pis o PC è richiedere il tempo della CPU su un super computer reale. A seconda delle dimensioni del computer in questione, farlo può costare denaro o avere tempi di attesa lunghi prima che le risorse siano disponibili. Ecco perché le persone hanno creato i propri cluster personali. Ha senso eseguire la tua applicazione sul vero computer quando saprai che funziona!
Quindi, tienilo a mente e passa alle tue domande specifiche.
In un cluster appropriato, Pis non funziona come un singolo computer virtuale. Hai il controllo libero su ogni Pi sotto forma di un'attività o di un sistema di allocazione delle risorse come il Sun Grid Engine . Le attività vengono assegnate ai nodi in base alle esigenze e, una volta terminate le attività, le risorse di quel nodo vengono liberate per nuove attività.
In un cluster, poiché ogni Pi esegue la propria copia di Linux, ogni Pi manterrà il controllo locale delle sue porte GPIO. Non sono sicuro di come il software lo userebbe davvero in un ambiente di elaborazione parallelo, ma eccoti qui.
Un cluster non rende un Pi più veloce, perché non sono un singolo computer. Ciò che guadagni è semplicemente la capacità di fare di più in una volta. Non sei limitato a multipli di due. Esiste tuttavia un limite superiore pratico reale per i computer cluster in base alle attività eseguite. Immagina se stai eseguendo un calcolo parallelo su molti Pis che richiedono 200 passaggi. Tuttavia, ogni passaggio successivo richiede le informazioni che ogni Pi ha calcolato sul passaggio precedente. Quindi ogni Pi deve ricevere dati da ogni altro Pi ogni iterazione. A seconda del tempo impiegato da ogni iterazione per calcolare, puoi finire per dedicare più tempo all'invio dei dati che al calcolo. Questo è il motivo per cui la maggior parte dei supercomputer utilizza InfiniBandRete. È molto veloce, quindi puoi fare di più calcoli. La soluzione a questo è usare meno Pis ma farli lavorare di più ogni iterazione, ma ciò potrebbe non essere possibile a seconda dell'algoritmo. Da qui il limite superiore pratico. (Su Pis questo sarebbe particolarmente negativo perché Ethernet USB è piuttosto lenta.)
Quindi, su un'applicazione pratica, web hosting distribuito! Puoi approfittare di più Pis qui, non è solo un cluster normale. Di 'che hai 5 Pis. Li chiameremo GatewayPi, WebPi1, WebPi2, WebPi3 e DataPi. GatewayPi si affaccia su Internet, eseguendo Nginix per gestire le richieste Web, ma non esegue alcuna elaborazione. Invece quello che fa è il bilanciamento del carico. Utilizza il proxy e inoltra casualmente la richiesta in arrivo a WebPi1, WebPi2 o WebPi3. Abbiamo appena triplicato la potenza della nostra infrastruttura Web, perché ora possiamo gestire più richieste contemporaneamente. Che dire di DataPi? DataPi ha collegato un disco rigido che memorizza tutti i nostri dati web e sta eseguendo un server NFS. WebPiX monta la condivisione NFS in modo che abbia accesso ai dati per l'elaborazione. In questo modo dobbiamo solo eseguire i backup in una posizione e possiamo risparmiare spazio su disco.
Quello che ho appena descritto è essenzialmente il modello utilizzato da grandi aziende come Google e Facebook, ma ridotto alla dimensione di Raspberry Pi. L'unico problema è, a causa dei costi di Pis, che in questo modo si crea essenzialmente la stessa piattaforma di sviluppo (ma per il servizio Web) di un cluster di Pis per la programmazione parallela. Utilizzando più Pis, a causa della loro capacità computazionale relativamente bassa, presto si perde in termini di prestazioni al consumo energetico mentre si procede verso la gestione di grandi quantità di dati. Ma solo per imparare? Sono perfetti