O aumento do tamanho da partição swap aumentará a memória que pode ser usada por um programa?

1

Eu tenho um programa que requer muita memória. Tanto que o malloc falha quando o sistema fica sem memória.

Eu não me importo se a sobrecarga para troca de páginas dentro e fora do disco é muito alta - eu só quero que o programa seja executado. Então, é possível que, aumentando suficientemente o tamanho da partição de troca, o erro de falta de memória possa ser evitado, fazendo-se efetivamente mais memória disponível?

    
por AnkurVj 01.09.2011 / 08:21

3 respostas

3

A função malloc () geralmente aloca a memória virtual da memória heap . Mesmo que você não tenha especificado um sistema operacional nem uma linguagem de programação nem uma versão da biblioteca de tempo de execução, assumirei que sua versão de malloc () não aloca memória física. Portanto, adicionar mais memória física ou aumentar o espaço de troca pode não eliminar o erro de falta de memória que você vê em malloc ().

Para uma solução, você precisa determinar se o seu programa está excedendo a quantidade de memória (virtual) alocada ou se o sistema está realmente ficando sem páginas de memória. "Quando o Linux fica sem memória" (ou esta cópia ) explica como malloc () aloca memória (virtual), as duas maneiras de obter uma condição de falta de memória e como determinar qual. Observe que a disponibilidade de páginas de memória é uma combinação complexa de tamanho de memória física, tamanho de espaço de troca, uso de memória e carga de processo.

    
por 01.09.2011 / 09:46
1

Bem, não. Não aumenta a sua memória - apenas significa que o seu sistema operacional pode mover coisas que não são de uso imediato para liberar memória. Isso não terá nenhuma diferença em termos de desempenho, mas se o software em questão não estiver usando ativamente a memória, seu sistema poderá trocar a memória RAM em seu swap para usar em outras coisas.

Você pode querer tentar criar e usar um arquivo de swap, ao contrário de uma partição swap para ver se a adição de swap funciona.

Você também pode tentar limitar (embora possa ter consequências) a memória que o software usa com ulimit.

Cargas de swap não são um substituto para a memória física - você terá que adicionar mais memória, ou descobrir por que seu programa precisa de muita memória e consertá-lo.

    
por 01.09.2011 / 08:38
0

A memória física é, e só é, os chips de memória dentro do gabinete do seu computador. O arquivo de troca é usado quando você não tem memória física suficiente. Aumentar o tamanho do arquivo de troca ajudará a evitar erros de falta de memória, mas eu não recomendo. Ter muito arquivo de troca disponível dará ao seu computador um senso de capacidade irracional e provavelmente fará com que ele diminua a velocidade ao usar a maior parte do arquivo de paginação.

A melhor solução é comprar mais chips de memória. Isso fará tudo funcionar um pouco melhor.

Se você não se importa em perguntar, qual é o seu aplicativo que consome tanta memória?

    
por 01.09.2011 / 08:38