Como configurar a alternância no Linux Memory Management?

11

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. Qual é a configuração padrão e como configurá-la para melhorar o desempenho geral ?

GAD3R
fonte
3
Depois de alterar a swappiness, achei útil esvaziar a troca swapoff -apara começar de novo. serverfault.com/a/354384/203035
Nemo

Respostas:

10

O kernel do Linux fornece uma configuração ajustável que controla a troca

$ cat /proc/sys/vm/swappiness
60  

aberto /etc/sysctl.confcomo raiz. Em seguida, altere ou adicione esta linha ao arquivo:

vm.swappiness = 10

para alterar temporariamente o valor de swappiness, tente este comando:

$ echo 50 > /proc/sys/vm/swappiness
Mongrel
fonte
1
Como ele responde "como configurar isso para melhorar o desempenho geral?"
techraf
A troca é necessária quando o desempenho do sistema é lento, porque ocorre quando a RAM utilizável está acabando, o que atrasaria o sistema (talvez até mesmo aplicativos com falha), mesmo que você não tivesse a troca. Portanto, para simplificar as coisas, a troca acontece porque o sistema está ficando atolado, e não o contrário - e, em alguns casos, pode salvar o dia.
Mongrel
2
Você também não precisa que as sudo sysctl -p /etc/sysctl.confalterações tenham efeito?
Pkaramol
11

De Swappiness, Wikipedia

Você pode definir esse valor em um arquivo virtual/proc/sys/vm/swappiness O valor mencionado estará decidindo como o espaço de troca deve ser usado. Abaixo estão os valores com suas intenções.

vm.swappiness = 0   # Swap is disabled. In earlier versions, this meant that the kernel would swap only to avoid an out of memory condition, but in later versions this is achieved by setting to 1.
vm.swappiness = 1   # Kernel version 3.5 and over, as well as kernel version 2.6.32-303 and over: Minimum amount of swapping without disabling it entirely.
vm.swappiness = 10  # This value is sometimes recommended to improve performance when sufficient memory exists in a system, this value *10* could be considered for the performance being expected. 
vm.swappiness = 60  # The default value.
vm.swappiness = 100 # The kernel will swap aggressively.

Embora na verdade dependa também da necessidade, se a memória física disponível for suficiente, pode não haver uma grande necessidade de espaço de troca, nos termos de Layman, não haverá a necessidade de alterar o valor padrão de 60.

Keyshov Borate
fonte
@techraf atualizou a resposta.
Keyshov Borate
1
Em VMs, aconselho, no entanto, alterá-lo para 10, apenas por precaução.
Rui F Ribeiro
2

No RedHat / CentOS, o valor padrão é 60.
"A fim de melhorar o desempenho" é um termo muito amplo. Qual desempenho você está tentando melhorar?

Você tem problemas com pouca memória?
Seu sistema troca quando ainda há memória livre / memória em cache?

Na RAM livre do Linux = RAM desperdiçada, quase toda a memória livre é usada para caches de disco.
Há casos com swappiness = 60 em que as páginas na memória são movidas para SWAP se não tiverem sido acessadas por períodos prolongados, independentemente da RAM não alocada.
Mover algumas páginas de memória para SWAP não é uma coisa ruim.

Por favor, lance um pouco mais de luz sobre o seu problema para obter respostas mais detalhadas.

fireto
fonte