Como posso desativar a troca permanentemente?

65

A troca deixa meu sistema lento e desativá-lo torna tudo mais suave. Eu tenho 3,5 GB de RAM.

Eu sei como desativar a troca entrando sudo swapoff -ano terminal, mas isso é apenas para a sessão atual, porque após uma troca de reinicialização, ela se liga novamente. Existe alguma maneira de desativar a troca permanentemente?

Alex Li
fonte
2
AFAIK, a troca é usada para hibernação. Apenas sayin
DanMan
11
Sim, é, mas ainda pode ser usado. Eu tenho um pequeno script que monta a partição swap quando o sistema entra em hibernação e desmonta quando volta. O arquivo de troca não precisa estar ativo nesse meio tempo.
animaletdesequia
Simplificando swapoff -a em /etc/rc.local e esquecer isso ...;)
user264467
11
@ user264467: é bastante contra-intuitivo deixar o swap ativado apenas para desativá-lo a cada reinicialização, é muito mais limpo desativá-lo permanentemente.
karatedog

Respostas:

119

Posso sugerir uma abordagem mais segura? Você nunca sabe quando a troca pode salvá-lo de travar. Embora a troca realmente diminua a velocidade do seu computador, se você usar um programa que consome toda a sua RAM, a capacidade de trocar pode salvá-lo de uma reinicialização completa. Quando o computador começar a trocar, você notará e poderá matar o aplicativo ofensivo.

Portanto, em vez de desativar completamente a troca, verifique se o seu sistema operacional é muito raro. Isso é controlado pela vm.swappinessconfiguração em /etc/sysctl.conf. A configuração padrão do Ubuntu é, 60se bem me lembro, o que é demais para a maioria das situações e fará com que você comece a trocar mesmo enquanto a RAM ainda estiver disponível. Se você reduzir esse valor, poderá manter a linha de segurança de troca enquanto o usa apenas para emergências. Então, abra o arquivo:

sudo nano /etc/sysctl.conf

E adicione esta linha a ela:

vm.swappiness=10

Se isso ainda for demais, altere 10 para 1. Agora, depois de reiniciar, você só trocará quando for absolutamente necessário e você pode simplesmente esquecê-lo.

terdon
fonte
Adoro mudar swappines, e não faço isso há anos. Obrigado pela lembrança. sudo voto positivo!
Darth Egrégio
16
Apenas para adicionar ao argumento 'abordagem mais segura': Quando você não tem permuta e o sistema fica sem memória, o assassino Linux OOM (Out Of Memory) é chamado. Isso seleciona um processo com base em uma pontuação de 'badness' e, em seguida, ... mata (termina, fecha) sem chance do aplicativo salvar suas alterações, limpar etc. Assim, se você desativar o swap e ficar sem memória, você corre muito bem o risco de perder o trabalho se processos importantes obtiverem baixa pontuação aos olhos do assassino da OOM. Portanto, você deve desativar o swap apenas se tiver certeza de que nunca ficará sem memória.
Reid
5
@ Valeu ressaltar que, obviamente, a mesma coisa acontecerá se você ficar sem espaço de troca também.
o0 '.
11
Na verdade, isso não responde à pergunta. Desabilitar completamente a troca pode fazer muito sentido em um sistema com 16 GB ou 32 GB de RAM. Alguns GB extras de swap não serão benéficos no caso de aplicativos que consomem memória, enquanto uma grande quantidade de swap (por exemplo, 20 GB) ocuparia muito espaço no disco rígido / SSD. Além disso, hibernar com 32 GB de RAM não é divertido .
jmiserez
7
Para algumas configurações, assim que você fica sem memória RAM física e começa a trocar, o sistema começa a "sugar lama" e fica inutilizável. Sim, em teoria, você pode entrar e matar o agressor, mas quando leva mais de 20 minutos para mudar o foco na interface do usuário e ainda mais para obter um prompt de senha via SSH, o OOMing acaba sendo a melhor opção (seguida de reinicie, seguido por entrar e corrigir o problema).
BCS
46

Encontre a linha em / etc / fstab referente à troca e comente-a. A minha é assim:

UUID=6880a28d-a9dc-4bfb-ba47-0876b50e96b3 /               ext4    errors=remount-ro 0       1
UUID=7350e6f2-e3a7-4d80-9a95-8741c7db118f /home           ext4    defaults        0       2
UUID=E2E26AD1E26AAA0D /media/windows  ntfs    defaults,umask=007,gid=46 0       0

# Swap a usb extern (3.7 GB):
#/dev/sdb1 none swap sw 0 0

Você pode editar este arquivo com o gedit. Faça o backup primeiro, apenas no caso de:

sudo cp /etc/fstab /etc/fstab_backup
gksu gedit /etc/fstab

Basta adicionar # ao início da linha onde está o swap e reiniciar o computador.

OU

Experimente a maneira pela linha de comando de comentar a entrada de troca no /etc/fstabarquivo,

sudo sed -i.bak '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
animaletdesequia
fonte
Recebo esta quando digitogksu gedit /etc/fstab # /etc/fstab: static file system information. # # Use 'blkid' to print the universally unique identifier for a # device; this may be used with UUID= as a more robust way to name devices # that works even if disks are added and removed. See fstab(5). # # <file system> <mount point> <type> <options> <dump> <pass> /host/ubuntu/disks/root.disk / ext4 loop,errors=remount-ro 0 1 /host/ubuntu/disks/swap.disk none swap loop,sw 0 0
Alex Li
11
Então, faça o que ele está dizendo. Comente a primeira linha que se refere a "swap". : P
cHao
13

Apenas exclua a entrada (ou comente usando # na frente da linha) do fstab e reinicie. Procure a linha com a palavra "swap" nela.

sudo nano /etc/fstab
mdalacu
fonte
10
Esse também funcionaria, mas acho melhor comentar a linha do que removê-la completamente, caso você queira reverter as alterações.
animaletdesequia
11
Eu editei minha postagem.
mdalacu
11

Errado .. se o systemd encontrar uma partição SWAP em qualquer unidade, ela será montada automaticamente. Estranho que ninguém tenha mencionado systemd. A solução é bem simples de qualquer maneira; Para desativar permanentemente a troca, você deve:

  1. swapoff -a
  2. edite o / etc / fstab e comente as entradas de troca, se presentes.
  3. run: sudo systemctl mask dev-sdXX.swap (onde XX é a partição swap. Também é útil para todas as partições possíveis, para que, se houver uma partição swap em qualquer outra unidade, ela não seja montada)

Paz fora.

Zibri
fonte
número 3 para a vitória !!
oneklc 9/10