Compartilhar RAM pela rede


49

Meu colega está usando um aplicativo que consome muita memória, o que torna o sistema muito lento. É possível compartilhar memória com outros PCs pela Internet?

O sistema possui 8 GB de RAM e o aplicativo consome mais de 6 GB.


5
Execute-o em um servidor de alta potência via Área de Trabalho Remota, ou VNC ou X11?
WGroleau 23/02

3
É melhor usar grandes unidades de armazenamento (HDDs ou SSDs) como cache, como as respostas já mencionadas.
Firebug 23/02


79
Você pode ter mais sorte download de mais RAM ...
Mehrdad

4
As versões modernas do Windows permitem o uso de pen drives ou cartões SD para melhorar o desempenho. Na verdade, isso não significa que o dispositivo seja usado como RAM, mas algo que funcione entre a RAM e o disco rígido baseado em prato.
Salman A

Respostas:


162

Eu considerei apenas um aplicativo independente que é executado em uma máquina "padrão", sem a capacidade de simplesmente instalá-lo em outro lugar ou usar hardware ou software especializado. Outras respostas (corretamente) tratam da migração de software ou hardware dedicado para a tarefa.

Qualquer maneira de "compartilhar RAM" via rede estará sujeita às limitações desse meio de rede. Como até a Ethernet de gigabit é limitada a aproximadamente 100 MB / s (megabytes), isso significa que a velocidade da sua "RAM" também será limitada.

100MB / s é uma fração minúscula da velocidade da RAM que está realmente no seu sistema. Seu programa será dolorosamente lento e parece que está sendo executado em um computador a partir do início dos anos 90

Os discos rígidos modernos são, para leitura e gravação seqüencial, um pouco mais rápidos que isso. SSDs são várias vezes mais rápidos.

Isso está ignorando os problemas de latência que tornarão seu programa uma ordem de magnitude mais lenta novamente.

Devido à lentidão e a outros problemas técnicos envolvidos, esse não é um problema que alguém possa considerar que vale a pena tentar resolver para sistemas "residenciais" ou "comerciais". É mais barato e mais eficaz comprar mais RAM, se necessário.

Basta comprar mais RAM ou até um SSD para um arquivo de paginação. Não há outra maneira de fazer isso que não exija uma quantidade insana de trabalho ou hardware com pouco benefício.


46
A troca / paginação na Ethernet gigabit pode ter latência menor do que um arquivo de paginação em um disco magnético local . por exemplo, latência de disco de 10 ms vs. tempo de ping abaixo de 1 ms para a Ethernet local. Se o servidor de arquivos que contém o arquivo de paginação (ou o dispositivo iSCSI para o qual você está trocando) o mantiver quente em sua RAM, você poderá ganhar. IDK se o Windows oferecer suporte à paginação para um arquivo de rede. (Tenho certeza que o Linux faz, mas essa é uma pergunta do Windows). Ah, acabei de ver que a pergunta diz "pela Internet", então nvm.
Peter Cordes

2
@ MarkHu Dado isso foi solicitado ao Superusuário, não acho que o solicitante tenha controle sobre o código do software que está sendo usado.
oldmud0

2
@ PeterCordes O que você descreve ainda é uma perda com a compra de mais RAM ou um SSD. E ainda mais certamente no Windows. ;)
jpmc26 23/02

11
O @TomTom para uso doméstico e em escritório "normal" gigabit ainda é praticamente o que você obtém em sua máquina de desktop. Só porque 25G e 100G são comuns (ou pelo menos disponíveis) para a infraestrutura de backbone não significa que é provável que você a veja na área de trabalho. Não consigo nem encontrar uma placa 10GigE de mesa em qualquer fornecedor local a um custo razoável, muito menos uma 25GigE. Os cartões 10GigE são cerca de 4 vezes o custo de um cartão de memória de 8GB aqui. Eu sei o que consideraria uma atualização razoável.
Mokubai

9
"parece que ele está rodando em um computador desde o início dos anos 90" - estranho, os computadores dos anos 90 pareciam muito mais rápidos do que os computadores atuais.
Jeremy Visser

73

Apenas para ser completo: o InfiniBand permite acesso direto à memória de outras máquinas.

No entanto, requer:

  • Um comutador InfiniBand
  • Um cartão de expansão InfiniBand em cada máquina
  • O aplicativo deve ser programado especificamente para usar este

NÃO funciona em uma rede existente, requer uma infraestrutura completamente independente para todos os nós conectados. Também NÃO funciona pela Internet


53
Também é certamente muito mais caro do que obter mais 8 GiB de RAM :-).
sleske

40
Oh, apenas por uma ordem de magnitude mais ou menos;)
Gerald Schneider

7
Você não precisa de infinita banda, o RoCE também é possível. No entanto, isso requer NICs compatíveis com RDMA e provavelmente um novo switch para suportar as NICs, e um aplicativo programado para usar RDMA.
22418 alex.forencich

7
+1 porque é um grande e correto, mas - para esta situação - resposta totalmente inútil :-)
daniel.neumann

11
Você faz - a menos que obtenha 25G ou 100G, que são mais caros. RDMA não resolve o problema de latência.
TomTom

19
Is there any alternative solution?

Isso depende muito da natureza dos dados.

Você pode executar 2 servidores mysql diferentes em 2 máquinas diferentes.

Em seguida, divida os dados em 1/2 e escreva o programa para saber automaticamente para qual servidor acessar.

Obviamente, isso pode ser dimensionado para qualquer número de servidores, se você os tiver disponíveis.


Eu havia considerado mencionar que, geralmente, a maneira como "compartilhamos memória" é movendo ativamente o aplicativo para outra máquina e depois trabalhando remotamente com ele por meio de quaisquer métodos disponíveis. É definitivamente uma alternativa para comprar mais memória, especialmente se outra máquina já estiver disponível. +1
Mokubai

11
Como uma área de trabalho remota?
Innov

4
Você tem 2 computadores executando SO separado, e cada um possui uma cópia do mysql em execução. Portanto, o computador nº 1 pode ser 192.168.0.1 e o computador nº 2 192.168.0.2 (ou o que for.) No seu PC principal, agora você pode acessar os dois IPs para recuperar seus dados. O mysql ou seu substituto gratuito mariadb oferece bibliotecas como libmysql para adicionar ao seu programa, para que ele tenha acesso nativo ao mysql. Esta não é uma área de trabalho remota, seu relacionamento cliente-servidor e / ou cliente e vários servidores.
22618 cybernard

15

Sim, é razoavelmente fácil de fazer (e já fiz isso, para sistemas sem disco que precisam de troca), usando o protocolo Network Block Device.

Instale nbd-serverna máquina servidor e configure-a para criar automaticamente arquivos por host.

Verifique se as máquinas clientes têm o NBD compilado em seus kernels e, em seguida, configure-os para trocar para um dispositivo montado no NBD. O nbd-clientpacote pode ajudar.

Desculpe se o acima é um pouco vago - As máquinas em que eu fiz isso não são acessíveis a partir daqui; Talvez eu consiga preencher os detalhes quando tiver acesso a eles.

Há uma implementação alternativa de servidor NBD chamada nbdkit; Eu não sei nada sobre isso.


Acabei de descobrir que a pergunta tem uma etiqueta do Windows. Não sei nada sobre o Windows - desculpe.
Toby Speight 22/02

8
+1, a troca por GigE em uma LAN deve ter uma latência menor do que um driver rígido magnético local, se o servidor de arquivos para o qual você está trocando mantém o arquivo de troca armazenado em cache em sua RAM. Tempos de busca em HD de ~ 10ms vs. tempos de ping da LAN de ~ 0,25 ms. Não faço ideia se o Windows pode fazer algo semelhante, por exemplo, com um arquivo de paginação em SMB (Windows File Sharing) ou qualquer outro protocolo, mas talvez o iSCSI possa funcionar. O PO menciona "pela Internet"; isso não seria uma boa ideia. A menos que seu tempo de ping seja menor que a latência de acesso aleatório do HD, não é uma vitória.
Peter Cordes

Não vejo como isso se qualifica como "RAM adicional". Não é diferente de descarregar alguns dados para um arquivo em um disco local, não é?
22418 ivan_pozdeev

Para um cliente Wndows, é possível compartilhar um dispositivo de bloco no Linux via Samba e montá-lo como um disco no Windows com o ImDisk (o tamanho precisará ser especificado manualmente).
21418 ivan_pozdeev

Eu também fiz isso no passado no Linux, embora eu tenha usado minha própria implementação servidor-cliente nbd, ele funcionou bem para usar o dispositivo de bloco nbd como uma partição de troca.
21418 hanshenrik

9

Dados os pequenos detalhes sem importância "Windows 10, estação de trabalho tem 8G B de RAM" , há realmente apenas uma resposta sã: compre mais RAM e execute menos porcaria.

Comprar um SSD e colocar o arquivo de paginação seria a próxima melhor opção, mas realmente ... compre mais RAM.

Servir o arquivo de paginação ("compartilhar memória") pela rede é obviamente possível, mas é uma péssima idéia. Embora seja verdade que existam casos limítrofes em que o tempo de acesso pela rede será melhor do que acessar uma unidade local, isso é irrelevante para o seu caso de uso, porque você precisa de um tempo de acesso baixo consistente e alta largura de banda ao mesmo tempo. Lembre-se de que você não está antecipando falhas de uma ou duas páginas, está trocando constantemente. A menos que você esteja disposto a pagar alguns milhares, não há como chegar perto de comprar RAM ou um SSD.

8 GB não é suficiente para executar o Windows 10 e um aplicativo que consome muita memória ao mesmo tempo. É apenas o suficiente para executar o Word, Excel e Outlook ao mesmo tempo. Essa é exatamente a "configuração corporativa total besteira" completamente inutilizável com a qual milhões de pessoas convivem todos os dias em seus laptops profissionais. Invista 100-200 moedas em outro módulo de memória, e ele amortiza seu custo em uma semana (coisas que levaram minutos agora levam segundos e tempo é dinheiro - infelizmente, muitas vezes é difícil entrar na cabeça do contador de grãos local).

Como alternativa, se você é o proprietário da máquina, pode usar o NTLite para reduzir a porcaria do Windows 10, reduzindo o consumo de memória. Ou então, você pode desativar 80% dos serviços desnecessários. Parece inacreditável, mas é possível executar uma versão recente do Windows com menos de 2 GB de RAM usada.

Mas, realmente, basta comprar RAM ... é muito mais rápido e fácil do que gastar horas do seu precioso tempo reduzindo as porcarias do Windows.


2
O Windows é realmente tão ruim assim? Estou executando o Debian com o sistema completo em memória ram (sem unidade física) e pode ter dezenas de guias abertas do navegador da Web, planilhas e textos do LibreOffice, edição de fotos gimp e assistir a um vídeo ou ouvir música, deixando cerca de 3 shows gratuitos espaço para programas ou arquivos, tudo no total de 8 GB. Eu não sou uma vitória-hater, mas a partir de suas palavras o "BS total de configuração corporativa" soa muito como próprio Windows ...
Xen2050

11
Bem, isso é discutível - o OP está certo. A última vez que comprei máquinas de 8GB foi por volta de 2010. Estamos em 2017. Os aplicativos que usam memória de 16GB não são tão raros em certos campos (dica: não escrever e-mails e não, a palavra também é boa, a maioria das pessoas não escreve romances). Este é um pequeno investimento - 16 GB de memória é um almoço ou algo do tipo.
TomTom

7
@ Xen2050 Eu queria saber se é realmente tão ruim, então, na minha máquina Windows 10 de 6 GB, abri o Outlook, Excel, Word, Edge, tenho uma instância muito pequena do SQL Server em execução, o Malwarebytes parece estar fazendo algo com 170 MB , Abri o Visual Studio 2017, abri o Firefox aqui e estou com 65% de uso de memória e o Windows nem precisou começar a usar memória compactada. Portanto, IME, o Windows 10 funciona bem com menos de 8 GB de RAM e, de qualquer maneira, a aparente antipatia de Damon pelo Windows é irrelevante para a resposta.
Andrew Morton

11
@ Damon: Mas, a menos que você faça algum tipo de análise sobre o que estava consumindo RAM extra, não há base para culpá-la por "porcaria do Windows" versus "porcaria do mercado de reposição instalada pelo empregador". Como muitas pessoas (inclusive eu) fizeram cálculos com muita memória, no Windows 7, Windows 8.xe Windows 10, sem esse tipo de problema, isso sugere fortemente (mas não prova) que o culpado não faz parte do próprio Windows.
Ben Voigt

6

Uma alternativa simples seria executar o aplicativo no PC remoto , possivelmente em uma conta de usuário dedicada, e simplesmente controlá-lo via RDP, VNC ou o que for conveniente.


Se o PC remoto tem memória RAM suficiente ...
LateralTerminal

11
@LateralTerminal Isso está implícito.
Clonkex

2
Sim, mesclar a RAM de duas máquinas em uma rede ... a rede não funcionará, não para aplicativos comuns (do tipo quadrado e cinza com botões e menus).
rackandboneman

6

Outra opção é implantar temporariamente o aplicativo em um ambiente em que a ram possa ser ampliada ou reduzida facilmente.

Eu examinaria uma instância do Amazon AWS, que pode ser alterada em tamanho com uma reinicialização.

No IE, uma instância pequena como a C5.large possui 4 GB de RAM e 2 núcleos e custa US $ 2,04 por dia no Linux, ou US $ 4,26 por dia na instalação do Windows. O espaço em disco do EBS é um custo extra e aumenta linearmente com o GB alocado.

Você pode configurar seu sistema nesse tamanho menor e, quando desejar obter ruído total, pare-o, altere o tamanho da instância e execute o software.

  • m5.4xlarge é de 64 GB de RAM e 16 núcleos, por US $ 18,44 USD / dia ou US $ 36,10 USD / dia para Windows.
  • O r4.8xlarge tem 244 GB e 32 núcleos, por US $ 51,07 USD / dia ou US $ 86,40 USD / dia com janelas.
  • x1.32xlarge tem 1952 GB e 128 núcleos, por US $ 320,12 USD / dia ou US $ 461,43 / dia com Windows

Ou o maior deles ...

  • x1e.32xlarge tem 3904 GB e 128 núcleos, por US $ 640,52 USD / dia ou US $ 781,82 / dia com Windows. Se o seu colega precisar de mais do que isso, o problema precisará ser reescrito de maneira mais otimizada.

https://www.ec2instances.info/ ajudará você a escolher um tamanho adequado. Observe que alguns locais custam mais que outros. Cingapura e norte da Califórnia são caros. No entanto, sua VM não custa nada quando não está em execução, exceto os custos de armazenamento em disco.

A desvantagem é que, se você precisar dessa memória por um longo tempo, comprar tempo da VM é uma maneira cara de fazer isso. No entanto, os contadores parecem preferir custos operacionais, como aluguel, a custos de capital, como atualizações.


11
Percebo que esta resposta não está abordando "acessar ram pela rede" conforme a solicitação do OP. É mais como acessar um host remoto com mais memória RAM. No entanto, saber como os orçamentos funcionam em alguns lugares pode ser uma solução válida para realizar o trabalho de maneira econômica.
26918 Criggie

4

Como outros já disseram, é tecnicamente possível, mas não vale a pena.

No entanto, se você deseja acelerar o uso do seu computador, é possível externalizar alguns de seus aplicativos para um servidor remoto.

Isso dependerá principalmente do que você está trabalhando e do aplicativo usado. Se você estiver executando programas que exijam muito tempo de processamento para uma pequena saída de dados, poderá executá-los em um servidor diferente do seu computador para economizar tempo e recursos enquanto trabalha em outra coisa.

O exemplo que tenho em mente é um servidor que testa meu código toda vez que pressiono uma modificação. A idéia dessa solução é limitar-se a casos de uso específicos.


4

Peça à TI para comprar mais RAM para o seu PC e demonstre a necessidade usando uma captura de tela do uso do aplicativo no Gerenciador de Tarefas.


4
Solução prática ... mesmo pedir à TI que troque temporariamente mais memória ram de outros sistemas deve ser uma resposta "gratuita".
Xen2050

2
@ Xen2050 Enquanto isso, seu colega está chorando porque o sistema dele não inicializa mais.
Willtech 24/02

3
@Willtech, é normal e apropriado que a TI mantenha peças de reposição de todas as peças e peças de todo o sistema de trabalho. O tempo de inatividade é o custo real.
Christopher Hostage

3

Existe uma solução comercial para isso, através de uma empresa chamada Kove ( http://kove.net/) Requer uma infraestrutura Infiniband para trabalhar no "backplane" (a ethernet funciona normalmente), embora outras opções como o RoCE às vezes possam ser disponibilizadas, dependendo de detalhes. Eles fornecem um número de interfaces transparentes para permitir a integração de alteração de código zero e APIs para desvio do kernel com acesso mais direto à CPU (ou seja, evitando a sobrecarga do kernel). Em termos de desempenho, isso depende da sua aplicação. Se você estiver vinculado à CPU, o impacto poderá ser mínimo (o que pode ser surpreendente). Se você tiver uma largura de banda de memória vinculada ao host local, eles fornecerão mais memória, mas você será prejudicado pelo gargalo já existente. Nesse caso, é vantajoso para a carga de trabalho ter memória maior do que a que pode ser colocada em uma caixa, e não ficar sem memória RAM? Vimos (muito) bons resultados com as bibliotecas de virtualização e aprendizado de máquina python. Os aplicativos HPC de ponta tendem a piorar bastante, mas usamos as APIs C e conseguimos manter o desempenho aceitável, reduzindo a contagem de nós (os nós estavam lá para a RAM, não para os ciclos da CPU), o que é um plus em comparação ao MPI . É difícil dizer se essa é uma boa solução para o seu colega, mas é uma opção que você pode procurar. Espero que ajude. Para deixar claro, não trabalho para a Kove e não tenho incentivo financeiro, mas colaborei com eles por vários anos e acho que essa tecnologia tem o potencial de impactar substancialmente a maneira como certa computação é feita. mas usamos as APIs C e conseguimos manter o desempenho aceitável, reduzindo a contagem de nós (os nós estavam lá para a RAM, não para os ciclos da CPU), o que é um plus em comparação ao MPI. É difícil dizer se essa é uma boa solução para o seu colega, mas é uma opção que você pode procurar. Espero que ajude. Para deixar claro, não trabalho para a Kove e não tenho incentivo financeiro, mas colaborei com eles por vários anos e acho que essa tecnologia tem o potencial de impactar substancialmente a maneira como certa computação é feita. mas usamos as APIs C e conseguimos manter o desempenho aceitável, reduzindo a contagem de nós (os nós estavam lá para a RAM, não para os ciclos da CPU), o que é um plus em comparação ao MPI. É difícil dizer se essa é uma boa solução para o seu colega, mas é uma opção que você pode procurar. Espero que ajude. Para deixar claro, não trabalho para a Kove e não tenho incentivo financeiro, mas colaborei com eles por vários anos e acho que essa tecnologia tem o potencial de impactar substancialmente a maneira como certa computação é feita.


Quantos gigabytes de memória você pode comprar para a configuração da banda infinita?
Joojaa

Sim, a questão principal aqui é o pequeno ponto em que ele fala sobre ter apenas 8 GB de memória e precisar de 16. Isso não é "Como uso a memória ram remota", mas "por que diabos eu uso um sistema com especificações de 10 anos"? .
TomTom

@jooja Temos 6 TB. Com base no que vimos, não vimos um limite. Você pode continuar adicionando dispositivos de RAM remota adicionais. Parece ter uma escala linear, portanto, é um problema de engenharia / custo. Nós projetamos um sistema de 1PB uma vez no papel, mas obviamente não conseguimos colocar isso em teste.
Bill

@ TomTom Eu não vi o comentário sobre 8 GB, mas sim, claramente, se estamos falando de 8 GB x 16 GB de RAM, alguns US $ K para uma nova máquina resolverão o problema.
Bill

Caramba, por algumas centenas de dólares, você provavelmente pode atualizar a RAM para 32 GB, a menos que a placa-mãe seja ridiculamente antiga e limitada.
fofo

2

Outro ponto de vista - talvez o problema não seja o limite de recursos do sistema, mas o aplicativo inútil que seu amigo está escrevendo. 6 GB de RAM são uma quantidade enorme de memória.

Só porque muitos dos outros aplicativos estão inchados demais , não significa necessariamente que o seu aplicativo amigo precisa ser um deles. O uso de diferentes métodos de programação pode reduzir os requisitos de memória e melhorar a velocidade. Por exemplo, se o aplicativo carregar um conjunto de dados inteiro na memória e funcionar, será muito mais inútil do que, por exemplo, armazenar dados no banco de dados SQL (local ou remoto) com poucos índices selecionados e acessá-lo por lá. Faça com que processe os dados bloco a bloco, se possível, em vez de carregar tudo de uma vez. As estruturas na memória também podem ser um desperdício. Liberte memória quando terminar. Não carregue na RAM o que você pode mapear na memória. E centenas de outras dicas ...

Se no entanto o aplicativo realmente precisar de mais memória que precise ser armazenada em outros computadores, poderá ser modificado para usar o memcached e similares para armazená-lo lá. Pontos de bônus, pois será melhor dimensionado no futuro.


5
6 GB de memória não são muitos, dependendo da aplicação. Até os usuários finais fazem a edição de fotos (o photoshop adora a RAM e uma câmera de ponta filma imagens de 64 megapixels), edição de vídeo (MUITO pior), então há um trabalho matemático. Heck, até o excel terá prazer em usar alguns GB. Nem todo mundo está escrevendo e-mails, usando o twitter e outras coisas.
TomTom

@ TomTom, se você precisar de processamento de alta megapixel, terá altos requisitos de memória (por natureza da solicitação). Mas, a menos que você esteja processando o genoma do DNA em sua planilha do Excel e ainda esteja usando alguns GB de RAM, esse é exatamente o tipo de programação inchada e desleixada da qual estou falando. Você sabe, como seu orçamento doméstico estava sendo processado com tanta rapidez (ou mais rápido) no Lotus 1-2-3, algumas décadas atrás, em máquinas com 3 ordens de magnitude menos RAM (e pelo menos centenas de vezes mais lentas de processadores) quanto o seu Excel de hoje.
Matija Nalis

11
Uau, que ansioso ignorante. Só posso supor que você tem muito pouca experiência com o que as pessoas usam para o Excel. Quando a Microsoft criou a versão de 64 bits do Office, eles disseram que a ferramenta é de pouca utilidade - EXCETO para Access e Excel, pois existem pessoas (principalmente gerentes) executando análises brutalmente grandes via Excel, usando muitos gigabytes de memória. A flexibilidade do Excel e a acessibilidade para não-programadores fazem dele a ferramenta (os estatísticos tendem a ser treinados no uso de R). Eu, pessoalmente, vi 200 arquivos excel de planilhas por algumas pessoas do setor financeiro.
TomTom

Se o seu orçamento doméstico demora muito para ser calculado no Excel, você é muito mais rico do que eu. Pergunta interessante no Excel vs 1-2-3 - o loop de cálculo do núcleo pode ser mais rápido no 1-2-3 porque não faz tanto. Mas em uma máquina com vários núcleos, o Excel vence facilmente o 1-2-3. E, obviamente, as gigantescas folhas de emenda do genoma provavelmente não abrirão em 1-2-3 por causa dos tamanhos das folhas. No interesse da transparência, devo admitir que eu anteriormente trabalhou no Excel na equipe principal calc, então eu pode ser tendenciosa ...
Chris Rae

1

Então, o usuário pediu COMO compartilhar memória pela rede. Não se for uma boa ideia. Então, aqui está como você pode fazer isso.

Não estou dizendo que essa é uma boa ideia ou terá desempenho, mas deve funcionar.

  • Computador 1 = "mestre" - onde o código é executado
  • Computador 2 = "filho" - doador de memória

Estou assumindo que este não é o Windows Server onde você pode criar um ponto de montagem iSCSI.

Computador 1 etapas:

  1. Faça o download do ramdisk gratuito do Dataram: http://memory.dataram.com/products-and-services/software/ramdisk
  2. Crie um ramdisk e formate-o com NTFS - as instruções estão disponíveis no site
  3. No Disk Manager, crie um arquivo VHD no ramdisk formatado com NTFS
  4. Compartilhe o diretório raiz do Ramdisk pela rede com o SMB - Clique com o botão direito do mouse na unidade, compartilhe, compartilhe esta pasta

Computador 2 etapas:

  1. Mapeie a unidade compartilhada da unidade para uma unidade
  2. Monte o VHD que você criou na etapa 3 acima no Gerenciador de disco
  3. Mova o local do arquivo de página local para o VHD montado por meio de Mover arquivo de página do Windows
  4. Remova quaisquer outras entradas do arquivo de paginação.

Feito!

Advertências - você poderá ignorar o absurdo do VHD se o Windows permitir mover o arquivo de paginação para o compartilhamento de rede. Não há muitos exemplos disso online (por razões óbvias).

Pode ocorrer instabilidade completa do sistema ou algo completamente diferente. Ninguém realmente sabe o que aconteceria.


0

Como você menciona "RAM" para compartilhar na rede e não apenas "memória" de qualquer tipo, a resposta final será teoricamente sim, praticamente não.

Enquanto outros tipos de memória, como armazenamento e outros dados temporários, são compartilhados regularmente pela rede por vários propósitos e razões. Da mesma forma, pode ser tecnicamente possível compartilhar a RAM através da rede, se necessário. Mas o desempenho e o custo serão altos demais para serem possíveis no mundo real.

A RAM ou memória de acesso aleatório é usada por um sistema operacional como espaço de trabalho, para que muitas operações de leitura / gravação sejam executadas nele. Em um sistema médio, a capacidade de velocidade de dados com RAM é mais alta em comparação com outras partes. Se você colocar RAM em uma rede, precisará ter uma capacidade de transferência de dados em velocidade muito alta e o custo será altíssimo, mesmo se possível para alcançar tecnicamente. Com uma pequena parte do custo de uma atualização de velocidade da rede, você obterá RAM para sua máquina localmente.


0

Os aplicativos geralmente são executados na memória virtual, portanto, seus requisitos de memória virtual podem exceder a memória física disponível do sistema, sem nenhuma consequência além do desempenho. O sistema operacional simplesmente pagina a memória virtual em disco para liberar memória física conforme necessário em um determinado momento para uso ativo. Isso geralmente funciona bem para aplicativos com localidade razoável (a atividade a qualquer momento é um pouco focada em áreas limitadas no espaço de memória virtual do aplicativo). Se um aplicativo tiver uma localidade ruim (referenciando constantemente a memória em todo o espaço virtual), ele terá um desempenho ruim, a menos que toda a memória virtual possa ser acomodada na memória física (toda a memória virtual é residente).

Portanto, existem algumas possibilidades aqui:

  • Se o aplicativo simplesmente tiver uma área ocupada grande, mas uma boa localidade, você poderá executá-lo no computador disponível; o desempenho pode ser aceitável, pode ou não melhorar visivelmente em um computador com mais memória.
  • Se a localidade for ruim, você pode achar que ele será executado no computador disponível de qualquer maneira, apenas muito pouco. (Este parece ser o seu caso)
  • Atualize a unidade de disco magnético (presumida) para uma unidade de estado sólido (elas são significativamente mais rápidas)
  • Adicione memória ao computador que você tem disponível (se possível)
  • Pode ser necessário encontrar um computador que tenha mais memória e executá-lo nele.
  • Melhore o aplicativo para que ele tenha uma área virtual menor ou melhor localidade (se você está ou está associado ao autor do aplicativo).

A idéia de usar memória em um computador remoto é basicamente criar um arquivo de paginação em rede . Em teoria, ele pode funcionar, mas, na prática, o desempenho será muito melhor se o arquivo de paginação estiver local no computador (seu próprio disco rígido) devido à largura de banda e latência da rede. Não importa se o sistema remoto está hospedando o arquivo de paginação na memória ou no disco, o gargalo (o mais importante limitador de desempenho) será a rede. Isso será especialmente verdade na Internet, mas também será verdade mesmo se o computador remoto estiver adjacente na mesma LAN.


O Windows não permitirá um arquivo de paginação em uma unidade de rede; portanto, mesmo que seja rápido o suficiente, isso não pode ser feito.
Jamie Hanrahan

@JamieHanrahan Aparentemente, você pode alterar a configuração diretamente no registro. Gostaria de saber se eles excluíram alguns detalhes, já que as unidades de rede são por usuário no Windows. Eu também suspeito que isso irá quebrar após uma reinicialização.
ivan_pozdeev

11
No entanto, é uma péssima ideia, e é por isso que a interface do usuário a impede. As conexões de rede não são confiáveis ​​o suficiente para serem paginadas. Lembre-se de que muitos dados do kernel (pool paginado) podem ser paginados. Se não estiver acessível, mesmo por um período muito curto, o sistema operacional falhará.
Jamie Hanrahan

0

Isso realmente depende de que tipo de aplicativo é e para que tipo de memória RAM é usada.

Por exemplo, muitos aplicativos da Web podem usar RAM pela rede conectando-se a um memcachedservidor. Isso permitirá armazenar dados em cache (e outros dados que devem ser rápidos para acessar) em outro computador com muita RAM.

Claro que isso é específico do aplicativo e precisa de um aplicativo que possa usar o memcached. Isso não ajudará você a abrir uma segunda instância de folga, pois um navegador não suporta o uso de um back-end de cache.


-1

Em vez de compartilhar a RAM, basta codificar esse aplicativo para criar um arquivo .exe filho , que será executado no PC em rede e faça o mesmo nesse computador.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.