Compartilhando recursos de hardware pela rede: especificamente RAM

8

Eu tenho dois sistemas. Um é um laptop e possui 2 GB de RAM, enquanto o outro é um desktop com 8 GB de RAM. É possível compartilhar esses recursos para que ambos os sistemas tenham 10 GB de RAM?

O software que quero executar nos dois sistemas é o Android Studio ... que atualmente o laptop não está funcionando muito bem.

Informações adicionais: Ambos os sistemas estão executando o Windows 8 e possuem processadores Intel Core i3 .

obrigado ppl, mas eu tenho outra pergunta .. que tal compartilhá-lo através de um cabo ethernet? como através de um switch ou v-lan, therby não usando a internet e obtendo uma taxa de transferência de descida ???

Alvin
fonte
2
Não, o ram não é transferível.
Ctrl-alt-dlt
15
Claro que você poderia fazer isso. Mas a RAM compartilhada seria tão rápida quanto a velocidade da sua rede. Em outras palavras, isso é possível (bem, teoricamente de qualquer maneira), mas não é prático.
Ajedi32
4
Não é razoável pedir que você troque de sistema operacional, mas sabe que o Linux tem compactação de memória virtual, o que significa que você pode usar mais RAM do que fisicamente, compactando determinados segmentos dele com LZO.
Naftuli Kay
5
Se você estivesse usando Linux, poderia criar algo usando um ramdisk, um dispositivo de bloco de rede e um arquivo de troca. Não acredito que o Windows tenha esse tipo de capacidade.
Mark
4
Você está fazendo a pergunta errada. A pergunta que você deve fazer é: como você aproveita a máquina mais poderosa para realizar builds? E uma resposta possível é o plugin Gradle SSH .
Michael Hampton

Respostas:

21

Apenas alguns programas permitem dividir processos pela rede (alguns programas de renderização em 3D, compartilhando efetivamente a RAM) (consulte a resposta de Julian Knight)

O problema com a internet seria muito lento (ver resposta de Spiff)

Eu acho que a RAM da sua área de trabalho não será compatível com hardware, portanto, apenas colocar as tiras de RAM no seu laptop não funcionará.

O que você pode fazer:

Instale um cliente de área de trabalho remota no seu laptop e conecte-se à sua área de trabalho. Dessa forma, você pode "trabalhar na área de trabalho" através do túnel.

Portanto, o programa pesado (android studio) será executado na sua área de trabalho! E o laptop só seria incomodado pelo cliente de desktop remoto.

Isso usa efetivamente o hardware do PC e, portanto, funcionaria melhor (se o laptop e o cliente da área de trabalho remota forem suficientes e fáceis de trabalhar).

Gostaria de acrescentar que isso não "compartilha" a RAM, mas apenas usa a RAM do PC, o que é suficiente.

Paulo
fonte
11
Acho que existem programas que permitem arrastar uma janela de um sistema operacional para outro, mas não tenho certeza do nome, se o processamento ainda for feito localmente ou qualquer outra coisa.
Ismael Miguel
11
Paralelos, mas isso é virtualização.
Arthur Kay
11
@Alvin Um aplicativo de desktop remoto não passaria pela Internet, a menos que você configurasse sua rede especificamente para isso. Se você se conectar à sua área de trabalho usando seu IP na rede, a conexão existirá apenas na sua rede.
Logarr 23/05
9

Provavelmente não, pois seria bem lento se comparado à paginação de memória virtual para uma unidade local. O SATA-3 é de 6 gigabits por segundo e eu tenho um HDD SATA-3 de 4 TB e 7200 RPM com dois anos de idade e uma taxa de leitura / gravação sustentada de 157 MebiByte / s (~ 1,3 gigabits / s). As taxas de transferência sustentadas pela Ethernet de gigabit estão em torno de 0,942 gigabits / s na melhor das hipóteses.

Spiff
fonte
4
Observe que, para algumas cargas de trabalho, a latência de acesso aleatório é mais importante que a largura de banda (e eu suspeito que o número da largura de banda do disco seja para acessos grandes, não para pedaços aleatórios de 4KiB). Mesmo com os custos indiretos da rede, a transferência de 4KiB diretamente de um sistema para outro provavelmente seria mais rápida que o acesso médio ao disco (com atrasos de busca, acomodação e rotação). Antes de os SSDs se tornarem populares, havia pesquisas sobre o uso da RAM de outros sistemas para espaço de troca. A resposta de FuaZe de mudar o trabalho para um sistema maior parece mais prática.
Paul A. Clayton
3
Certo, mas sua unidade tem uma velocidade de acesso aleatório MUITO, MUITO mais baixa que a Ethernet gigabit. Para isso você precisaria de estado sólido.
Arthur Kay
@ Spiff obrigado ppl, mas eu tenho outra pergunta .. que tal compartilhá-lo através de um cabo ethernet? como através de um switch ou v-lan, por isso não usando a internet de jeito nenhum e obtendo uma taxa de transferência de descida ???
Alvin
@ArthurKay: Ou um drive de 30Krpm de classe profissional usado em clusters de virtualização de balanceamento de carga.
User2284570
@ Alvin Isso é exatamente o que esta resposta está falando. "... taxas de transferência através de gigabit Ethernet ..." "
BenjiWiebe
1

Não, isso não é possível.

A única pequena exceção é quando você está usando uma ferramenta capaz de dividir o processamento em várias máquinas, como a renderização de gráficos 3D. No entanto, isso não é realmente o que você está perguntando.

Julian Knight
fonte
Você conhece o inferno ? Como ele usa o x86, o acesso ao DMA em rede pode ser uma ajuda real.
User2284570
O OP especificou o Windows 8 para que isso não o ajude, temo.
Julian Knight
Isso foi apenas para dizer que, ao contrário do que você disse, é possível. Para o sistema operacional, o sistema aparece como um sistema SMP de memória não compartilhada.
User2284570
1

Cerca de sete anos atrás, o controlador de memória foi transferido de um chip separado ( northbridge ou hub do controlador de memória) para a CPU. Você sabe por quê? Para diminuir a latência, porque a CPU precisa de acesso em velocidade muito, muito alta à RAM. As CPUs atuais acessam RAM com 68 GB / s : http://ark.intel.com/products/82930/Intel-Core-i7-5960X-Processor-Extreme-Edition-20M-Cache-up-to-3_50-GHz . A moderna Ethernet de 1 Gbit / s oferece 120 MB por segundo, 560 vezes mais lento. Portanto, não é algo que você pode fazer em computadores comuns.

Existem soluções baseadas em computação de cluster com muitos computadores conectados a uma rede e cada um armazena parte dos dados em sua RAM. É muito mais lento que a RAM normal, mas você não tem escolha se precisar de 10 TB de dados para estar disponível. Mas essas soluções devem ser suportadas por software. E o Android Studio não suporta isso.

Então, a resposta é não, infelizmente.

user996142
fonte
11
Para usar clusters resilientes a falhas de virtualização, posso dizer que compartilhar RAM pela Ethernet cat5E para unidades ainda mais lentas funciona bem com sistemas operacionais e programas modernos.
User2284570
1

No momento, não é possível, mas na verdade isso foi listado nos cartões de alguma forma e escrito para " After Vista " como parte do sistema 'ReadyBoost', que permite usar um pen drive como meio para ler o arquivo de paginação (e outros arquivos) mais rápido do que usar o disco. Não é RAM extra como tal, mas se você estiver usando muita RAM, poderá reduzir a quantidade de tempo que seu computador gasta material de paginação para e do disco.

Parece que no seu cenário você se beneficiaria de um pen drive de 32 GB dedicado ao ReadyBoost .

Matthew Steeples
fonte
Isso não parece responder à pergunta do OP. Embora possa ter sido originalmente o plano para o ReadyBoost permitir o compartilhamento de RAM pela rede, não é como é atualmente implementado.
ChrisInEdmonton
@ChrisInEdmonton OK, editei minha resposta para declarar especificamente que não é possível, mas foi planejado em um ponto, em vez de apenas declarar que foi planejado.
Matthew Steeples
2
E o ReadyBoost é muito lento para ser útil. Os computadores diminuem a velocidade ao usar o ReadyBOOST. Não é um grande impulso.
Tonny 23/05
11
@Tonny Acho que é um daqueles cenários "sua milhagem pode variar". Pessoalmente, descobri que acelerava os computadores mais lentos e fazia pouca diferença nos computadores velozes. Nunca experimentei desacelerar um computador. Obviamente, não há substituto para uma tonelada de discos de RAM e SSD, mas se você não pode / não vai passar por isso e têm barramentos USB desertas indo de reposição, então ele pode ajudar
Matthew Steeples
0

Isso não é possível, pelo menos não sem um grande esforço da parte do Google.

Basicamente, o Android Studio precisaria suportar o processamento distribuído por vários nós, como a mineração BitCoin e o Folding @ Home.

Ao pressionar compilar no seu laptop, ele envia um pedaço de código para a sua área de trabalho para processamento. Quando o processamento da área de trabalho terminar, ele será devolvido ao seu laptop para que possa consertar as coisas.

MonkeyZeus
fonte
Duvido que a compilação seja o que queima a memória no Android Studio.
Atsby
-1

Eu tenho um escritório; uma sala com um assistente pessoal e um armário com 5000 livros e uma mesa de trabalho com espaço para 20 livros. Imagine esta configuração como

  • Escritório = computador
  • Me = processador (CPU)
  • Assistente = sistema operacional (SO)
  • Desk = RAM
  • Gabinete = disco rígido

A qualquer momento, 20 livros, no máximo, podem ser retirados do armário pelo meu assistente e colocados na minha mesa para o trabalho. Devido ao trabalho da minha secretária, ele pode colocar um ou dois livros na minha mesa (digamos que somos pobres e não podemos comprar outra mesa).

Se eu quiser trabalhar em outros livros, não há mais espaço, e meu assistente precisa determinar quais livros atuais sobre a mesa eu menos provavelmente utilizarei no momento e colocará esse livro de volta no armário para abrir caminho para os outros livros que eu quero. O assistente tem que andar de um lado para o outro da mesa e do armário toda vez que desejo trabalhar em um livro que não esteja ao meu alcance.

Para um sistema com RAM insuficiente, é isso que o sistema operacional faz para processos que não parecem muito ativos - pegue o conteúdo da memória e grave-os em disco em um armazenamento de memória virtual, liberando RAM para outros processos que precisam. Assim como há distância entre mesa e gabinete, há "distância" entre processador, RAM e disco. O disco é incrivelmente distante e lento, assim como você experimenta com seu laptop.

No próximo escritório, meu colega tem uma mesa espaçosa o suficiente para 80 livros. Não seria legal se ele pudesse "compartilhar" parte de sua mesa para guardar meus livros? Para que eu pudesse virtualmente ter 100 livros?

Bem, antes de tudo, os assistentes em cada escritório inevitavelmente precisam colocar alguns de seus próprios livros para que possam executar seu próprio trabalho (não negociável). Todo sistema operacional em um sistema precisa usar um pouco de RAM para fazer seu trabalho, caso contrário você não teria um sistema operacional para começar. Portanto, eu realmente não recebo a alocação completa de 20 livros, nem meu colega com uma alocação completa de 80 livros. E meu colega tem seu próprio trabalho a fazer, que esgota ainda mais o espaço disponível.

Além disso, os assistentes não são treinados para mover livros entre escritórios (suponha que seus níveis de competência tenham um limite). A arquitetura existente do Windows não possui disposição para usar diretamente a RAM de outro computador remoto.

Agora, imagine se os assistentes foram realmente treinados para mover livros adequadamente entre escritórios e se lembrar claramente da propriedade dos livros, caminhar entre escritórios provavelmente será um procedimento ainda mais lento, porque sair de um escritório para outro é de uma distância maior. Além disso, quando o assistente pega os livros no outro escritório, ele ainda precisa liberar espaço em sua mesa, colocando livros indesejados de volta no armário. Por que fazê-lo andar tanto?

Não é possível sair de um computador para armazenar / recuperar coisas em outro computador pela rede, pelo menos para o seu caso de uso, porque o aplicativo nem o SO não sabem como realizá-lo. E também não seria muito eficiente.

Se você quiser continuar trabalhando com o laptop, instale mais RAM (mesa maior) ou instale um disco de estado sólido (gabinete com recursos de organização que tornam a localização de livros mais rápida).

Observe que, em algumas configurações, pode ser realmente mais rápido armazenar e recuperar dados de computadores remotos - existem tecnologias de software de cluster que fazem exatamente isso - para acessar discos rotativos lentos, mas esses ainda não atendem ao seu cenário.

Considere as escalas de tempo de acesso a dados entre recursos de hardware .

icelava
fonte
7
Eu acho que você está interpretando a pergunta muito literalmente. Obviamente, é impossível que os computadores tenham 10 GB cada, mas, em princípio, é possível que os computadores compartilhem 10 GB para que, por exemplo, eles possam usar 5 GB cada, em vez de o laptop ser limitado a 2 GB. O desempenho seria terrível, mas é possível em princípio.
David Richerby
@DavidRicherby - As perguntas devem ser lidas literalmente. A palavra escrita é uma coisa maravilhosa, a única coisa que significa, é exatamente o que você diz. Portanto, o autor está literalmente perguntando se eles podem combinar a memória do sistema de dois computadores independentes para aumentar o desempenho, o que obviamente não é possível.
Ramhound
6
@ Ramhound Você parece ter entendido mal esta resposta. Esta resposta diz que é impossível combinar um sistema de 2 GB e um sistema de 8 GB para obter dois sistemas cada um com 10 GB (porque isso seria um total de 20 GB, o que não existe). Interpretado excessivamente literalmente, é o que a pergunta faz. Você está falando em combinar 2 GB + 8 GB para obter dois sistemas que compartilham 10 GB, e é sobre isso que a pergunta se propõe. Portanto, você prefere dar um tiro no pé com sua afirmação de que as perguntas devem ser lidas literalmente: a pergunta literal é um disparate; a questão pretendida pelo menos faz sentido.
David Richerby
@DavidRicherby - Se você diz. Achei a resposta útil. Como indicado corretamente, não é possível combinar a memória do sistema de dois sistemas independentes de computador, assim como não é possível combinar dois tanques de gasolina de dois automóveis separados e independentes. Certamente, não tenho certeza de que ele tenha 220, isso realmente não faz sentido.
Ramhound
Esta pergunta e resposta é perfeito exemplo de GIGO :)
Ratna