2 votes

Comment faire une bonne estimation de la taille de la partition d'échange lors de l'utilisation de tmpfs ?

J'ai un SSD, donc l'espace est une ressource rare. J'aimerais en utiliser le moins possible pour le swap. En fait, depuis un an, je n'ai pas du tout de partition swap (l'ordinateur a 6 Go de RAM).

Je prévois une réinstallation propre et je veux essayer de nouvelles choses. Parmi elles, je veux réduire la charge d'écriture sur le SSD en plaçant les répertoires système à forte écriture sur tmpfs. Plus précisément, je veux placer /tmp, /var/tmp et /var/tmp/cache dans la RAM. Évidemment, cela augmentera mon utilisation de la RAM, et à un certain moment, je pourrais avoir besoin de swap après tout.

Je n'ai pas enregistré les tailles des répertoires temporaires et l'utilisation de la RAM par le passé, et je ne veux pas installer d'outils de journalisation et attendre la réinstallation jusqu'à ce que j'aie suffisamment de données. Quelles sont mes meilleures options pour faire une estimation de la taille appropriée de la partition swap? Cette estimation sera-t-elle judicieuse? Suis-je condamné à tâtonner dans l'obscurité ou à me fier à des directives généreuses du type "1,5 fois la taille de votre RAM"?

Je fais un arrêt complet tous les soirs, donc j'espère que les répertoires temporaires ne deviendront pas trop volumineux.

4voto

David Schwartz Points 60868

Vous avez trois problèmes en ce qui concerne l'espace d'échange.

Premièrement, avec un espace d'échange insuffisant, certaines charges de travail ne sont tout simplement pas possibles à effectuer. Si un programme nécessite plus de mémoire que la RAM physique disponible, il ne peut tout simplement pas s'exécuter sans espace d'échange.

Deuxièmement, avec un espace d'échange très faible, votre ordinateur peut ne pas être en mesure d'évincer des éléments qui ne sont jamais consultés de la RAM physique. Souvent, une partie de la mémoire ne sera jamais consultée, mais le système d'exploitation ne peut pas le prouver. Il ne peut donc pas libérer simplement la mémoire. Sans assez d'espace d'échange, cette information reste bloquée en RAM pour toujours, sans jamais être consultée. De nombreux processus utilisent beaucoup de mémoire au démarrage qu'ils n'utilisent jamais par la suite.

Enfin, avec un espace d'échange très faible, votre décision de permettre la surallocation de la mémoire virtuelle ou non peut avoir des conséquences drastiques. Si vous n'autorisez pas le système à surallouer la mémoire virtuelle, vous risquez de refuser des opérations qui en réalité n'utilisent pas beaucoup de mémoire. (Imaginez si un processus important appelle fork. Il pourrait être sur le point d'appeler exec, mais à moins de permettre la surallocation, le système d'exploitation doit refuser le fork s'il n'a pas suffisamment de RAM + espace d'échange pour que le nouveau processus salisse chaque page mappée inscriptible.) Si vous autorisez le système à surallouer, et que vous n'avez pas réellement assez de RAM + espace d'échange pour une charge de travail atypique, vous risquez de voir des processus être terminés brutalement.

Personnellement, en supposant une utilisation typique, j'allouerais 2Go pour l'espace d'échange et je m'assurerais que la surallocation raisonnable est autorisée.

2voto

pdvyas Points 21

Si vous ne réalisez pas de tâches intensives en matière de mémoire, alors un ordinateur avec 6 Go de RAM peut se passer de mémoire d'échange (attention : je suis fou).

Monter /tmp (ainsi que ses semblables /var) en tant que tmpfs est une très bonne pratique. Pour mon netbook avec 1 Go de RAM, sans échange, j'ai gardé 100 Mo de tmpfs /tmp et cela n'a jamais posé de problème (à moins que vous ne vouliez y extraire des choses comme des caches, ce que les gens ne veulent généralement pas).

Si quelque chose ne va pas, tout ce que vous avez à modifier est /etc/fstab.

La paranoïa est bonne mais vos chances de perdre des données sont moindres car seuls les répertoires tmp/cache sont en mémoire, les données réelles sont de toute façon écrites sur le disque.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X