Combien d'espace SWAP sur un système de 2 à 4 Go?

53

Comment devrais-je décider de la taille de ma permutation sur une nouvelle machine Linux (Debian) disposant de 2 à 4 Go de RAM? Ai-je vraiment besoin d'espace d'échange?

Traverser
la source
3
2 à 4 Go ne sont plus très mémoire 5 ans plus tard.
Fifi finance
@ KasperSouren Non, ce n'est pas. Était une bonne quantité à l'époque.
C. Ross

Réponses:

54

Il existe de nombreuses façons de déterminer la quantité de swap utilisée par une machine. Les suggestions courantes utilisent des formules basées sur la RAM, telles que 2 x RAM, 1,5 x RAM, 1 x RAM, 0,75 x RAM et 0,5 x RAM. Plusieurs fois, les formules varient en fonction de la quantité de RAM (une boîte avec 1 Go de RAM peut utiliser un échange de 2 x RAM (2 Go), tandis qu'une boîte avec 16 Go de mémoire vive peut utiliser un échange de 0,5 x RAM (8 Go).

Une autre chose à considérer est l'utilisation de la boîte. Si un grand nombre de processus s'exécutant simultanément doivent être exécutés sur la boîte, mais qu'un nombre important d'entre eux resteront inactifs pendant une période donnée, il est logique d'ajouter un échange supplémentaire. Si vous exécutez un petit nombre de processus critiques, il est logique d'ajouter des conversions supplémentaires (cela peut sembler contre-intuitif, mais je vais vous expliquer dans une minute). Si vous utilisez une boîte en tant que bureau, il est logique d’ajouter un échange supplémentaire.

Quant à savoir si vous devez inclure l'échange, oui, vous devriez le faire. Vous devez toujours inclure un espace d'échange sauf si vous savez vraiment ce que vous faites et vous avez vraiment une bonne raison de le faire.

Vous voyez, dans le fonctionnement du noyau Linux, le swap n'est pas utilisé uniquement lorsque vous avez épuisé toute la mémoire physique. Le noyau Linux prendra les applications qui ne sont pas actives (en veille) et après un certain temps, déplacera l'application pour la permuter à partir de la mémoire réelle. Le résultat est que lorsque vous avez besoin de cette application, il y aura un délai momentané (généralement juste une seconde ou deux) pendant que la mémoire de l'application est relue de swap en RAM. Et c'est généralement une bonne chose.

Cela vous permet de mettre les applications inactives en veille, ce qui donne à vos applications actives un accès à de la mémoire RAM supplémentaire. De plus, Linux utilisera toute mémoire RAM disponible (non allouée) sur une machine en tant que cache de disque, accélérant et rendant la plupart des activités de disque (lentes) plus rapides. L'échange de processus inactifs vous donne plus de cache disque et accélère votre machine.

Enfin, avouons-le, l’espace disque est bon marché. Vraiment pas cher. Il n'y a vraiment aucune bonne raison de ne pas glisser un espace (relativement) réduit pour un échange. Si j'utilisais 2 Go à 4 Go de RAM sur une machine, je configurerais probablement mon espace d'échange de manière à ce qu'il soit au moins égal à la RAM. Si c’était moins de 2 Go de RAM, je choisirais toujours au moins 2 Go d’échange.

UPDATE: Comme un excellent commentaire mentionné (et j'ai oublié d'inclure), si vous utilisez un ordinateur portable ou un ordinateur de bureau que vous voudrez peut-être mettre en mode "Veille prolongée" (Suspend to Disk), alors vous voulez toujours au moins autant échangez comme vous avez la mémoire. L'espace de permutation sera utilisé pour stocker le contenu de la RAM dans l'ordinateur pendant qu'il est en veille.

Christopher Cashell
la source
22
Excellente réponse, mais tu n'as oublié qu'une chose. S'il s'agit d'un ordinateur de bureau ou d'un ordinateur portable, assurez-vous que le swap est au moins égal à la RAM dont vous disposez pour pouvoir mettre en veille prolongée votre ordinateur. Cela enregistre la RAM à échanger.
Sander Marechal
4
Très bonne publication. Sander m'a battu pour la seule chose que j'allais ajouter. Si vous avez un élément supplémentaire, si vous avez plusieurs lecteurs, placer votre permutation sur un lecteur qui ne possède pas le reste de vos systèmes de fichiers actifs peut améliorer les performances car il n’aura pas autant de conflits.
GreenKiwi
comme je l'ai découvert l' été dernier, vous devez disposer d'un espace d'échange important si vous utilisez Java
warren
Si l'utilisateur dispose d'une quantité de RAM bien supérieure à celle qu'il utilisera réellement (16 Go / 32 Go) sur un ordinateur de bureau 100% en disponibilité (sans veille prolongée), suggérez-vous toujours de demander que les processus soient mis en SWAP? Il me semble qu’il serait avantageux de tout laisser sur la RAM, à moins que vous ne vous approchiez de sa capacité.
earthmeLon
1
@earthmeLon - Je suggérerais d'avoir encore un peu d'échange. Les disques étant gros et bon marché de nos jours, la perte de quelques Go d'espace disque à permuter est négligeable. Avoir de l'espace de swap vous donne une police d'assurance au cas où quelque chose consomme plus de RAM que prévu.
Christopher Cashell
17

Red Hat recommande la formule suivante pour les serveurs avec beaucoup de RAM:

if MEM < 2GB then SWAP = MEM*2 else SWAP = MEM+2GB

Si votre système dispose de 1 Go de RAM, votre échange serait de 2 Go, pour 16 Go, il serait de 18 Go.

PEra
la source
3
Lien pertinent du guide de stockage RHEL6: docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/6/html/…
Ophidian le
Un serveur serait assez bloqué s’il utilisait systématiquement 1 Go d’échange car son RAM serait saturé.
user2284570
12

Réponse tardive, et je pense que cela a été assez couvert dans la réponse sélectionnée, mais il y a quelques informations utiles et faciles à digérer dans la réponse fournie par @ssapkota ici (copie / collée ci-dessous).

Voici une très bonne recommandation de RedHat: Espace de permutation de systèmes recommandé

Un extrait du même lien:

Dans les années précédentes, la quantité recommandée d'espace de swap augmentait linéairement avec la quantité de mémoire RAM du système. Mais comme la quantité de mémoire dans les systèmes modernes a augmenté pour atteindre des centaines de giga-octets, il est maintenant reconnu que la quantité d'espace d'échange requise par un système dépend de la charge de travail mémoire exécutée sur ce système. Toutefois, étant donné que l’espace de swap est généralement désigné au moment de l’installation et qu’il peut être difficile de déterminer à l’avance la charge de travail de la mémoire d’un système , nous vous recommandons de déterminer l’échange de système à l’aide du tableau suivant.

Tableau actuel (à partir de décembre 2012):

Amount of RAM in the system   Recommended swap space         Recommended swap space 
                                                             if allowing for hibernation
---------------------------   ----------------------------   ---------------------------
2GB of RAM or less            2 times the amount of RAM      3 times the amount of RAM
2GB to 8GB of RAM             Equal to the amount of RAM     2 times the amount of RAM
8GB to 64GB of RAM            0.5 times the amount of RAM    1.5 times the amount of RAM
64GB of RAM or more           4GB of swap space              No extra space needed

Table originale:

Amount of RAM in the System     Recommended Amount of Swap Space
4GB of RAM or less              a minimum of 2GB of swap space
4GB to 16GB of RAM              a minimum of 4GB of swap space
16GB to 64GB of RAM             a minimum of 8GB of swap space
64GB to 256GB of RAM            a minimum of 16GB of swap space
256GB to 512GB of RAM           a minimum of 32GB of swap space 
ubiquibacon
la source
8

Cela dépend beaucoup de ce que vous faites avec. Avec la charge de travail appropriée, vous n'avez pas réellement besoin d'espace d'échange, que vous disposiez de 16 Mo ou 16384 Mo de RAM; En effet, la plupart des périphériques Linux embarqués fonctionnent sans aucun (vers quoi changeraient-ils?)

Compte tenu des prix en RAM, vous n'allez probablement pas utiliser le swap pour un calcul actif. Alors, que reste-t-il?

  1. Sur les ordinateurs de bureau, l’espace de swap est utilisé pour la suspension sur disque. Cet espace d'échange doit être d'environ 1 × RAM, en fonction de la compression du contenu de la mémoire.
  2. Autoriser la suppression de tâches inactives de la RAM pour libérer de la place pour le cache disque
  3. Idem, mais pour permettre aux processus actifs de l'utiliser à la place pour tas / pile

(2) et (3) dépendent fortement de la charge de travail. Sur mes ordinateurs de bureau, je peux facilement utiliser 4 Go + sur (2), en laissant vims, xterms, etc. en cours d'exécution sur d'autres ordinateurs de bureau.

Sur la plupart des serveurs que je fais fonctionner, il n’ya pratiquement jamais rien échangé et 1 à 2 Go d’échange (quelle que soit la quantité de RAM) semble correct.

derobert
la source
L’espace de swap est également utilisé si vous utilisez quelque chose qui utilise la machine virtuelle Java: ne modifiez pas et oubliez d’allouer de l’espace de swap si vous utilisez Java!
Warren
@warren: J'ai des instances de Tomcat, chacune dépassant la 3GiB, mais n'utilisant pas encore de swap (l'une d'elles utilise d'énormes pages et ne peut donc pas être échangée). Vous ne savez pas de quoi vous parlez.
derobert
il y a un bogue semi-obscur dans la machine virtuelle Java lié aux paramètres de mémoire minimum et maximum que j'ai rencontré l'été dernier ( antipaucity.com/?p=984 ). TL; DR - chaque fois que la machine virtuelle demande plus de mémoire à l'OS, elle écrit pour échanger, récupère son nouveau bloc de mémoire, puis se lit dans la RAM pour que sa mémoire soit contiguë
warren
@warren: OK, je lance OpenJDK sur 64 bits, avec Xmx et Xms les mêmes. Mais je ne sais pas comment java se forcerait à échanger, la seule fermeture systémique serait madvise, mais cela ne manquera pas… ce bogue parle de manquer de mémoire pendant le nettoyage de la mémoire. L'ajout de swap empêche cela, bien sûr, mais l'ajout de RAM le serait également. Peut-être que cela est dû au 32 bits avec PAE?
Derobert
cela se produit également avec la JVM 64 bits: si vous avez défini les mêmes valeurs Xmset que vous Xmxne les définissez pas, elles risquent de vous faire mal: cela nous a posé de gros problèmes pendant plus de deux semaines jusqu'à ce que nous ayons enfin trouvé la
solution
4

Cela dépend des services et des applications que vous prévoyez d’exécuter. Vous pouvez surveiller votre utilisation de la mémoire avec free -m et ajuster votre partition de swap en conséquence.

Voici une discussion intéressante sur le sujet. Personnellement (et après avoir lu cette discussion), je laisserais encore environ 1 Go pour le swap.

Ivan
la source
2

Je ne peux pas parler directement à Debian, mais je sais que lorsque vous dépassez la barre des 2 Go de RAM, l'équation 2xRAM d'origine change, généralement jusqu'à 1xRAM. Je pense qu'une fois que vous avez atteint 16 Go de RAM, la suggestion passe à 0,75 x RAM.

Bien sûr, j’ai trouvé cela vrai pour Solaris. Il s’agit en fait de la métrique utilisée pour les installations Oracle. YMMV dépend donc des applications que vous allez exécuter.

Milner
la source
2

Je fais toujours autant de swap (au moins) que de RAM. Juste au cas où je veux hiberner la machine un jour. Peut travailler avec moins, mais ne pourrait pas non plus.

L’espace disque dur n’est pas cher ces jours-ci, c’est pourquoi je n'hésite pas à donner de l’espace swap.

Martin C.
la source
2

L'espace de permutation peut servir de "bourrage" lorsque vous manqueriez immédiatement de mémoire.

Lorsqu'un processus consomme toute la mémoire vive disponible, la machine s'exécutera très lentement, mais vous pourrez généralement récupérer. Il sera également plus facile de voir quel processus est à l'origine du problème.

bleu étoile
la source
2
C’est une arme à double tranchant: sur mon ordinateur personnel, j’avais retiré le swap lorsque j’utilisais Firefox 2.x, car il consommait lentement toute la mémoire et, lorsque la machine a été échangée, il est devenu complètement inutilisable. sans échange, le processus firefox a été simplement fermé par le noyau :)
wazoox
1

Au fil des ans, j'ai suivi la règle voulant que pour les machines Windows, vous ayez autant de swap que de RAM ... Sur Novell, nous allions utiliser le swap plus haut si nous avions plus d'imprimantes ... Pour Linux, la règle et la pratique ont été de 1 Go. échangez pour chaque 2 Go de RAM que vous avez. Et vous le placez à l'avant du disque pour qu'il soit accessible plus rapidement.

  • S'il s'agit d'une passerelle de courrier / spam, j'utilise le double échange en RAM.
  • Si c'est un serveur *, je n'utilise pas du tout l'échange
  • s'il s'agit d'un serveur LAMP, la règle 1/2 est en vigueur.

  • Le kilométrage varie en fonction de l'application et de l'utilisation de l'interface graphique.

Thomas Denton
la source
En fait, je pense que le swap au milieu du disque serait le plus rapidement accessible.
Eddie
0

Je crée un swap de 1 Go et achète plus de RAM à la seconde où il est utilisé. Vous n'avez pas vraiment besoin de permuter sur les ordinateurs modernes, la RAM est tellement bon marché.

Adam Gibbins
la source
0

Pourquoi utilisez-vous le système? Personnellement, je n'utilise aucun échange. Si quelque chose utilise un jeton de 512 Mo ou quelque chose simplement pour que les choses puissent être mises sur le disque si elles résident mais restent inactives pendant de longues périodes.

Mike McQuaid
la source
0

Je viens d'utiliser un petit échange de jeton (généralement 256 Mo, mais j'ai même fait 64 Mo) parce que la configuration d'un système avec zéro échange nécessite une configuration spéciale.

L'espace disque n'est pas cher, mais slooooooooow. Dès que le système commence à permuter, les performances sont nulles. Et la RAM n'est plus si chère.

Croyez-moi, achetez un processeur légèrement plus lent et achetez plus de RAM. 2,8 GHz au lieu de 3,0 GHz vous permettra d'économiser assez d'argent pour acheter au moins 2 Go de RAM supplémentaires.


la source