Compartilhando recursos de RAM entre 2 ou mais computadores

4

Eu sei que havia uma pergunta um pouco semelhante antes: Como compartilhar CPU ou RAM?

Mas, deixe-me especificar um pouco mais ...

Quando o Microsoft Windows exige mais capacidade de RAM do que a disponível, ele usa um arquivo de permuta para armazenar temporariamente os dados lá, isso é algo como uma RAM baseada em disco rígido. Esta tecnologia é usada por muitos anos.

Teoricamente, não deve ser muito difícil implementar uma tecnologia semelhante que use a RAM de diferentes computadores na rede para armazenamento temporário de dados. Isso requer apenas um software executado em computadores na rede que aceite e retorne dados de / para o computador principal e mantenha esses dados na RAM; mais o sistema operacional do computador principal deve ter a capacidade de usar computadores na rede em vez de (ou além de) o arquivo de troca.

Eu me pergunto, existem implementações dessa ideia? Isso permitiria que os usuários construíssem clusters de RAM usando todos os seus computadores domésticos ou de escritório, o que aumentaria o desempenho de um único computador para algumas tarefas de desenvolvimento / jogos / vídeo, etc.

    
por davee44 19.10.2013 / 10:48

3 respostas

5

Na verdade, funcionaria apenas em poucos casos (certamente não em jogos!), mesmo que fosse possível.

O primeiro passo é exportar um protocolo de dispositivo bruto, já que o Windows emprega acesso direto para operações de troca mais rápidas. Atualmente isso não pode ser feito, pois não há protocolo de dispositivo bruto para o Windows (existe no Linux e em alguns Unices, e talvez o iSCSI possa fazer isso).

Em seguida, você precisa importar o dispositivo na máquina do cliente como um dispositivo físico. Isso também pode ser feito, mas por razões de segurança a maioria das implementações tratam dispositivos de rede como dispositivos removíveis . Pode-se conseguir fazer isso aprimorando a tecnologia ReadyBoost.

Mas o problema agora é que um dispositivo de rede é ordens de magnitude mais lento que um dispositivo de disco físico (que é de magnitude mais lenta que a memória), então você não poderia trocar muito nele sem a moagem do sistema a um impasse.

Você poderia usá-lo somente se os requisitos de RAM velozes fossem baixos e os requisitos de armazenamento em massa fossem enormes e tolerantes a velocidades muito lentas. E só valeria a pena se você tivesse isso em vários computadores. O que significa que você construiu um cluster de computação ... e isso significa que você tem um problema de computação distribuída (que tem seu próprio conjunto de ferramentas e geralmente é abordada descarregando processos inteiros com toda a sua memória para outros nós).

No uso comum, se um swapfile maior disco não o ajudar, porque é muito lento e o thrashing mata suas performances, como poderia uma unidade de rede ainda mais lenta resolver qualquer coisa ?

Cenários

This would allow users to build RAM clusters using all of their home or office computers, that will boost the performance of a single computer for some development/gaming/video tasks, etc.

Para o processamento de vídeo existe a possibilidade de descarregar tarefas em paralelo aos computadores clientes, cada um deles operando em um bloco de quadros de vídeo ou canais diferentes. Existe pesquisa ativa sobre isso. O truque é que todos os clientes têm acesso rápido ao armazenamento em massa (que também pode ser distribuído: há também sistemas de arquivos distribuídos em rede nos quais os arquivos podem residir em mais de um servidor físico), cada um trabalhando em tarefas ligadas à CPU. >

Para o desenvolvimento , existem ferramentas como dmake que permitem particionar uma compilação de projeto (e análise estática, teste e documento ...) para hosts diferentes. Isso também pode ser feito automaticamente com sistemas de produção contínua e construção automatizada , e os resultados são possivelmente muito melhores do que fazer tudo sob demanda de um único host de comando.

    
por 19.10.2013 / 11:00
2

Essas tecnologias existem, mas são tão complexas e caras que normalmente não seriam usadas para desenvolvimento, videogames ou edição de vídeo, porque é mais fácil e barato comprar uma única máquina poderosa. Eles também aumentam a latência de acesso à memória em pelo menos uma ordem de magnitude, mesmo com redes especializadas de baixa latência e alto rendimento, como InfiniBand .

Por outro lado, os sistemas distribuídos de memória compartilhada são bastante comuns em super computing. Esses geralmente vêm com um gerenciador de memória e programas que tentam manter sua parte da memória coerente e local para não acessar regiões de memória remota com muita freqüência.

    
por 19.10.2013 / 10:55
-3

Eu tenho pensado sobre essa questão, mas de uma maneira um pouco diferente. Que tal um RAMDisk compartilhado entre dois computadores? O RJ45 ainda é mais rápido que um SSD em uma conexão SATA III. Certamente, não tão rápido quanto a RAM nativa, mas com um cabo cruzado, é possível mover sua memória virtual para um RAMDisk. Este método ainda seria um disco rígido interno, SSHD e um SSD. Essa ideia pode ser um bom truque de jogo entre dois PCs quando um PC tem muito menos memória RAM. A idéia é compartilhar o RAMDisk e configurar o PC convidado para salvar a memória virtual na RAM extra do host.

    
por 30.04.2016 / 00:09