web-dev-qa-db-fra.com

Combien de swap devrais-je prendre pour 1 Go à 8 To de RAM à partir de 14.04 ou plus?

Je vais installer 64 bits 14.04 sur une nouvelle machine avec quelque chose comme 1 à peut-être 128 Go RAM et plus encore RAM plus tard. Combien d'espace dois-je allouer à la partition de swap?

Et surtout: POURQUOI ces recommandations pour ces nombres?

(Aucune des réponses existantes ici et ici expliquer aucun des pourquoi et sont un peu datées si nous regardons 1GB ou RAM et plus)

11
Tim

La réponse courte:

Définissez votre fichier d'échange sur:

  • round(sqrt(RAM)) si vous ne pas utiliser hibernation
  • RAM+round(sqrt(RAM)) si vous tilisez hibernation

Définissez votre swappiness sur 10 sur un ordinateur de bureau mais pas sur un serveur!

La réponse longue:

Autrefois:

La règle de base utilisée depuis 25 ans est un minimum de 1xRAM et un maximum de 2xRAM , c'est donc ce que vous verrez constamment cité .

Ce minimum a été reporté à l'âge de pierre quand j'étais adolescent et les dinosaures parcouraient encore la Terre et parce que RAM était tout simplement trop cher et que vous avez absolument besoin de cet espace d'échange pour pouvoir accomplir n'importe quoi.

Le maximum a été fixé à ce moment-là à cause des rendements décroissants: il est tout simplement trop lent pour échanger autant de mémoire, car l'accès au disque dur est 1000 fois plus lent que la mémoire vive: bon en cas d'urgence, mais pas vraiment pour un usage quotidien! À l'époque, lorsque vous manquiez d'espace d'échange, il était temps d'ajouter plus de RAM! (ce qui est encore vrai aujourd'hui).

Dans le présent:

  1. Si vous n'utilisez pas le mode hibernation et que votre mémoire est supérieure à 1 Go, la nouvelle règle est round(sqrt(RAM))RAM correspond évidemment à votre RAM taille en Go.

  2. Si vous utilisez le mode veille prolongée, vous devez pouvoir échanger la quantité totale de RAM + déjà échangé RAM sur le disque. La formule devient ainsi: RAM+round(sqrt(RAM))

  3. La règle des rendements décroissants reste valable aujourd'hui pour le maximum, mais , sauf si vous testez votre utilisation réelle, prendre 2xRAM n'est qu'un gaspillage d'espace disque , alors don N'utilisez pas le maximum sauf si vous manquez d'espace swap en utilisant les autres méthodes .

Tous ces éléments réunis vous donnent le tableau suivant: (3 dernières colonnes indiquant un espace d'échange)

    RAM   No hibernation    With Hibernation    Maximum
    1GB              1GB                 2GB        2GB
    2GB              1GB                 3GB        4GB
    3GB              2GB                 5GB        6GB
    4GB              2GB                 6GB        8GB
    5GB              2GB                 7GB       10GB
    6GB              2GB                 8GB       12GB
    8GB              3GB                11GB       16GB
   12GB              3GB                15GB       24GB
   16GB              4GB                20GB       32GB
   24GB              5GB                29GB       48GB
   32GB              6GB                38GB       64GB
   64GB              8GB                72GB      128GB
  128GB             11GB               139GB      256GB
  256GB             16GB               272GB      512GB
  512GB             23GB               535GB        1TB
    1TB             32GB              1056GB        2TB
    2TB             46GB              2094GB        4TB
    4TB             64GB              4160GB        8TB
    8TB             91GB              8283GB       16TB

Ce qui précède est juste une règle de base; ce n'est pas la loi de la gravité!
Vous pouvez enfreindre cette règle (contrairement à la loi de la gravité) si votre cas d'utilisation est différent!

Astuce: Allouez toujours SWAP au début d'un disque dur, car les têtes doivent être moins bougées à l'intérieur du disque.
Oui: Sur les disques SSD, l'emplacement de la zone d'échange n'a plus d'importance, car ils utilisent le tunnel quantique au lieu des têtes mobiles et des disques SSD modernes. utiliser toutes leurs cellules de mémoire (même l’espace non alloué) pour empêcher la dégradation quantique.

Comment tester si votre utilisation du swap est différente de la règle "générique":

Il suffit d'exécuter:

for szFile in /proc/*/status ; do 
  awk '/VmSwap|Name/{printf $2 "\t" $3}END{ print "" }' $szFile 
done | sort --key 2 --numeric --reverse | more

qui vous donnera une liste de tous les programmes en cours qui sont échangés (avec celui utilisant le plus d'espace d'échange en haut)

Si vous utilisez plus de quelques Ko: redimensionnez à plus que le minimum, sinon, ne vous embêtez pas ...

Si vous êtes sur un serveur, arrêtez de lire maintenant: vous êtes prêt!


Si vous êtes sur un client de bureau/ordinateur portable (pas un serveur), vous voulez que votre interface graphique soit aussi réactive que possible et n’échangez que lorsque vous en avez vraiment besoin . Ubuntu a été optimisé pour un échange anticipé avec le serveur , mais sur votre client, vous souhaitez modifier rapidement cette image brute de 250 mégapixels dans gimp, aussi, si vous définissez votre swappiness sur 10, le noyau ne sera pas échangé trop tôt, tout en évitant qu'il ne soit échangé trop tard:

Sudo nano /etc/sysctl.conf

et ajouter:

# change "swappiness" from default 60 to 10 
# (theoretically only swap when RAM usage reaches around 80 or 90 percent)
vm.swappiness = 10

à la fin du fichier, enregistrez le fichier (Ctrl+XY+Enter en nano) et exécutez a:

sysctl --system

pour recharger le paramètre ou adopter l'approche Window $ et redémarrer ... : -)

27
Fabby

Nécessité de l'échange

Swap est utile pour 3 raisons:

  1. Suppression de l'encombrement de la RAM. Depuis le article sur kernel.org:

    "Un nombre important de pages référencées par un processus au début de sa vie ne peut être utilisé que pour l'initialisation puis ne plus jamais être utilisé. Il est préférable de permuter ces pages et de créer plus de mémoires tampon de disque que de les laisser résidentes et inutilisées"

    En d'autres termes, les données stockées dans RAM ne peuvent être utiles que lorsqu'un processus a été démarré (comme le processus de démarrage), puis y réside simplement dans la RAM, encombrant l'espace qui peut être utilisé à des fins plus optimales.

  2. Cela augmente la quantité de mémoire que les processus peuvent utiliser. Ceci est bien compris. Vous ne voulez pas que le système manque de mémoire et tombe en panne par manque de mémoire. Pour cette raison spécifique, swap doit exister et servir de protection.

  3. Veille prolongée: lorsqu'un ordinateur est en veille prolongée, le contenu de RAM est placé sur le disque.

Montant de l'échange

Connaissant l'objectif de l'échange et, en fonction du RAM de votre ordinateur, vous pouvez choisir une taille d'échange adaptée à vos besoins. Il n'y a pas de directives spécifiques ( seulement des règles de base que vous pouvez utiliser pour personnaliser la taille de votre swap en fonction de votre système .

Par exemple, linux.com recommande:

La règle générale est la suivante: 1) pour un système de bureau, utilisez un espace d’échange de double mémoire système, car il vous permettra d’exécuter un grand nombre d’applications (dont certaines peuvent être inactives et facilement échangées), ce qui rend more RAM disponible pour les applications actives; 2) pour un serveur, disposez d’une quantité moins importante d’échanges (par exemple, la moitié de la mémoire physique) afin de disposer d’une certaine souplesse pour permuter en cas de besoin, mais surveillez la quantité d’espace de swap utilisée et mettez à niveau votre RAM nécessaire; 3) pour les ordinateurs de bureau plus anciens (avec seulement 128 Mo), utilisez autant d’espace de swap que vous pouvez en économiser, même jusqu’à 1 Go.

D'après mon expérience personnelle, voici ce que je ferais:

Si vous utilisez une machine de 1 à 2 Go ne nécessitant pas de veille prolongée, vous pouvez disposer d’un espace d’échange de 1 à 2 Go pour un usage occasionnel. Mon PC avec 14.04 Ubuntu a 1 Go de RAM et 2 Go d’échange. Le montant du swap ne dépasse jamais les 800 Mo. J'utilise mon ordinateur uniquement pour naviguer sur le Web et créer des scripts.

Avec un PC qui a plus de 2 Go et que vous n'avez pas besoin de passer en veille prolongée, vous pouvez conserver la permutation de 512 Mo à 1 Go. J'ai un ordinateur portable avec 15.04 que je n'hiberne jamais et qui a un fichier d'échange ( pas une partition ) de 512 MB. RAM lui-même fait 6 Go mais ne dépasse jamais les 2 ou 3 Go. Encore une fois: utilisation occasionnelle.

Cosmoscalibur et Fabby ont déjà abordé la question de l'échange au cas où vous auriez besoin d'hiberner, alors je ne m'étendrai pas trop sur ce sujet. Mon humble avis est le suivant:

Si vous envisagez de passer en hibernation, le contenu de RAM devra être remplacé. Par conséquent, vous en aurez besoin au moins à la même taille que votre RAM.

6