Como limitar o uso de swap?

Como limitar o uso de swap?

Quero que meu computador hiberne automaticamente quando o no-break mudar para a bateria, por isso preciso de espaço livre suficiente para troca a qualquer momento. Mas se eu ativar a partição swap, mesmo antes da hibernação, ela poderá ser ocupada por páginas de memória.

A única solução que encontrei foi configurar /proc/sys/vm/swappinesse 0desabilitar completamente a paginação. Mas não é a melhor opção.

É possível especificar o uso máximo de swap em bytes?

Responder1

cat /proc/sys/vm/swappiness
0

Significa que a troca será evitada, a menos que seja absolutamente necessário (a RAM está cheia). A troca assume valores entre 0-100.

Para tornar a alteração permanente, atualize /etc/sysctl.confe reinicie a máquina:

vm.swappiness = 10

Você não pode configurar a troca em bytes, mas troca 10significa que a troca será usada quando a RAM estiver 90% cheia. O tamanho da área de troca é fornecido durante a instalação do sistema; você precisará redimensionar as partições para alterar isso. A quantidade ocupada na troca depende dos requisitos de alocação de RAM do software que você está executando.

Responder2

A única solução que encontrei é usar um swaparquivoque você pode criar em qualquer tamanho, digamos alguns gigabytes, e depois montá-lo como sua área de troca.

head -c 2G /dev/urandom > your.filename

Você pode modificar o código abaixo, que criará um arquivo de troca criptografado usando uma chave aleatória. É claro que você precisará definir a $filenamevariável onde quer que esteja seu arquivo de troca.

filename="????"
head -c 4k /dev/urandom | sha512sum | cryptsetup open --type plain $filename /dev/mapper/swap
cryptsetup status /dev/mapper/swap
mkswap /dev/mapper/swap
swapon /dev/mapper/swap
sysctl vm.swappiness=0

Editar: se você deseja que a troca fique acessível após a reinicialização, basta substituir a chave aleatória por uma chave conhecida.

informação relacionada