Quando abro um aplicativo com uso intensivo de RAM (VirtualBox definido com 2 GB de RAM), geralmente é usado algum espaço de troca, dependendo do que mais tenho aberto no momento.
No entanto, quando eu fechei o último aplicativo, os 2 GB de RAM são liberados, mas o mesmo uso de espaço de troca permanece.
Por exemplo, agora, cerca de duas horas depois de fechar o VirtualBox, tenho 1,6 GB de RAM livre e ainda 770 MB em troca.
Como posso dizer ao Ubuntu para parar de usar essa troca e voltar a usar a RAM?
performance
swap
ram-usage
jfoucher
fonte
fonte
Respostas:
Só porque o swap é alocado, não significa que ele esteja sendo 'usado'. Embora programas como o monitor do sistema e o topo mostrem parte do seu espaço de troca sendo alocado (no seu exemplo 770 MB), isso não significa que o sistema esteja ativamente trocando in / out.
Para descobrir se alguma coisa está sendo trocada, você pode usar o
vmstat
comando Deixe-o em execução por alguns segundos para se acalmar e observar assi
colunas (swapin) eso
(swapout). Se nada está acontecendo, não há razão para se preocupar.Aqui está o resultado da execução
vmstat 1
, onde você pode ver minha máquina não está trocando nada.No entanto, aqui em
top
você pode ver, tenho espaço de troca alocado: -fonte
O kernel do Linux subjacente ao Ubuntu "trocará" automaticamente essas páginas do disco para a RAM, conforme necessário, então, em geral, eu diria apenas para que isso aconteça naturalmente.
No entanto, se você realmente sentir que precisa forçá-lo, (posso ver um cenário em que você gostaria de saber que o sistema responderá mais tarde), você pode momentaneamente desativar e reativar a troca
OU alternativamente como uma única linha
Tenha cuidado ao fazer isso, pois você pode tornar seu sistema instável, especialmente se ele já estiver com pouca RAM.
fonte
Você também pode definir o valor "swappiness" a partir do padrão de 60, dessa forma, a troca não crescerá tão grande para começar. Por que o padrão de remessa é definido como 60 quando o valor recomendado é 10 me deixa perplexo. No Ubuntu SwapFAQ :
Alterando esse valor para 10 ou até 0, você pode adicionar um aumento de velocidade significativo e perceptível a um sistema antigo com uma unidade lenta. Definir esse valor como 0 não desativa a troca para o kernel Linux 3.4 e abaixo, mas com 3.5 ou superior, você deve usar o valor 1 se quiser mantê-lo na configuração mais baixa *.
Não vejo razão para não definir isso como 0, pois qualquer coisa que atinja o disco é mais lenta que a RAM. Eu tenho 8 núcleos virtuais, um SSD rápido e 8 GB de memória e meu swap está definido como 0. A partir desse momento, tenho 3 máquinas virtuais em execução, meu uso de memória é 7,1 de 7,7 GB, meu swap usado é de apenas 576 KB de 952MB e todos os sistemas estão funcionando sem problemas!
No Ubuntu SwapFAQ :
Abaixo estão as instruções básicas para verificar a troca, esvaziar sua troca e alterar a troca para 0:
Para verificar o valor da troca:
Para definir temporariamente a troca como 0 ( conforme sugerido pelo SpamapS ):
Isso esvaziará sua troca e transferirá toda a troca de volta para a memória. Primeiro, verifique se você tem memória suficiente disponível, visualizando a guia de recursos do gnome-system-monitor, sua memória livre deve ser maior que a troca usada. Esse processo pode demorar um pouco, use o gnome-system-monitor para monitorar e verificar o progresso.
Para definir o novo valor como 0:
Para ativar a troca novamente:
Para definir permanentemente a swappiness para 0:
sudoedit /etc/sysctl.conf
vm.swappiness = 0
sudo shutdown -r now
# reiniciar sistema* Com a versão 3.5+ do kernel, a configuração do swappiness para 0 desativa-o completamente e uma configuração de 1 é recomendada se você desejar o algoritmo de swappiness mais baixo. fonte: https://www.percona.com/blog/2014/04/28/oom-relation-vm-swappiness0-new-kernel/
fonte
Descobri que a troca de esvaziamento pode ajudar muito em sistemas com discos lentos e RAM limitada. Obviamente, como já mencionado, a maneira de fazer isso é executar
sudo swapoff -a; sudo swapon -a
. O problema aqui é que, se houver RAM insuficiente, isso causará todo tipo de problema.Eu escrevi um script que chamo
toggle_swap
que funcionou para mim nos últimos anos. Ele verifica se há RAM livre suficiente antes de realmente desativar a troca. Aqui está:fonte
Depois de mexer com swappiness por alguns dias, cheguei à conclusão de que o kernel deve ser deixado por conta própria. Ele sabe o que está fazendo e é otimizado para oferecer a melhor experiência.
A menos que você tenha realmente um bom motivo para querer o disco de volta, eu o deixaria em paz.
fonte
Não afeta o desempenho se o seu espaço de troca estiver ocupado. A única penalidade de desempenho é que as coisas estão entrando / saindo de swap. Se nada estiver sendo trocado / trocado, não será necessário se preocupar com nada.
fonte