Condivisione delle risorse hardware attraverso la rete: in particolare RAM


8

Ho due sistemi. Uno è un laptop e ha 2 GB di RAM mentre l'altro è un desktop con 8 GB di RAM. È possibile condividere queste risorse in modo che entrambi i sistemi abbiano 10 GB di RAM?

Il software che voglio eseguire su entrambi i sistemi è Android Studio ... che attualmente il laptop non sta gestendo abbastanza bene.

Ulteriori informazioni: entrambi i sistemi eseguono Windows 8 e dispongono di processori Intel Core i3 .

grazie ppl, ma ho un'altra domanda .. che ne dite di condividerlo tramite un cavo Ethernet ?? come in uno switch o v-lan, quindi non si utilizza affatto Internet e si ottiene una velocità di trasferimento in discesa ???


2
No, la ram non è trasferibile.
Ctrl-alt-dlt

15
Sicuro che potresti farlo. Ma la RAM condivisa sarebbe solo veloce quanto la velocità della tua rete. In altre parole, questo è possibile (beh, teoricamente comunque), ma non pratico.
Ajedi32,

4
Non è ragionevole chiederti di cambiare sistema operativo, ma sappi che Linux ha una compressione della memoria virtuale, il che significa che puoi usare più RAM di quella che hai fisicamente comprimendone alcuni segmenti con LZO.
Naftuli Kay,

5
Se stavi usando Linux, potresti sistemare qualcosa usando un ramdisk, un dispositivo di blocco di rete e un file di scambio. Non credo che Windows abbia questo tipo di funzionalità.
Segna

4
Stai facendo la domanda sbagliata. La domanda che dovresti porre è: come sfruttare la macchina più potente per eseguire build? E una possibile risposta è il plugin Gradle SSH .
Michael Hampton,

Risposte:


21

Solo alcuni programmi consentono di dividere i processi sulla rete (alcuni programmi di rendering 3D, condividendo efficacemente la RAM) (Vedi la risposta di Julian Knight)

Il problema con Internet sarebbe troppo lento (Vedi la risposta di Spiff)

Penso che la RAM del desktop non sia compatibile con l'hardware, quindi il semplice posizionamento delle strisce RAM nel laptop non funzionerà.

Cosa puoi fare:

Installa un client desktop remoto sul tuo laptop e connettiti al desktop. In questo modo puoi "lavorare sul desktop" attraverso il tunnel.

Quindi il programma pesante (Android Studio) verrà eseguito sul desktop! E il laptop sarebbe disturbato solo dal client desktop remoto.

Questo, utilizza efficacemente l'hardware del PC e quindi funzionerebbe meglio (se il tuo laptop e client desktop remoto sono sufficienti e abbastanza facili da lavorare.

Vorrei aggiungere che questo non "condivide" la RAM, ma utilizza solo la RAM del PC, il che è sufficiente.


1
Penso che ci siano programmi che ti consentono di trascinare una finestra da un sistema operativo a un altro, ma non sono sicuro del nome, se l'elaborazione è ancora eseguita localmente o altro.
Ismael Miguel,

1
Parallels, ma questa è virtualizzazione.
Arthur Kay,

1
@Alvin Un'applicazione desktop remoto non passerebbe attraverso Internet se non configuri specificamente la tua rete per questo. Se ti connetti al desktop usando il suo IP sulla rete, la connessione esisterà solo sulla tua rete.
Logarr,

9

Probabilmente no, poiché sarebbe piuttosto lento rispetto al paging della memoria virtuale su un'unità locale. SATA-3 è di 6 gigabit al secondo e ho un HDD SATA-3 da 4 TB 7200 RPM di due anni con una velocità di lettura / scrittura di 157 MebiByte / sec (~ 1,3 gigabit / sec). Le velocità di trasferimento sostenute su Ethernet gigabit sono al massimo di circa 0,942 gigabit / sec.


4
Si noti che per alcuni carichi di lavoro, la latenza di accesso casuale è più importante della larghezza di banda (e sospetto che il dato relativo alla larghezza di banda del disco fosse per accessi di grandi dimensioni, non per blocchi di 4KiB casuali). Anche con overhead di rete, il trasferimento di 4KiB direttamente da un sistema all'altro sarebbe probabilmente più veloce dell'accesso medio al disco (con ritardi di ricerca, assestamento e rotazione). Prima che gli SSD diventassero popolari, c'erano ricerche sull'uso della RAM di altri sistemi per lo spazio di swap. La risposta di FuaZe sul trasferimento del lavoro al sistema più grande sembra più pratica.
Paul A. Clayton,

3
Bene, ma il tuo disco ha una velocità di accesso casuale MOLTO, MOLTO inferiore rispetto a Ethernet gigabit. Per questo avresti bisogno di stato solido.
Arthur Kay,

@Spiff grazie ppl, ma ho un'altra domanda .. che ne dite di condividerlo tramite un cavo Ethernet ?? come in uno switch o v-lan, quindi non si utilizza affatto Internet e si ottiene una velocità di trasferimento in discesa ???
Alvin,

@ArthurKay: O un'unità di classe professionale 30Krpm utilizzata nei cluster di virtualizzazione di bilanciamento del carico.
user2284570,

@Alvin Questo è esattamente ciò di cui parla questa risposta. "... velocità di trasferimento su Ethernet gigabit ..."
BenjiWiebe,

1

No, non è possibile.

L'unica piccola eccezione è quando si utilizza uno strumento in grado di suddividere l'elaborazione su più macchine come il rendering di grafica 3D. Tuttavia, questo non è proprio quello che stai chiedendo.


Conosci l' inferno ? Dal momento che sta usando x86, l'accesso DMA in rete può essere di grande aiuto.
user2284570,

L'OP ha specificato Windows 8 in modo che non lo aiuti, temo.
Julian Knight,

Questo era solo per dire che, contrariamente a quanto hai detto, è possibile. Per il sistema operativo il sistema appare come un sistema SMP di memoria non condivisa.
user2284570

1

Circa sette anni fa il controller di memoria è stato spostato da un chip separato ( northbridge o hub controller di memoria) alla CPU. Sai perché? Per ridurre la latenza, perché la CPU necessita di un accesso molto, molto veloce alla RAM. Le CPU attuali accedono alla RAM con 68 GB / s : http://ark.intel.com/products/82930/Intel-Core-i7-5960X-Processor-Extreme-Edition-20M-Cache-up-to-3_50-GHz . La moderna Ethernet da 1 Gbit / s offre circa 120 MB al secondo, quindi 560 volte più lenti. Quindi, non è qualcosa che puoi fare su PC normali.

Esistono soluzioni basate su elaborazione di cluster con molti computer collegati a una rete e ciascuno memorizza parte dei dati nella sua RAM. È molto più lento della normale RAM, ma non puoi scegliere se sono necessari 10 TB di dati. Ma tali soluzioni dovrebbero essere supportate dal software. E Android Studio non lo supporta.

Quindi, la risposta è no, sfortunatamente.


1
Per l'utilizzo di cluster resilienti agli errori di virtualizzazione, posso dire che la condivisione di RAM su Ethernet cat5E su unità ancora più lente funziona perfettamente con i sistemi operativi e i programmi moderni.
user2284570,

1

Al momento non è possibile, ma questo è stato effettivamente elencato sulle schede in una forma e scritto su " After Vista " come parte del sistema "ReadyBoost" che consente di utilizzare una chiavetta USB come supporto per la lettura del file di pagina (e altri file) più veloce rispetto all'utilizzo del disco. Non è RAM aggiuntiva in quanto tale, ma se si utilizza molta RAM, è possibile ridurre il tempo impiegato dal computer a eseguire il paging delle cose da e verso il disco.

Sembra che nel tuo scenario trarrai vantaggio da una chiavetta USB da 32 GB dedicata a ReadyBoost .


Ciò non sembra rispondere alla domanda del PO. Mentre potrebbe essere stato il piano originariamente per ReadyBoost di consentire la condivisione della RAM attraverso la rete, non è come sia attualmente implementato.
ChrisInEdmonton,

@ChrisInEdmonton OK, ho modificato la mia risposta per affermare in modo specifico che non è possibile, ma è stato pianificato ad un certo punto piuttosto che dichiarare che era pianificato.
Matthew Steeples,

2
E ReadyBoost è troppo lento per essere utile. I computer rallentano effettivamente quando si utilizza ReadyBOOST. Non c'è molto da dare.
Tonny,

1
@Tonny Pensa che sia uno di quegli scenari "il tuo chilometraggio può variare". Personalmente ho scoperto che ha accelerato i computer più lenti e ha fatto poca differenza con i computer veloci. Non l'ho mai provato a rallentare un computer. Ovviamente non c'è sostituto per una tonnellata di dischi RAM e SSD, ma se non puoi / non vuoi farlo e hai bus USB non affollati che vanno di ricambio, potrebbe essere d' aiuto
Matthew Steeples,

0

Questo non è possibile, almeno non senza un grande sforzo da parte di Google.

Fondamentalmente, Android Studio dovrebbe supportare l'elaborazione distribuita multi-nodo, proprio come il mining di BitCoin e Folding @ Home.

Dopo aver premuto compile sul tuo laptop, invierà un pezzo di codice al desktop per l'elaborazione. Una volta terminata l'elaborazione, il desktop lo rimanderà al laptop in modo che possa sistemare le cose insieme.


Dubito che la compilazione sia ciò che brucia la memoria in Android Studio.
Atsby,

-1

Ho un ufficio; una stanza con un assistente personale e un armadietto che contiene 5000 libri e una scrivania con spazio per 20 libri. Immagina questa configurazione come

  • Office = computer
  • Me = processore (CPU)
  • Assistente = sistema operativo (SO)
  • Scrivania = RAM
  • Cabinet = Hard disk

In ogni momento 20 libri, al massimo, possono essere estratti dal gabinetto dal mio assistente e collocati sulla mia scrivania per lavoro. A causa del lavoro del mio segretario, potrebbe mettere un libro o due suoi sulla mia scrivania (diciamo solo che siamo poveri e non possiamo permetterci un'altra scrivania).

Se voglio lavorare su altri libri, non c'è più spazio e il mio assistente deve determinare quale libro (i) attuale (i) sulla (e) scrivania (e) è più probabile che io usi al momento, e inserirò quel libro nel gabinetto a lasciare spazio agli altri libri che desidero. L'assistente deve camminare avanti e indietro sulla scrivania e sul mobile ogni volta che desidero lavorare su un libro non alla mia portata.

Per un sistema con RAM insufficiente, questo è ciò che fa il sistema operativo per i processi che non sembrano essere molto attivi: prendi i loro contenuti di memoria e scrivili su disco in un archivio di memoria virtuale, liberando RAM per altri processi che ne hanno bisogno. Proprio come c'è la distanza tra la scrivania e il cabinet, c'è la "distanza" tra processore, RAM e disco. Il disco è incredibilmente lontano e lento, proprio come l'esperienza con il tuo laptop.

Nell'ufficio successivo, il mio collega ha una scrivania abbastanza spaziosa per 80 libri. Non sarebbe bello se potesse "condividere" parte della sua scrivania per conservare i miei libri? In modo che potrei praticamente avere 100 libri?

Bene, prima di tutto, gli assistenti in ogni ufficio hanno inevitabilmente bisogno di mettere alcuni dei loro libri in modo che possano svolgere il proprio lavoro (non negoziabile). Tutti i sistemi operativi in ​​un sistema devono utilizzare un po 'di RAM per fare il loro lavoro altrimenti non avresti nessun sistema operativo per cominciare. Quindi non ottengo davvero l'intera allocazione di 20 libri, né il mio collega con un'allocazione completa di 80 libri. E il mio collega ha il suo lavoro da fare che riduce ulteriormente lo spazio disponibile.

Inoltre, gli assistenti non sono addestrati a spostare libri tra gli uffici (supponiamo che i loro livelli di competenza abbiano un limite). L'architettura Windows esistente non prevede di utilizzare direttamente la RAM di un altro computer remoto.

Ora, immagina se gli assistenti fossero effettivamente addestrati a spostare correttamente i libri tra gli uffici e ricordare chiaramente la proprietà dei libri, camminare tra gli uffici sarà molto probabilmente una procedura ancora più lenta perché uscire da un ufficio all'altro è di maggiore distanza. Non solo, quando l'assistente prende i libri dall'altro ufficio, dovrebbe comunque liberare spazio sulla tua scrivania, rimescolando i libri indesiderati nel gabinetto. Perché farlo camminare così tanto?

Non è possibile uscire da un computer per archiviare / recuperare elementi in un altro computer tramite la rete, almeno per il caso d'uso, perché l'app o il sistema operativo non sanno come eseguirlo. E non sarebbe neanche molto efficiente.

Se si desidera continuare a lavorare con il laptop, installare più RAM (una scrivania più grande) o installare un disco a stato solido (cabinet con funzionalità organizzative che rendono più veloce l'individuazione dei libri).

Si noti che in alcune configurazioni può effettivamente essere più veloce archiviare e recuperare dati da computer remoti - ci sono tecnologie software di clustering che fanno proprio questo - quindi accedere a dischi a rotazione lenta, ma quelli non sono ancora adatti al proprio scenario.

Considera le scale temporali dell'accesso ai dati tra risorse hardware .


7
Penso che tu stia interpretando la domanda troppo alla lettera. Ovviamente, è impossibile per i computer avere 10 GB ciascuno, ma in linea di principio è possibile che i computer condividano 10 GB in modo che, ad esempio, possano utilizzare 5 GB ciascuno invece che il laptop sia limitato a 2 GB. Le prestazioni sarebbero terribili ma è possibile in linea di principio.
David Richerby,

@DavidRicherby - Le domande devono essere lette alla lettera. La parola scritta è una cosa meravigliosa, l'unica cosa che significa è esattamente quello che dici. Quindi l'autore sta letteralmente chiedendo se possono combinare la memoria di sistema di due computer indipendenti per aumentare le prestazioni che ovviamente non è possibile.
Ramhound,

6
@Ramhound Sembra che tu abbia frainteso questa risposta. Questa risposta dice che è impossibile combinare un sistema da 2 GB e un sistema da 8 GB per ottenere due sistemi ciascuno con 10 GB (perché sarebbe un totale di 20 GB, che non esiste). Interpretato in modo troppo letterale, questo è ciò che pone la domanda. Stai parlando di combinare 2 GB + 8 GB per ottenere due sistemi che condividono 10 GB, che è la domanda che si intende porre. Quindi ti sei piuttosto sparato ai piedi con l'affermazione che le domande dovrebbero essere lette letteralmente: la domanda letterale è senza senso; la domanda voluta almeno ha un senso.
David Richerby,

@DavidRicherby - Se lo dici tu. Ho trovato utile la risposta. Dal momento che ha sottolineato correttamente, non è possibile combinare la memoria di sistema di due sistemi di computer indipendenti, proprio come non è possibile combinare due serbatoi di gas di due automobili separate e indipendenti. Certo, non sono sicuro che ne venga fuori 220, che in effetti non ha senso.
Ramhound,

Questa domanda e risposta è un perfetto esempio di GIGO :)
Ratna,
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.