Come condividere CPU o RAM?


21

Nel networking condividiamo File (Driver del disco) o Database. Ma come possiamo condividere CPU o RAM sulla rete.


3
Il problema è che, rispetto alle latenze su scala dei nanosecondi tra CPU e RAM, una rete è incredibilmente lenta!
Phoshi,

@Phoshi: anche con le latenze aggiunte dalla rete, tale impostazione potrebbe essere più veloce dello swap basato su disco.
Piskvor,

@Piskvor: Ma come chiunque può dirti, lo swap su disco è un enorme successo di prestazioni!
Phoshi,

@Phoshi: sono d'accordo, anzi lo è, e la soluzione ottimale è "aggiungi più memoria fisica". Tutto quello che sto dicendo è che il paging su un dispositivo veloce (ad esempio un ramdisk) su una rete veloce potrebbe essere ancora più veloce del paging su un disco fisico. In altre parole: questo potrebbe essere un dispositivo di scambio più veloce di uno scambio su un supporto fisico, anche se sarà di molti ordini di grandezza più lento della RAM fisica.
Piskvor,

1
@Piskvor: assolutamente plausibile, e anche se sbagli è certamente sullo stesso ordine di grandezza, quindi non sarebbe significativamente peggiore nel caso peggiore. Suppongo che probabilmente sia più economico avere più spazio di archiviazione fisico locale!
Phoshi,

Risposte:


21

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.


per favore dimmi alcuni riferimenti.
MJH,

1
@MJH vedi la mia risposta modificata.
ubiquibacon,

grazie. ma questo tutorial funziona su Linux e io uso Windows.In questo modo, l'applicazione deve scrivere in MPI e il suo vincolo.
MJH,

3
@MJH se vuoi lavorare con Windows allora hai solo bisogno di una libreria MPI che funzioni con Windows, ma il concetto è lo stesso. MPICH funziona con Windows, oppure potresti costruire il tuo cluster Windows con Windows HPC (ha una conduttività MPI integrata) se hai delle monete da far cadere. Anche se questo ti consente di utilizzare Windows, dovrai comunque utilizzare programmi scritti per MPI, al momento non c'è modo di aggirare questo.
ubiquibacon,

2
Grazie per questa risposta - il tutorial di riferimento sembra aver cambiato l'indirizzo in uiowa.edu/mihpclab/hpcSystsemTechnicalReport/… ... Saluti!
sdaau,

9

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.


è lì software per la condivisione mia applicazione nella mia rete, senza bisogno di rete estera (ad es voglio rendering di un file, che il mio PC rendono questo in sette giorni, ma io condividere questo alla mia rete e rendendo la riduzione a 1 giorno?!.?
MJH,

@MJH Sfortunatamente, non ho sentito parlare di alcun programma che possa farlo per il rendering.
Andreja Ko

1
condividere i ramdisk è un po 'inutile, vero? Ottieni la volatilità di ram, con la lentezza dello storage collegato in rete
Journeyman Geek

1
@AndrejaKo Per la transcodifica diretta dei video non ne ho mai sentito parlare (ma alcuni, mentre cercavo su google, ho trovato 1 o 2 progetti in alpha / beta che lo fanno). Tuttavia, per il rendering 3D, ho non visto un programma di rendering 3D a partire dagli anni '90 che non il supporto di rete il rendering .
Scott Chamberlain,

5

esiste un software per condividere la mia applicazione nella mia rete? senza bisogno di una rete straniera! MJH, 12 marzo 11 alle 1:19

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.


5

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.


0

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 "

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.