Oui.
Vous devez absolument toujours activer le swap, sauf s’il existe une raison très convaincante et prohibitive (par exemple, aucun disque, ou seulement un disque réseau présent). Si vous avez un échange dans l'ordre des tailles ridicules souvent recommandées (telles que, deux fois la quantité de RAM)? Eh bien non .
La raison en est que le swap n’est pas seulement utile lorsque vos applications consomment plus de mémoire qu’il n’ya de RAM physique (en fait, dans ce cas, le swap n’est pas très utile car il affecte sérieusement les performances). L’incitation principale au swap de nos jours n’est pas de convertir par magie 16 Go de RAM en 32 Go, mais bien d’utiliser plus efficacement la mémoire RAM installée et disponible.
Sur un ordinateur moderne, la RAM ne reste pas inutilisée. La RAM inutilisée est quelque chose que vous pourriez tout aussi bien ne pas avoir acheté et économisé à la place. Par conséquent, tout ce que vous chargez ou ce qui est autrement mappé en mémoire, tout ce qui pourrait éventuellement être réutilisé par quelqu'un à tout moment (limité par des contraintes de sécurité) est mis en cache. Très vite après le démarrage de la machine, toute la RAM physique aura été utilisée pour quelque chose .
À chaque fois que vous demandez une nouvelle page mémoire au système d'exploitation, le gestionnaire de mémoire doit prendre une décision éclairée:
- Purger une page du cache tampon
- Purger une page d'un mappage (en réalité le même que le n ° 1, sur la plupart des systèmes)
- Déplacez une page qui n'a pas été consultée depuis longtemps - de préférence jamais - pour la permuter (ceci pourrait même se produire de manière proactive, pas nécessairement au tout dernier moment)
- Tuez votre processus ou tuez un processus aléatoire (MOO)
- Panique du noyau
Les options 4 et 5 sont très indésirables et ne se produiront que si le système d'exploitation n'a absolument pas d'autre choix. Les options 1 et 2 signifient que vous jetez quelque chose dont vous aurez peut-être besoin bientôt. Cela a un impact négatif sur les performances.
L'option 3 signifie que vous déplacez quelque chose dont vous n'avez (probablement) pas besoin bientôt sur un stockage lent. C'est bien parce que maintenant, quelque chose dont vous avez besoin peut utiliser la mémoire vive rapide.
En supprimant l'option n ° 3, vous avez effectivement limité le système d'exploitation aux opérations n ° 1 ou n ° 2. Recharger une page à partir d'un disque revient à le recharger à partir d'un échange, sauf que le rechargement à partir d'un échange est généralement moins probable (en raison de la prise de décisions de pagination appropriées).
En d'autres termes, si vous désactivez le swap, vous ne gagnez rien, mais vous limitez le nombre d'options utiles du système d'exploitation pour traiter une requête en mémoire. Ce qui pourrait ne pas être , mais très probablement pourrait être un désavantage (et ne sera jamais un avantage).
[MODIFIER]
Le lecteur attentif de la mmap
page de manuel , en particulier la description de MAP_NORESERVE
, remarquera une autre bonne raison pour laquelle l’échange est en quelque sorte une nécessité même sur un système disposant de "suffisamment" de mémoire physique:
"Lorsque l’espace de swap n’est pas réservé, il est possible d’obtenir SIGSEGV lors d’une écriture si aucune mémoire physique n’est disponible."
- Attends un instant, qu'est-ce que ça veut dire?
Si vous mappez un fichier, vous pouvez accéder directement au contenu de celui-ci comme si le fichier était, par magie, dans l'espace d'adressage de votre programme. Pour un accès en lecture seule, le système d'exploitation n'a en principe besoin que d'une seule page de mémoire physique qu'il peut repeupler avec des données différentes chaque fois que vous accédez à une page virtuelle différente (pour des raisons d'efficacité, ce n'est évidemment pas ce qui est fait, mais en principe, vous pouvez accéder à une valeur de téraoctets de données avec une seule page de mémoire physique). Et si vous aussiécrire dans un mappage de fichier? Dans ce cas, le système d’exploitation doit disposer d’une page physique - ou d’un espace d’échange - prêt pour chaque page écrite. Il n'y a pas d'autre moyen de conserver les données jusqu'à ce que le processus d'écriture différée de pages modifiées ait fonctionné (ce qui peut prendre plusieurs secondes). Pour cette raison, le système d’exploitation réserve (mais ne s'engage jamais nécessairement) l’espace de permutation. Ainsi, si vous écrivez sur un mappage alors qu’il n’ya aucune page physique inutilisée (c’est une condition tout à fait possible et normale), vous ' re garanti que cela fonctionnera toujours.
Maintenant, que se passe-t-il s'il n'y a pas d'échange? Cela signifie qu'aucun échange ne peut être réservé (duh!), Et dès lors qu'il ne reste plus de pages physiques libres et que vous écrivez sur une page, vous recevez une agréable surprise dans la forme de votre processus de réception une faute de segmentation, et probablement être tué.
[/MODIFIER]
Cependant, la recommandation traditionnelle de convertir deux fois la taille de la RAM est absurde. Bien que l’espace disque soit bon marché, il n’a pas de sens d’attribuer autant d’échange. Le gaspillage de quelque chose qui est bon marché est toujours une perte de temps, et vous ne voulez absolument pas être continuellement en train d'échanger des ensembles de travail de plusieurs centaines de mégaoctets (ou plus).
Il n’existe pas de taille de swap "correcte" unique (il existe autant de tailles de "correct" que d'utilisateurs et d'opinions). J'attribue généralement un 512 Mo fixe, quelle que soit la taille de la RAM, ce qui fonctionne très bien pour moi. Le raisonnement derrière cela est que 512 Mo est quelque chose que vous pouvez toujours vous permettre, même sur un petit disque. D'autre part, l'ajout de plusieurs gigaoctets de swap n'est pas mieux. Vous ne les utiliserez pas, sauf en cas de problème grave.
Même sur un disque SSD, l’échange est beaucoup plus lent que la RAM (en raison de la bande passante et de la latence du bus), et même s’il est très acceptable de déplacer un élément à échanger qui ne sera probablement plus nécessaire (c’est-à-dire que vous ne serez probablement plus nécessaire). en le remplaçant de nouveau pour que votre pool de pages disponibles soit effectivement élargi gratuitement), si vous avez vraiment besoin de quantités considérables d'échange (c'est-à-dire si vous avez une application qui utilise, par exemple, un jeu de données de 50 Go), vous êtes quasiment perdu.
Une fois que votre ordinateur commence à échanger des gigaoctets de pages, tout est analysé. Donc, pour la plupart des gens (y compris moi), ce n’est pas une option, et avoir autant d’échange n’a donc aucun sens.