Tout ira bien même avec 1 Go (et probablement moins) de swap. Mon ordinateur de travail n'utilise généralement pas plus de 140 à 150 Mio. Un gigaoctet, c'est beaucoup de sur-approvisionnement pour cela.
À moins que vous ne calculiez des tâches nécessitant des jeux de données de plusieurs centaines de giga - octets et (celui-ci étant important!), L'accès aux données s'effectue de manière plus ou moins unique, vous ne voudrez jamais obtenir un échange beaucoup plus volumineux que cela. Mais là encore, le mappage en mémoire d’un fichier de données fonctionne tout aussi bien pour cette application.
Mais plus d'échange aide plus, non? Plus de tout est toujours mieux!
Considérez quelle différence un échange de, disons, de 16 Go (ou de 64 Go) fera. Si vous n'utilisez jamais ces 16 Go, vous pouvez également ne pas les mettre de côté. Mais si vous les utilisez, que se passe-t-il? Le disque, comparé à la mémoire principale, est extrêmement lent. Même avec un SSD SATA-600, le transfert de 16 Go prend entre 30 et 40 secondes, et 2 à 4 fois plus longtemps sur d'autres configurations.
Maintenant, quelqu'un objectera inévitablement que vous faites plutôt une pagination d'une douzaine de pages 4kiB et non de 16GiB en une fois. Bien que cela soit vrai, le point est néanmoins valable. Si vous devez seulement échanger quelques pages, vous n'avez pas besoin de 16 Go de swap, mais si vous en avez besoin de 16 Go, vous allez également les transférer (d'une manière ou d'une autre).
En théorie, 99,9% de tous les utilisateurs pourraient même utiliser une machine 64GiB (ou n’importe quelle machine 8+ GiB) sans aucun échange, et très probablement jamais rien manquant. Cependant, cela n'est pas conseillé.
Tout d’abord, il est sous-optimal car le système d’exploitation dispose de moins de choix quant à ce qu’il peut ignorer lorsqu’il manque de mémoire physique. Il peut faire deux choses: échanger quelque chose qui n'est pas utilisé ou jeter des pages du cache de mémoire tampon. Si vous n'avez pas de swap, il n'y a qu'une seule chose à faire. Le fait de jeter des pages du cache de mémoire tampon est sans danger, mais peut avoir un impact notable sur les performances.
Deuxièmement, les mappages anonymes privés peuvent tout simplement échouer s’il n’ya pas d’échange. Cela n'arrivera généralement pas, mais finalement, quand il n'y a pas assez de mémoire physique disponible pour les satisfaire tous, et qu'il n'y a pas d'échange, le système d'exploitation n'a que ce choix, sauf que ...
Troisièmement, le tueur redouté du MOO peut intervenir Ce qui signifie qu'un processus plus ou moins aléatoire peut être tué. Non, merci. Ce n'est pas quelque chose que vous voulez qu'il se passe.
Cela dit, des conseils tels que vous avez besoin d'un échange X fois la quantité de RAM installée viennent de personnes qui répètent quelque chose qu'ils ont entendu (et n'ont pas compris!) De quelqu'un qui a répété quelque chose qu'ils ont entendu (et qui n'ont pas compris!) Des décennies. depuis.
La règle "utiliser 2X votre RAM" était une règle facile à retenir dans les années 1980 et 1990, ce n'était jamais la "vérité d'or" (juste quelque chose qui fonctionnait bien pour la plupart des utilisateurs), et elle ne s'applique plus du tout de nos jours .
Vous devez disposer d’une quantité d’échange raisonnable que vous pouvez facilement vous permettre (disons, un gigaoctet), de sorte que le système d’exploitation puisse afficher des données obsolètes et que le monde ne s’arrête pas immédiatement lorsque vous demandez un peu plus de mémoire. Mais c'est tout.
mmap
pour allouer vos pages d’ensemble de travail. Ensuite, votre montant d'échange sera exactement le montant dont vous avez besoin pour votre processus.