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)
Définissez votre fichier d'échange sur:
round(sqrt(RAM))
si vous ne pas utiliser hibernationRAM+round(sqrt(RAM))
si vous tilisez hibernationDéfinissez votre swappiness
sur 10 sur un ordinateur de bureau mais pas sur un serveur!
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).
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))
où RAM
correspond évidemment à votre RAM taille en Go.
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))
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.
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 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 ... : -)
Nécessité de l'échange
Swap est utile pour 3 raisons:
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.
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.
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.