Nel networking condividiamo File (Driver del disco) o Database. Ma come possiamo condividere CPU o RAM sulla rete.
Nel networking condividiamo File (Driver del disco) o Database. Ma come possiamo condividere CPU o RAM sulla rete.
Risposte:
Per fare ciò, i programmi che accedono alle risorse CPU / RAM devono essere specificamente progettati per accedere a tali risorse. Un sistema impostato in questo modo è chiamato cluster e il modo tipico in cui le risorse sono condivise è con un protocollo chiamato MPI (interfaccia di passaggio messaggi). È un download gratuito e l'utilizzo con Linux può produrre un cluster potente (possibilmente anche un super computer) a costi minimi, ma di nuovo è inutile a meno che non si disponga di programmi appositamente progettati per trarre vantaggio da MPI. Ci sono alcune buone esercitazioni sul cluster là fuori, se sei ancora interessato dovresti dare un'occhiata.
Modificare:
Vorrei raccomandare il tutorial qui se si desidera impostare un cluster. Ho creato un cluster seguendo questo tutorial circa un anno fa e ha funzionato abbastanza bene. Il tutorial è un po 'vecchio, quindi alcuni file potrebbero non essere esattamente dove si trova il tutorial (a volte i file vengono spostati in distribuzioni Linux diverse / più recenti) ma se si ha la minima familiarità con Linux non dovrebbe essere un problema. Il tutorial utilizza una versione precedente di MPI, ma ho usato la versione più recente e non ho riscontrato problemi che non sono stati risolti facilmente. A seconda di ciò che stai facendo, potrebbe effettivamente esserci un programma là fuori che può trarre vantaggio da MPI. So che ci sono alcuni programmi di codifica video e crunching dei numeri che sfruttano l'MPI che può essere scaricato da fonti universali.
Puoi condividere la RAM usando i dischi RAM, ma è come condividere i normali dischi, tranne che si trovano nella RAM di un altro computer. Non esiste un modo diretto per un computer di utilizzare la RAM di un altro computer come se fosse la propria RAM, ma ci sono alcuni modi per utilizzare la RAM di altri computer. Maggiori informazioni su questo nel prossimo paragrafo.
Per quanto riguarda la condivisione della CPU, è possibile ma non esiste uno standard unico per questo. Non puoi semplicemente condividerlo e lasciare che un altro computer prenda le risorse necessarie. Invece è necessario disporre di applicazioni appositamente progettate che possono funzionare su più computer contemporaneamente. Questo è spesso chiamato calcolo distribuito ed è utilizzato da alcuni progetti di ricerca come SETI @ Home, Einstein @ Home, Climateprediction.net e molti altri.
Fondamentalmente i programmi funzionano in modo tale che esiste un server centrale che distribuisce il lavoro che deve essere fatto. I computer sulla rete scaricano le unità di lavoro dal computer centrale e le elaborano. Successivamente quel computer centrale riceve i risultati dai client e li unisce in un unico risultato coerente. In questo modo i computer "condividono" le risorse di CPU e RAM sulla rete. L'aspetto negativo di questo è che i programmi devono essere realizzati in modo tale da funzionare in rete e al momento il calcolo distribuito non è abbastanza popolare tra gli usi comuni per un computer, quindi solo un numero limitato di programmi specializzati lo supporta. D'altra parte, è comunemente usato a scopi scientifici in quanto è più economico ottenere un gran numero di personal computer o playstation 3 rispetto a ottenere l'accesso a un computer mainframe.
Sei caduto in un problema XY , non dovresti chiedere "come posso condividere i computer CPU e RAM Accros" ma "come posso usare più computer per rendere più veloci i miei rendering usando ZZZZZ?"
Dipende fortemente dal software che stai utilizzando e da ciò che stai visualizzando (stai transcodificando video o stai realizzando un modello / video 3D?).
Per scegliere alcuni esempi, il software 3D gratuito Blender supporta il rendering distribuito in cui è possibile avere molti computer che lavorano tutti insieme per generare un output. Se stai eseguendo il rendering di video, alcuni googling rapidi hanno trovato il progetto open source MediaEncodingCluster che ti consente di eseguire il rendering di file video e audio utilizzando più computer.
L'unico sistema operativo che conosco che consente di condividere CPU / RAM è plan9. Lì puoi esportare / montare quasi tutto. Questo non significa che le prestazioni siano buone, ovviamente.
Sarebbe una bella caratteristica condividere cpu / ram per attività sulla rete. Attualmente siamo ancora legati a un po 'di vecchie nozioni per mantenere i programmi nella casella in cui accadono le cose, ma possiamo consentire a più cpus sulla stessa macchina di accedere allo stesso sniplet di codice. Abbiamo un metodo (almeno) che fa qualcosa del genere. java sulle pagine web funziona utilizzando sia server che client, ma è ancora bloccato in un modo server-client per fare le cose (dove il server contiene la maggior parte dei dati). Ciò di cui abbiamo bisogno per essere in grado di assegnare compiti alle macchine più o meno allo stesso modo in cui abbiamo cpus multipli (tranne la macchina che fa il lavoro deve avere un programma snip e data snip assegnato. Ciò comporta un carico più pesante sulla rete se i compiti stessi non sono di natura semplice e potrebbero comportare la formazione di nuovi colli di bottiglia. Mi piace l'idea di dove "