Comment puis-je désactiver le swap de façon permanente?

65

Swap ralentit mon système et le désactiver rend le tout plus fluide. J'ai 3,5 Go de RAM.

Je sais comment désactiver l'échange en entrant sudo swapoff -adans le terminal, mais ce n'est que pour la session en cours, car après un redémarrage, l'échange se rallume. Est-il possible de désactiver le swap de manière permanente?

Alex Li
la source
2
Autant que je sache, l'échange est utilisé pour l'hibernation. Il suffit de dire
DanMan
1
Oui, c’est possible, mais on peut toujours l’utiliser. J'ai un petit script qui monte la partition d'échange lorsque le système passe en veille prolongée et la démonte à son retour. Le fichier d'échange n'a pas besoin d'être actif entre-temps.
animaletdesequia
Il suffit de mettre swapoff -a dans /etc/rc.local et d'oublier cela ...;)
user264467 le
1
@ user264467: il est tout à fait contre-intuitif de laisser le swap activé juste pour le désactiver à chaque redémarrage, il est beaucoup plus propre de le désactiver de façon permanente.
Karedog

Réponses:

119

Puis-je suggérer une approche plus sûre? Vous ne savez jamais quand l'échange peut vous empêcher de planter. Bien que l'échange permette effectivement de ralentir votre ordinateur, si vous utilisez un programme consommant toute votre mémoire vive, la possibilité de permuter peut vous éviter un redémarrage brutal. Lorsque l'ordinateur commence à permuter, vous remarquerez et serez en mesure de tuer l'application incriminée.

Par conséquent, au lieu de désactiver complètement le swap, assurez-vous que votre SE ne permute que très rarement. Ceci est contrôlé par la vm.swappinessmise en /etc/sysctl.conf. Le paramètre par défaut d’Ubuntu est, 60si je me souviens bien, ce qui est trop pour la plupart des situations et vous permettra de commencer à permuter même lorsque la RAM est encore disponible. Si vous réduisez cette valeur, vous pourrez conserver la ligne de sécurité d'échange tout en ne l'utilisant qu'en cas d'urgence. Alors, ouvrez le fichier:

sudo nano /etc/sysctl.conf

Et ajoutez-y cette ligne:

vm.swappiness=10

Si cela reste trop important, changez le 10 en 1. Maintenant, après le redémarrage, vous permuterez uniquement en cas d'absolue nécessité et vous pourrez simplement l'oublier.

terdon
la source
J'adore changer de swappine, et je ne l'ai pas fait depuis des années. Merci pour le rappel. sudo vote positif turdon!
Dark Egregious
16
Juste pour ajouter à l'argument 'approche plus sûre': lorsque vous n'avez pas d'échange et que le système manque de mémoire, le tueur Linux OOM (Out Of Memory) est appelé. Cela sélectionne un processus basé sur un score de «méchanceté», puis ... le tue (se termine, se ferme) sans que l’application enregistre ses modifications, nettoie, etc. Ainsi, si vous désactivez l’échange et le stock Au risque de perdre du travail, vous risquez fort de perdre du travail si des processus importants ont un impact négatif sur les yeux du meurtrier. Vous ne devez donc désactiver le swap que si vous êtes sûr de ne jamais manquer de mémoire.
Reid
5
@Reid mérite de souligner que, de toute évidence, la même chose se produira si vous manquez également d'espace swap.
o0 '.
11
Cela ne répond pas réellement à la question. Désactiver complètement le swap peut avoir beaucoup de sens sur un système de 16 Go ou 32 Go de RAM. Quelques Go supplémentaires de swap ne serviront à rien dans le cas d'applications gourmandes en mémoire, alors qu'une grande quantité de swap (par exemple 20 Go) occuperait beaucoup d'espace disque dur / SSD. Aussi, hiberner avec 32 Go de RAM n'est pas amusant .
Jmiserez
7
Pour certaines configurations, dès que vous manquez de RAM physique et que vous commencez à permuter, le système commence à "aspirer de la boue" et devient inutilisable. Oui, en théorie, vous pouvez entrer et tuer le délinquant, mais quand il faut plus de 20 minutes pour changer de focus dans l'interface utilisateur et encore plus longtemps pour obtenir une invite de mot de passe via SSH, le MOO finit par être la meilleure option (suivi d'un disque dur). redémarrez, puis entrez et résolvez le problème).
BCS
47

Recherchez la ligne dans / etc / fstab faisant référence à swap et commentez-la. Le mien est comme ça:

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

Vous pouvez éditer ce fichier avec gedit. Sauvegardez-le d'abord, juste au cas où:

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

Ajoutez simplement # au début de la ligne où se trouve swap et redémarrez l’ordinateur.

OU

Essayez un moyen en ligne de commande de commenter une entrée swap dans un /etc/fstabfichier,

sudo sed -i.bak '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
animaletdesequia
la source
Je comprends cela quand je tapegksu 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
1
Alors, fais ce qu'il dit. Mettez en commentaire la première ligne qui fait référence à "swap". : P
cHao
14

Supprimez simplement l'entrée (ou commentez-la en utilisant # devant la ligne) dans fstab et redémarrez. Recherchez la ligne contenant le mot "swap".

sudo nano /etc/fstab
Mdalacu
la source
10
Celui-ci fonctionnerait aussi, mais je pense qu'il vaut mieux commenter la ligne plutôt que de la supprimer complètement, juste au cas où vous voudriez annuler les modifications.
animaletdesequia
1
J'ai édité mon post.
mdalacu
11

Wrong .. si systemd trouve une partition SWAP sur n’importe quel lecteur, il le montera de toute façon automatiquement. Etrange que personne n'ait mentionné systemd. La solution est assez simple de toute façon; pour désactiver définitivement le swap, vous devez:

  1. swapoff -a
  2. éditez / etc / fstab et commentez toutes les entrées de swap si elles sont présentes.
  3. lancer: sudo systemctl mask dev-sdXX.swap (où XX est la partition de swap. Il est également utile de le faire pour toutes les partitions possibles afin que, s'il existe une partition de swap sur un autre lecteur, elle ne sera pas montée).

Paix dehors.

Zibri
la source
numéro 3 pour la victoire !!
Oneklc