Quelle doit être la taille de la partition de swap?

10

depuis quelques années, j'ai lu que c'est une bonne idée de créer une partition de swap ayant le double espace de ma RAM. s'applique-t-il encore aujourd'hui? ou ce n'est plus nécessaire?

J'ai un serveur avec 8 Gio de RAM et je dois créer une partition de swap, et je me demandais si 16 Gio était trop.

cd1
la source

Réponses:

11

Sur les grands systèmes, 8 Go de RAM physique, nous allouons généralement 2 Go de swap. Il s'agit de serveurs de bases de données chargés exécutant Oracle ou PostgreSQL. Pendant des années, je n'ai jamais vu de swap même sous une charge lourde. La charge lourde est d'environ 100 à 150 utilisateurs effectuant environ 10 000 lectures SQL et peut-être 2 500 écritures par minute.

Nous ajustons également le niveau de swapiness pour décourager l'échange et nous désactivons les processus inutiles que nous savons que nous n'avons pas besoin d'exécuter. (Builds Linux personnalisés)

Comme Eddie, dit ci-dessus, 1x RAM physique est une bonne règle de base pour tout ce qui est inférieur à 4 Go. Je fais des builds Linux personnalisés pour une grande entreprise Fortune-500 et ce sont les choses que nous faisons généralement, et nous n'avons eu aucun problème au cours des 5 dernières années que j'ai consultées pour eux.

Sur les systèmes plus grands: Linux 64 bits avec 32 Go et 64 Go de RAM, ce sont nos serveurs de base de données Oracle, et nous gardons généralement 2 Go de swap pour des choses comme Eddie le souligne ci-dessus - les processus inactifs seront déplacés pour swap en fonction de vos paramètres de swapiness.

Kilo
la source
5

Une question apparemment intemporelle. Les bons amis de SlashDot en ont discuté il y a quelque temps. Découvrez ce qu'ils avaient à dire:

  • L'espace disque n'est pas un problème avec les disques durs modernes, 16 Go est toujours une quantité insignifiante pour les lecteurs TB modernes.
  • Cependant, un espace d'échange important peut être un problème en cas de mauvaise gestion de la mémoire:

Si je regarde un film de 4 Go sur une période de 2 heures, de nombreux gestionnaires de mémoire décideront que tenter de mettre en cache toutes ces données pourrait être une bonne chose. À mi-chemin du film, il pensera que tous ces autres programmes en cours d'exécution n'ont pas été utilisés pendant une heure et peuvent être échangés en toute sécurité en faveur de la mise en cache d'une plus grande partie de ce fichier de 4 Go. Le résultat final est que la moitié de vos programmes sont échangés après avoir regardé un film, ce qui entraîne un système lent qui détruit tout le fichier d'échange.

  • En fin de compte, la bonne décision devrait provenir des besoins en mémoire, pas des formules approximatives:

Si vous disposez de [suffisamment de RAM pour exécuter les programmes que vous souhaitez utiliser quotidiennement], il n'y a aucune raison de jamais utiliser swap.

KPWINC
la source
3

Voir la réponse Combien d'espace SWAP sur un système à haute mémoire? pour quelques conseils, bien que votre question soit plus générale. Les opinions varient considérablement à ce sujet, mais généralement les personnes avec 1 Gio de RAM ou plus semblent fonctionner sans swap entièrement, ou avec 1xmemory comme swap.

Même si vous ne prévoyez pas d'utiliser autant de RAM que vous forcerez le swap à se produire, il y a une certaine valeur à avoir au moins 1xmemory comme swap: cela permet au système d'exploitation d'échanger certaines choses qui ne devraient pas être utilisées immédiatement afin qu'il puisse utiliser cette mémoire pour le disque ou les tampons d'E / S, par exemple.

Eddie
la source
3

Si vous vous attendez à ce que votre système puisse hiberner puis reprendre avec succès :-), il est probablement préférable d'allouer plus d'espace pour la partition de swap que la quantité de RAM physique

dmityugov
la source
3

Mon fournisseur VPS ne fournit même pas d'espace de swap pour les serveurs, et le mien fonctionne bien sans lui.

La plupart des serveurs que je vois quotidiennement au travail sont également sans échange.

Éditer

Cependant - si vous exécutez une JVM, assurez- vous d'avoir au moins autant d'espace de swap que vous en aurez jamais défini en -Xmxraison d'un problème connu avec la JVM.

En bref, lorsque la JVM a besoin de plus de mémoire qu'elle n'en utilise actuellement (mais n'a toujours pas atteint son Xmx), elle:

  • s'échange sur le disque
  • alloue une nouvelle mémoire
  • se lit dans la RAM

Cela signifie que si vous échangez est inférieur au vôtre Xmx, il peut échouer.

Pour citer le rapport de bogue

La meilleure chose à faire est d'augmenter la taille du swap sur les machines rencontrant cette erreur.

J'essaie de jouer en toute sécurité lorsque je travaille avec des machines virtuelles Java et de définir le swap sur une mémoire physique égale.

garenne
la source
2

Compte tenu de la vitesse des disques durs modernes, les gros swaps ne sont qu'une invitation à la raclée. Peut-être que les SSD inverseront cette tendance, mais avec peut-être une vitesse de transfert maximale de 300 Mo / s pour un disque, l'échange de 2 à 4 Go va prendre un bon moment.

Dans l'ancien temps (c.-à-d. Linux 1.2, i386, SunOS 4.x), vous disposiez peut-être de 5 à 15 Mo de processus démon en cours d'exécution et de 4 à 32 Mo de RAM et donc de démons qui étaient bloqués en attendant I / O pourrait être échangé sans aucun impact réel sur les performances ... Et ils feraient mieux puisque les programmes utilisateur pourraient n'avoir que 2-3 Mo de RAM disponibles. L'échange avait beaucoup de sens.

Maintenant dans mon environnement, la plupart des serveurs ont des charges de travail lourdes à mémoire unique et la RAM peut être estimée de façon assez précise ... Le swap est là pour les urgences, les processus de fuite, etc.

L' exception concerne les ordinateurs portables et les postes de travail qui pourraient dormir. De nombreux systèmes d'exploitation utiliseront la zone de swap pour enregistrer l'image suspendue et dans ces cas, le swap doit être plus grand que la mémoire physique. Sous Linux avec suspend2 / tuxonice, vous devriez avoir 2xRAM en taille d'échange pour prendre en charge la suspension sur disque.

Alexandre Carmel-Veilleux
la source
Autrefois, System V 3.2 et les versions antérieures utilisaient un swap de taille exactement RAM. Moins était cassé et plus gaspillé, car ce n'était pas un système de mémoire virtuelle aussi sophistiqué que BSD.
kmarsh
2

De nos jours, si vous utilisez un serveur de 32 Go ou 64 Go, 4 Go de swap pour la valeur par défaut est un montant sûr. Tout ce qui est plus grand que cela est exagéré avec autant de RAM physique disponible.

Edward_178118
la source
1

Idéalement, vous n'utiliserez pas du tout le swap, et le truc 2x RAM est vraiment quelque chose qui reste des années passées.

Si cela vous inquiète, je ferais quelque chose comme:

Max Memory Requirement - Physical Ram = Swap

Je pense que 16 Go semblent beaucoup trop gros, personnellement.

WerkkreW
la source
1

Autrefois, vous vouliez autant que possible, la consommation de mémoire dans les noyaux modernes * nix appartient au passé. Le vieil adage était "2x votre mémoire". Entre 2 Go ou la quantité d'espace que la machine a en mémoire vive de nos jours, vous serez proche de l'endroit où vous devez être.

XTZ
la source
1

Le swap est également utilisé pour stocker les vidages après la panique du noyau. Si vous êtes intéressé par l'analyse de ces vidages et n'avez pas spécifié une autre destination de vidage, votre swap doit être au moins aussi grand que votre RAM.

Benoit
la source
0

Il n'y a pas d'algorithme unique qui vous indique la quantité de swap dont vous avez besoin. Dans la pratique, vous devez placer votre système sous la charge la plus importante que vous envisagez de prendre en charge et découvrir la quantité de ressources qu'il utilise réellement. Définissez votre fichier d'échange en conséquence.

Pour la RAM physique, vous devez placer votre système sous la charge de «croisière» réelle que vous prévoyez de gérer et acheter en conséquence. Pour les systèmes à faible latence, vous ne devez pas du tout permuter à l'intérieur de votre charge de croisière (ce n'est pas la même chose que de ne pas avoir de swap alloué ou même en cours d'utilisation). , mais dans l'ensemble, vous devriez avoir le moins d'échanges possible.

Bien sûr, vous pouvez échanger les performances pour un prix inférieur.

Christophe
la source