Quelle taille pour la swap ?

Bonjour,

Je suis actuellement (septembre 2014) une formation consacrée à linux, et notre formateur nous indique que la taille idéale pour la swap pour linux (en général) et plus particulièrement debian, devrait être de 2,5 fois la ram.

Sachant que les machines actuelles sont plutôt bien fournies en mémoire vive, pourriez-vous m’indiquer quel espace réserver à la swap, pour debian ?

Merci d’avance.

Juste pour info, et avant que quelqu’un ne pose la question, mon SE actuel est Win 8.1 Pro, avec Debian, CentOS, Xubuntu, et Kubuntu virtualisés avec vmware, et j’ai utilisé voici très longtemps une slackware (au temps des disquettes), et voici environ 15 ans une CentOS pendant quelques mois. Autrement dit, plus vraiment novice, mais connaissances en cours de rafraîchissement.

S’il s’agit d’une formation, il y a ce lien : WiKi: La partition swap
mais s’il s’agit d’un formatage, le formateur a forcément raison.

Dans les deux cas, fait gaffe à ne pas toucher à la susceptibilité du formateur.

Pour info, sur ma machine :

root@debG53SW:~# swapon -s
Filename				Type		Size	Used	Priority
root@debG53SW:~# 
root@debG53SW:~# free -h
             total       used       free     shared    buffers     cached
Mem:          7,8G       1,0G       6,8G         0B        74M       451M
-/+ buffers/cache:       531M       7,3G
Swap:           0B         0B         0B
root@debG53SW:~# 

wiki.debian.org/Swap

La formule 2,5 x RAM n’a plus cours depuis que la RAM se compte en Go.
La quantité de swap peut être insuffisante || juste || large || beaucoup trop … ça dépend de ton utilisation typique. Si tu édites Guernica de Pablo Picasso en 100 fenêtres de gimp, il te faudra pas mal de swap. Si tu te contentes d’une fenêtre de Mickey, il t’en faudra beaucoup moins voire pas du tout.

Avec 8 Go de RAM sur ma machine et pas l’habitude de faire du traitement d’image/vidéo, j’envisage carrément de me passer de swap.
Si je ne poste pas de demande d’aide à ce sujet dans les semaines qui viennent, c’est que finalement ça marche aussi bien sans swap.

je remarque que les “formateurs” sur debian sont souvent très loin de la réalité mais chuuuut :005

Je fonctionne sans swap depuis plus de 3 ans sans soucis, j’ai même mis le /run (et le /tmp ?) en mémoire.

Le seul cas ou la swap doit au minimum avoir la taille de la mémoire vive est pour une mise en hibernation … mais cela se fait il toujours ?

La swap sous linux est souvent assimilée à celle de windows (la mémoire virtuelle). Sous windows il est conseillé de mettre entre 1,5 et 2 fois la taille de la ram, car en cas de plantage beaucoup d’infos qui sont dans la ram sont aussi copié dans cette mémoire. en cas de plantage le system va relire ces infos pour essayer des le récupérer.

Sous linux si le server swap c’est qu’il y a un souci (voir un gros). Donc en théorie il ne faudrait pas en mettre. Mais en fait en avoir un peu est quand même un utile en cas de besoin …

Pas de zone de swap => pas d’hibernation possible.

====
ACPI (états du système et sommeil)

Veille prolongée <=> hibernation

Mémoire vive => pas de rétention des informations sans alimentation électrique.
Mémoire de masse => rétention des informations même sans alimentation électrique.

====
Pour pouvoir retrouver le système tel qu’il était avant la mise en veille prolongée,
la machine doit transférer les informations qui sont contenues dans sa mémoire vive vers une mémoire de masse,
car ce type de mémoire pourra conserver les informations même en absence d’alimentation électrique.

Au démarrage suivant, la zone de swap sauvegardée sera recopiée dans la RAM.

EDIT: Mais bien sûr, tout dépends de ce que l’on fait de sa machine: Ici, je ne parlais que du desktop debian de base: Sans application qui dévore de la RAM en pagaille (flash par exemple), sans vouloir faire de l’édition vidéo, du jeu vidéo, du calcul scientifique, etc.

Ou tout simplement que le serveur manque de mémoire vive … :079
Je voie la SWAP comme une extension de la mémoire vive qu’il ne faut utiliser QUE quand tout le reste est plein et pour permettre l’hibernation du PC.

Personnellement je met environ 1 à 1.5 fois la RAM.
Mais ca dépend…
Sur mon serveur de production j’ai 48Go de RAM, et 30Go de SWAP. C’est énorme, mais une grande partie de mon disque dur est inutilisé alors j’ai choisi d’en mettre pas mal en SWAP et d’être tranquil…

Perso, sur les machines qui ont 6 ou 8Go de RAM, je ne mets plus de swap… Encore plus s’il y a un SSD.

Ne pas mettre de swap peut poser problème pour certains usages :

  • plus de mise en veille prolongée (hibernation)
  • si il vient à manquer de RAM, on a un kernel panic. Je n’ai eu que 2 freeze jusqu’ici depuis que je fais ça…

Le noyau 3.16 qui sera doté du module zram, compressera la mémoire des applis non utilisées en cas de manque.

Avant d’en arriver là, le noyau va plutôt tuer des processus pour libérer de la mémoire (voir “OOM killer”).

Avec les DDs énormes en capacité que nous avons aujourd’hui, qu’est-ce que 4, 6 ou même 8 GB qui n’irons pas rejoindre les dizaines inoccupés dans la /home :unamused:
Et puis, justement, ça fait toujours une petite réserve à, éventuellement, libérer pour autre chose.

Je n’utilise pas de swap sur disque dur ou SSD, je l’ai mise en ram /tmps pour une raison toute simple. Moins d’accès au SSD, vie plus longue.
Démarrage super rapide (SSD), évidement pas d’hibernation et suppression des trucs temporaires à chaque extinction = aussi moins d’espionnage possible…

Donc sur les 4GB, j’en ai gardé 1GB pour la swap.
Je suis pas trop fana de tout charger en permanence donc, ceci explique peut-être cela.

J’ai du mal à comprendre : la swap servant à suppléer à la RAM lorsque celle-ci est saturée, quel intérêt peut avoir de la swap en RAM ?

Je pense que NicNac s’est mal exprimé. Mettre un fichier de swap sur un tmpfs (obligatoirement un fichier car un tmpfs n’est pas un périphérique bloc comme un RAMdisk mais un système de fichiers en mémoire virtuelle) n’a aucun intérêt, d’autant plus qu’un tmpfs est lui-même swappable.

En revanche il y a un intérêt de mettre le swap en RAM, à condition de le compresser. C’est ce que fait zram/ramzswap (anciennement compcache), qui stocke le swap dans un RAMdisk compressé. Cela augmente les performances en évitant de recourir à un périphérique de stockage lent pour le swap, tout en économisant la mémoire en compressant les parties de la mémoire inutilisées.