Melhorando uso de memória com swappiness

swappiness

Swappiness é um valor que pode tornar o sistema mais propenso a utilizar o espaço de troca, liberando mais memória livre para caches. Pode melhorar a desempenho do sistema usando essa propriedade do kernel Linux, nesse artigo vou detalhar como funciona e como alterar o valor no Android ou em alguma distribuição Linux.

O que é espaço de troca ou swap?

Swap é uma área, criada no disco para mitigar o problema com a falta de memória.

Funciona da seguinte maneira: se você possui 512MB de memória e abre o Chrome e Adobe Photoshop, aplicativos que somados ocupam mais de 1GB, isso normalmente iria travar o seu computador ou mesmo você não conseguiria trabalhar com os aplicativos abertos. Tendo uma área de troca reservada no disco, a memória principal despeja parte do que não precisa ser executado para esse espaço, ou seja, para o swap, liberando a memória e assim podendo processar melhor os aplicativos.

Como funciona o swappiness?

Swappinnes é uma variável contida no código fonte do Linux, responsável por controlar a quantidade de memória RAM e swap que será utilizada.

Para essa variável é atribuído um valor fixo que para máquinas com pouca memória, 256MB, 512MB, este valor pode ser confortável ou aceito. O problema está em máquinas mais novas que possuem 1GB de memória para cima, essas máquinas sofrerão uma perda de desempenho considerável.

O valor dessa variável varia de 0 a 100, sendo o 0 sem utilização de swap, apenas em situações muito críticas; 100 a prioridade continua sendo a de utilizar a memória RAM, mas irá fazer swap em disco com mais constância, ou seja, mesmo que haja muita memória principal sobrando, o sistema, ainda assim, irá fazer swap.

Veja a tabela abaixo para ter uma configurar o valor de acordo com a quantidade de memória que possui.

Quantidade de Memória Valor da swappiness
256MB 60 (valor padrão)
512MB 40
1GB 20
Acima de 1GB 0

Qual valor da variável do swappiness esta usando?

Para descobrir qual o valor atual da sua swappiness, utilize o comando cat /proc/sys/vm/swappiness ou sysctl vm.swappiness, como nos exemplos abaixo:

Saída com o comando cat:

cat /proc/sys/vm/swappiness
40

Saída com o comando sysctl:

sysctl vm.swappiness
vm.swappiness = 40

Alterando o valor da sua swappiness

Primeiro, verifiquei se você já possui a seguinte linha: vm.swappiness = n, sendo “n” o valor da variável, no arquivo /etc/sysctl.conf.

cat /etc/sysctl.conf | grep swappiness
vm.swappiness = 40

Caso exista, edite o arquivo e altere para um valor adequado. Logo em seguida execute o comando echo ou sysclt, para atualizar o sistema com o novo valor:

sysctl -w vm.swappiness=n

Também pode utilizar esse:

echo n > /proc/sys/vm/swappiness