La réponse courte:
Définissez votre fichier d'échange sur:
round(sqrt(RAM))
si vous n'utilisez pas l' hibernation
RAM+round(sqrt(RAM))
si vous utilisez l' hibernation
Réglez votre swappiness
à 10 sur un 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 ce que vous verrez constamment cité.
Ce minimum a été repoussé à l'âge de pierre quand j'étais adolescent et les dinosaures parcouraient encore la Terre et parce que la RAM était tout simplement trop chère et que vous aviez absolument besoin de cet espace d'échange pour pouvoir accomplir quoi que ce soit.
Le maximum a été fixé à ce moment-là en raison de rendements décroissants: il est tout simplement trop lent d'avoir à échanger autant de mémoire car l'accès au disque dur est un facteur 1000 plus lent que la RAM: bon en cas d'urgence, mais pas vraiment bon pour un usage quotidien! À l'époque, lorsque vous manquiez d'espace de swap, il était temps d'ajouter plus de RAM! (ce qui est toujours vrai aujourd'hui).
Dans le présent:
Si vous n'utilisez pas l'hibernation et que votre mémoire dépasse 1 Go, la nouvelle règle de base est round(sqrt(RAM))
où se RAM
trouve évidemment votre taille de RAM en Go et sqrt
la racine carrée. :-)
Si vous utilisez l'hibernation, vous devez pouvoir échanger la totalité de la quantité de RAM + RAM déjà échangée sur le disque, ainsi la formule devient: RAM+round(sqrt(RAM))
La règle des rendements décroissants s'applique toujours aujourd'hui au maximum, mais à moins de tester votre utilisation réelle, la prise de 2xRAM est juste un gaspillage d'espace disque , alors n'utilisez pas le maximum à moins que vous ne manquiez d'espace de swap en utilisant les autres méthodologies .
Tous ces éléments ensemble vous donnent le tableau suivant: (3 dernières colonnes indiquant l'espace de swap)
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 particulier est différent!
Conseil de pro: allouez toujours SWAP au début d'un disque dur car les têtes doivent se déplacer moins à l'intérieur du disque.
Oui: sur les SSD, peu importe où vous localisez la zone de swap car ils utilisent le tunnel quantique au lieu de déplacer les têtes et les SSD modernes utilisent 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":
Exécutez simplement:
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 qui utilise le plus d'espace de swap 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 ne permute que lorsque vous en avez vraiment besoin . Ubuntu a été optimisé pour permuter tôt pour une utilisation sur le serveur, mais sur votre client, vous voulez éditer cette énorme image brute de 250 mégapixels gimp
pour être rapide , donc régler votre swappiness
à 10 empêchera le noyau de permuter trop tôt, tout en s'assurant qu'il ne le fasse pas '' t échanger trop tard:
Si vous avez un sysctl.conf
fichier,
sudo nano /etc/sysctl.conf
OU
Si vous avez un sysctl.d
répertoire mais pas de sysctl.conf
fichier, créez un nouveau fichier:
sudo nano /etc/sysctl.d/35_swap.conf
et dans les deux cas 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+ Enteren nano) et exécutez a:
sysctl --system
pour recharger le paramètre ou adopter l'approche Window $ et redémarrer ... :-)