Salut à toi la moule,
Dernièrement, j'ai eu à me pencher sur le SWAP. Rapidement, j'en suis venu à me demander: "Mais qu'est ce qui peut bien remplir le SWAP comme ça, d'un coup, avec un Go données. Quelles sont-elles d'ailleurs et sous quelle forme sont elles stockées dans le SWAP ?".
J'ai pas vraiment trouvé de réponse convaincante (plutôt des trucs comme ça). Sans grand intérêt donc dans l'ensemble.
Et vous, vous en savez plus, ou vous auriez des trucs et astuces à partager à ce sujet ?
# La swap n'est qu'une extension de la RAM
Posté par Renault (site web personnel) . Évalué à 5 (+2/-0).
La swap ne contient rien de plus que ce que tu retrouves dans ta RAM quand celle-ci est trop pleine.
C'est du coup plus lent que l'accès à la RAM (même via zram) en particulier s'il y a beaucoup d'allers-retours à faire entre RAM et swap.
Car pour améliorer les performances, le noyau met en swap les pages de données accédées les plus vieilles car à priori pas trop utiliser. Cela peut être souvent une partie du binaire d'un programme qui n'est pas exploité, un bout de fichier pas relu, etc.
Pour améliorer les performances, le noyau peut également mettre en swap des données réellement allouées pour garder un peu plus de cache de fichiers car à priori ces fichiers seront probablement accédés dans le futur proche.
Mais donc dans le contexte d'un OOM avec un swap qui se rempli, il faut identifier le ou les processus qui consomment cette RAM car la swap n'est rien de plus qu'une barrette de RAM virtuelle et lente.
[^] # Re: La swap n'est qu'une extension de la RAM
Posté par Krunch (site web personnel) . Évalué à 2 (+0/-0).
C'est un peu plus compliqué que ça mais il est probable que les subtilités n'importent guère.
Malheureusement, la dernière fois que j'ai cherché, les informations techniques au sujet de la gestion de la mémoire sous Linux étaient assez fragmentées et il y a plein de trucs plus ou moins faux qui circulent. Il y a linuxatemyram.com qui donne un explication un peu plus détaillée mais qui reste très simplifié.
En pratique on peut examiner comment la mémoire est utilisée, y compris la swap avec un sysrq-m. Cette information est aussi normalement affichée lors d'un OOM. Malheureusement dans la demande originale le message d'OOM est tronqué donc c'est compliqué de comprendre le problème.
En particulier, il est possible que l'OOM-killer se déclenche même lorsqu'il reste de la mémoire disponible.
Il y a aussi plein de choses à dire sur la swapiness et les cgroups notamment. Ça dépend un peu de ce qu'on cherche. La documentation de /proc/sys/vm/ donne déjà quelques indices et pistes (cf man proc).
pertinent adj. Approprié : qui se rapporte exactement à ce dont il est question.
Envoyer un commentaire
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.