Como eu configuro a swappiness?

345

Preciso de uma maneira passo a passo, simples e fácil de configurar a troca.

One Zero
fonte
17
Um linersudo bash -c "echo 'vm.swappiness = 15' >> /etc/sysctl.conf"
redanimalwar
8
@redanimalwar, você também precisa executar sudo sysctl -ppara carregar o novo valor de swappiness do arquivo sysctl.conf, caso contrário, a alteração será aplicada na próxima reinicialização.
waldyrious

Respostas:

510

O kernel do Linux fornece uma configuração tweakable que controla com que freqüência o arquivo de troca é usado, chamado swappiness.

Uma configuração de troca de zero significa que o disco será evitado a menos que seja absolutamente necessário (você fica sem memória), enquanto uma configuração de troca de 100 significa que os programas serão trocados para o disco quase que instantaneamente.

O sistema Ubuntu vem com um padrão de 60, o que significa que o arquivo de troca será usado com bastante frequência se o uso de memória for cerca de metade da minha RAM. Você pode verificar o valor de swappiness do seu próprio sistema executando:

one@onezero:~$ cat /proc/sys/vm/swappiness
60

Como tenho 4 GB de RAM, gostaria de diminuir para 10 ou 15. O arquivo de troca será usado apenas quando meu uso de RAM for de 80 ou 90 %. Para alterar o valor de troca do sistema, abra /etc/sysctl.confcomo raiz . Em seguida, altere ou adicione esta linha ao arquivo:

vm.swappiness = 10

Reinicie para que a alteração entre em vigor.

Você também pode alterar o valor enquanto seu sistema ainda está em execução com:

sysctl vm.swappiness=10

Você também pode limpar sua troca executando swapoff -ae, em seguida, swapon -acomo root em vez de reiniciar para obter o mesmo efeito.

Para calcular sua fórmula de swap:

free -m (total) / 100 = A

A * 10

root@onezero:/home/one# free -m
             total       used       free     shared    buffers     cached
Mem:          3950       2262       1687          0        407        952
-/+ buffers/cache:        903       3047
Swap:         1953          0       1953

então o total é 3950/100 = 39,5 * 10 = 395

Então, o que isso significa é que, quando restarem 10% (395 MB) de memória RAM, começará a usar swap.


                                          Socorro . Ubuntu. Troca

                                           O que é swappiness

O parâmetro swappiness controla a tendência do kernel de mover processos para fora da memória física e para o disco de troca. Como os discos são muito mais lentos que a RAM, isso pode levar a tempos de resposta mais lentos para o sistema e aplicativos, se os processos forem muito agressivamente removidos da memória.

  • swappiness pode ter um valor entre 0 e 100.
  • swappiness=0:
    • Kernel versão 3.5 e mais recente: desativa a troca.
    • Versão do kernel anterior à 3.5: evita a troca de processos da memória física pelo maior tempo possível.
  • swappiness=1:
    • Kernel versão 3.5 ou superior: troca mínima sem desativá-lo completamente.
  • swappiness=100:
    • Diz ao kernel para trocar agressivamente processos da memória física e movê-los para trocar o cache.

Veja http://en.wikipedia.org/wiki/Swappiness .

A configuração padrão no Ubuntu é swappiness=60. Reduzir o valor padrão da troca provavelmente melhorará o desempenho geral de uma instalação típica da área de trabalho do Ubuntu. Um valor de swappiness=10é recomendado, mas fique à vontade para experimentar.


Exemplo

Começou a usar swap a 91% :

insira a descrição da imagem aqui Como eu configurei meu sistema & vm para usar a RAM em 90% , em 90% não houve troca.

Depois disso, abri alguns aplicativos como Firefox e Shutter, e ele começou a trocar porque o uso de RAM está acima de 90% .

One Zero
fonte
118
A troca de 100 não faz com que os programas sejam trocados imediatamente, nem um valor de 60 ou 90 significa que a troca é usada quando o ram está com 60 ou 90% de sua capacidade. É uma proporção de preferência para roubar páginas do cache e trocar coisas para liberar memória quando não há o suficiente. Um valor baixo prefere fortemente roubar páginas do cache e um valor alto prefere fortemente tentar trocar de página. A configuração só tem efeito quando a memória é (quase) toda usada e o kernel precisa escolher como liberar algumas.
13132 psusi
67
Você precisa salientar que a RAM que NÃO é ocupada pela execução de programas é usada como cache de disco ... então, diminuindo a troca, você aumenta a chance de um programa não ser trocado, mas ao mesmo tempo diminui o tamanho do cache do disco, o que pode tornar o acesso ao disco mais lento. Assim, os efeitos desta definição no desempenho real não são tão simples ... você é bem-vindo a experimentar, claro, mas eu suspeito que os padrões são definidos por pessoas que entendem o suficiente no assunto :)
Sergey
14
O @Sergey e a ironia disso é que aqueles com pouca RAM provavelmente tentam todos os truques possíveis para melhorar o desempenho e são mais propensos a ser as pessoas para quem 60 ou mais seria o melhor valor. Aqueles de nós que definimos para 10 porque temos toneladas de RAM não estão ganhando tanto quanto perderão se o fizerem.
Jon Hanna
6
@Liberdade_Ben: Veja linuxatemyram.com :)
Sergey
5
Apenas deixando uma discussão semelhante aqui - unix.stackexchange.com/questions/88693/…
Elijah Lynn