Résumé
Une zone d'échange (appelée partition d'échange, fichier d'échange ou fichier de page) est simplement un mécanisme permettant d'augmenter la mémoire physique adressable par le système d'exploitation.
Si vous avez peu de RAM physique disponible et sur la machine d'aujourd'hui, je dirais si vous avez 4 Go de RAM ou moins. Ensuite, vous devriez probablement avoir un échange. Mais cela dépend de votre charge de travail et de la manière dont vous utilisez votre machine.
Si vous disposez de plus de 4 Go de RAM, il est fort probable que votre système n'utilise jamais l'échange. Donc, si le swap est activé ou non, cela ne changera pas beaucoup.
Bien que cela dépende d'autres facteurs, plus votre ordinateur fonctionnera longtemps, plus le système d'exploitation échangera vraisemblablement une petite partie inutilisée de la mémoire RAM contre un événement d'échange, même s'il reste apparemment beaucoup de place. Cependant, le système utilise souvent la RAM "libre" pour les tampons de fichiers et autres, et certaines charges de travail peuvent faire en sorte que votre tampon de fichiers utilise toute la RAM disponible.
Informations d'arrière-plan
De toute façon, que se passerait-il si vous désactiviez l'échange et que votre mémoire était complètement utilisée? Eh bien, la prochaine fois qu'une application demandera plus de mémoire (comme avec un malloc ou un realloc), elle recevra une erreur! S'il est correctement codé, l'application le détectera, mais le traitement d'une telle erreur et la fermeture du programme en douceur pourraient être un défi! Cependant, de nombreux développeurs ne testent pas l'allocation de mémoire réussie et l'application se bloque dès que cette mémoire non allouée va être utilisée. Il y a donc de fortes chances que l'application se bloque et que de nombreuses applications tombent en panne, car plusieurs applications s'exécutent généralement en même temps. J'espère que le noyau lui-même devrait être immunisé, mais d'après mon expérience, ce n'était pas toujours le cas.
Si vous avez un échange, vous aurez le même comportement , mais vous avez une limite plus élevée et il est donc probable que vous n'atteignez pas cette limite.
J'ai personnellement 2 machines avec 8 et 16 Go de RAM. Mon utilisation personnelle de ces machines ne devrait jamais m'amener à utiliser toute cette mémoire vive (aujourd'hui! Peut-être dans quelques années, cela pourrait être différent). La seule raison pour laquelle je voudrais atteindre les limites physiques de la RAM est qu'un processus est devenu frauduleux et consomme toute la RAM. En l'absence de swap est un soulagement, le noyau va rapidement tuer le processus non autorisé dès qu'il atteint la limite de RAM. Si vous avez un échange, vous vivrez une expérience douloureuse (peut-être pas sur SSD ...), car votre système échangera et échangera et deviendra parfois totalement insensible jusqu'à ce que votre noyau tue le coupable!
Conseille
Vous ne devriez pas avoir peur que des gens vous disent que quelque chose de terriblement mauvais pourrait arriver si vous supprimez l'échange. Si vous le faites, votre espace d'adressage physique sera réduit, comme si vous passiez de 4 Go de RAM à 2 Go. Feriez-vous une telle chose? Ensuite, vous ne devriez pas retirer le swap. Vous pouvez cependant décider de le limiter, et ce serait sage .
Si on pense que sa charge de travail l’amène à utiliser plus de RAM physique ou plus que la RAM physique disponible, ou s’il faut beaucoup d’E / S (lecture / écriture sur disques), l’échange doit être conservé.
Lorsqu'un échange doit être conservé, un utilisateur doit essayer de définir des limites à la quantité de mémoire qu'un processus peut utiliser. Sur un système Linux, on pourrait utiliser les limites de mémoire des groupes de contrôle pour éviter que certains processus ne deviennent incontrôlables. Je ne connais pas l'équivalent sous OS X, mais cela devrait être la solution.
Toutefois, si un utilisateur dispose de suffisamment de mémoire pour sa charge de travail, il peut désactiver le swap en toute sécurité ou le conserver. Cela ne changera pas beaucoup, même en termes de performances, car si le système n'utilise pas le swap, vous ne serez pas affecté par une baisse des performances (particulièrement visible sur un ancien disque dur rotatif, moins sur SSD).
Utiliser la même astuce que ci-dessus pour essayer de définir des limites de mémoire par processus ou groupe de processus est également bénéfique dans le cas où la RAM disponible est plus que suffisante.
Mon propre exemple
J'ai un vieux PC avec 1 Go de RAM, là j'ai un gros swap: 4 Go pour pouvoir exécuter Firefox et d'autres applications dessus. J'ai tendance à utiliser le moins d'applications possible (ou d'onglets dans Firefox) pour avoir une expérience utilisateur correcte.
J'ai un petit serveur avec 8 Go de RAM. Là, je connais exactement ma charge de travail et je ne veux pas que mon serveur ralentisse, car un processus est devenu malveillant et consomme toute la mémoire. Là, je n’ai aucune barrière imposant la mémoire swap et cgroup, ce qui empêche les applications ou les services de tomber en panne, mais pas le noyau. Btw, c'est une machine Linux.
Ensuite, j'ai mon Mac avec 16 Go de RAM. Je n'en suis pas le seul utilisateur, et cela ne nous dérangerait pas d'attendre lors du changement d'utilisateur. Là, nous avons un échange, il m'est difficile de planifier la charge de travail des autres utilisateurs de cet ordinateur. Même si je serais le seul à utiliser swap. J'utilise souvent plusieurs machines virtuelles et utilise des applications consommant de la mémoire, mais pas toutes en même temps. Par conséquent, je ne voudrais pas que le système d'exploitation permute en une application inutilisée pour pouvoir obtenir des E / S de disque plus rapides ou lancer une autre machine virtuelle. Jusqu'à présent, je n'ai pas vu cette machine échanger!