Est-il prudent de désactiver le swap de manière permanente?

54

Mon système devenait de plus en plus lent, en particulier lorsque j'utilisais des navigateurs tels que Firefox / Chromium et Virtual Machines. J'ai remarqué que j'avais au moins 3,2 Go de RAM libre (à l'aide du moniteur système Gnome) et qu'il n'y avait pas d'échange.

Ce que j’ai fait à présent est swapoff -aque les performances du système ont augmenté de 30%. Ma question est donc la suivante: l’utilisation est-elle sûre swapoff? Le redémarrage de mon PC sera-t-il sécurisé swapoff?

entrez la description de l'image ici

Un zéro
la source
1
Etes-vous sûr qu'Ubuntu utilise votre swap avant d'utiliser pleinement le ram? Quelle est la sortie avec free -m ? Désactiver le swap ne fera généralement pas de différence, car Ubuntu essaie d'utiliser le plus possible le ram, et il ne devrait pas arriver que le ram soit inutilisé et que le swap soit utilisé.
ste_kwr
2
Juste pour le moment, je n'ai aucun échange sur mon système de 8 Go avec un seul SSD.
Lekensteyn
3
Vous pouvez désactiver le swap, ce qui devrait être correct, ou ajuster la valeur de swappiness. Vous pouvez le trouver dans / proc / sys / vm / swappiness. Utilisez 'sysctl' pour un changement plus permanent. Une chose à noter est que l'hibernation doit être permutée. Je pense que dormir n'en a pas vraiment besoin, mais hiberner le fait.
Marky
@kniwor c'est ce que j'ai fait, après 2,5 Go de RAM ... il utilise le swap et je dois redémarrer puis mon système fonctionne correctement. & Quelque temps après 1 Go, mon système est devenu lent
One Zero
@ J'ai vérifié 5 à 6 fois
One Zero

Réponses:

94

Le noyau Linux fournit un paramètre ajustable qui contrôle la fréquence d'utilisation du fichier d'échange, appelé swappiness.

Un paramètre swappiness de zéro signifie que le disque sera évité sauf en cas d'absolue nécessité (mémoire insuffisante), tandis qu'un paramètre swappiness de 100 signifie que les programmes seront permutés presque instantanément sur le disque.

Le système Ubuntu est livré avec un défaut de 60, ce qui signifie que le fichier d'échange sera utilisé assez souvent si l'utilisation de la mémoire est environ la moitié de ma mémoire vive. Vous pouvez vérifier la valeur de swappiness de votre propre système en exécutant:

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

Comme je dispose de 4 Go de RAM, j'aimerais donc ramener ce chiffre à 10 ou 15. Le fichier d'échange ne sera alors utilisé que lorsque mon utilisation de RAM est d'environ 80 ou 90 %. Pour modifier la valeur de swappiness du système, ouvrez /etc/sysctl.conf as root. Ensuite, modifiez ou ajoutez cette ligne au fichier:

vm.swappiness = 10

Redémarrez pour que le changement prenne effet

Vous pouvez également modifier la valeur pendant que votre système est toujours en cours d'exécution

sysctl vm.swappiness=10

vous pouvez également effacer votre échange en exécutant swapoff -apuis en swapon -atant que root au lieu de redémarrer pour obtenir le même effet.

Pour calculer votre formule d'échange

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

le total est donc 3950/100 = 39,5 * 10 = 395

donc ce que cela signifie est que lorsque 10% 395 Mo de RAM sont partis, il commence à utiliser swapiness

Un zéro
la source
11
+1 Il s'agit d'un excellent guide de configuration de l'échange. Très bonne réponse. Vous pouvez même poster une nouvelle question demandant "Comment configurer swappiness" et copier cette réponse afin que les autres utilisateurs puissent la trouver plus facilement. Les gens qui viennent à cette question vont chercher des réponses "oui ou non", votre guide est un guide pratique pour ceux qui ont déjà choisi "oui"
Tom Brossman
1
@TomBrossman, je vous ai jeté
un
11
Ceci, tout en étant un guide utile, ne répond pas à la question. Le demandeur voulait savoir si c'était sûr ou non , pas comment le faire.
Fouric
2
@InkBlend encore plus étrange, cette non-réponse est par le demandeur.
underscore_d
En tout cas, merci beaucoup pour le tuyau. C'est un tout nouveau monde avec ce lappy Ubuntu.
Don Pflaster le
17

Probablement. Vous devriez lire la partie "Pourquoi ai-je besoin d’échanger?" De la page FAQ Ubuntu ici , et en juger par vous-même.

Si vous privilégiez la rapidité par rapport au filet de sécurité, vous devez le désactiver.

Si vous ne suspendez jamais sur le disque et que vous arrêtez et redémarrez toujours, vous pouvez le désactiver en toute sécurité.

Si vous avez beaucoup de RAM (vos 4 Go + machines virtuelles en fonctionnement est un appel proche), alors vous pouvez.

Pour moi, j'ai mon système d'exploitation sur un SSD, 8 Go de RAM et ne jamais suspendre. Je n'ai pas besoin d'échange, je ne l'ai jamais vu en cours d'utilisation, et je viens de l'installer par défaut.

En guise d'alternative, voici un ajustement à propos de: config pour Firefox de Lifehacker qui explique comment utiliser la RAM uniquement pour le cache du navigateur. Lisez la réfutation liée au bas de l'article avant de l'essayer.

Tom Brossman
la source
1

Non ce n'est pas sûr. La raison en est que, lorsque le système manque de mémoire vive et ne peut en échanger aucune, il risque de se figer sans autre possibilité de récupération qu'une réinitialisation matérielle. Il ne s'agit pas seulement de pouvoir suspendre ou non.
Source: mon 14.04 fait que.

Vous devez garder un minimum d'espace d'échange. Consultez la FAQ d'Ubuntu pour les nombres.

Przemek D
la source