Linux - Use disco como RAM

Linux - Use disco como RAM

Tenho uma VM e nela um processo que consome muita memória (~200GB). Algum tipo de banco de dados na memória. Preciso executá-lo em um laptop padrão e não consigo recompilá-lo ou ver o código.

Adicionei 256 GB de espaço de troca com pri=32767 em /etc/fstab e vm.swappiness=100 em /etc/sysctl.conf mas ele simplesmente não carrega o banco de dados com rapidez suficiente (preso em 4 GB após 24h; não carrega não parece crescer mais).

(EDITAR: clonei a máquina, mudei a RAM de 256GB para 4GB, adicionei disco rígido, formatei como ext4 e criei um arquivo de swap de tamanho 256GB (dd -> mkswap -> swapon...))

Por que parou de crescer?

Eu suspeito que a lentidão é causada por ser um espaço de troca, portanto o sistema operacional está ocupado "trocando" (carga -> espaço insuficiente -> decidindo o que trocar ...).

Estou procurando uma maneira de "adicionar mais memória", mas fazer com que o sistema operacional a trate como memória normal. Ou talvez minha configuração de swap esteja errada?

Eu sei que isso prejudicará o desempenho, mas é aceitável para mim.

A VM é CentOS 6.

Responder1

Você já tentou vários arquivos de troca? 4 GB parece que você está atingindo o limite de tamanho de arquivo para um sistema de 32 bits.

Encontrei este tutorial emcentos.orgque descreve de forma bastante clara como criar arquivos de troca manualmente.

Para adicionar um arquivo de troca:

  1. Determine o tamanho do novo arquivo de troca em megabytes e multiplique por 1.024 para determinar o número de blocos. Por exemplo, o tamanho do bloco de um arquivo de troca de 64 MB é 65536.
  2. Em um prompt do shell como root, digite o seguinte comando com contagem igual ao tamanho de bloco desejado:

dd if=/dev/zero of=/swapfile bs=1024 count=65536

  1. Configure o arquivo de troca com o comando:

mkswap /swapfile

  1. Para ativar o arquivo de troca imediatamente, mas não automaticamente durante a inicialização:

swapon /swapfile

  1. Para habilitá-lo durante a inicialização, edite /etc/fstab para incluir a seguinte entrada:

/swapfile swap swap defaults 0 0

Na próxima vez que o sistema for inicializado, ele ativará o novo arquivo de troca.

Depois de adicionar o novo arquivo de troca e habilitá-lo, verifique se ele está habilitado visualizando a saída do comando cat /proc/swapsou free.

Responder2

Finalmente consegui converter os dados em um banco de dados SQLite e escrevihttps://github.com/assafmo/SQLiteQueryServerpara poder acessá-lo remotamente. Funcionou perfeitamente e foi super rápido.

informação relacionada