Il est possible d'appeler OOM-killer (out of memory killer) directement par combinaison clavier :
SysRq-F
La touche SysRq est généralement combinée avec la touche PrtSc sur les claviers.
OOM-killer tue certains processus et le système redevient réactif.
Merci Raman pour ses conseils sur cette fonctionnalité dans les commentaires ci-dessus.
PS :Cela m'a beaucoup aidé. Je suis d'accord avec l'opinion que c'est le conseil le plus utile à propos de ce problème s'il est causé par Chrome ou tout autre logiciel gourmand en mémoire. Mais vous devez garder à l'esprit que OOM-killer peut tuer un processus très important, utilisez-le avec précaution.
L'état naturel des choses est que les données d'application sont dans la RAM et que les fichiers sont sur le disque.
L'état idéal des choses, en termes de performances, est que les données fréquemment utilisées se trouvent dans la RAM et que les données qui ne sont pas nécessaires pour le moment se trouvent sur le disque.
Sur un système normal, le noyau fait deux choses pour tenter d'atteindre cet idéal :
- Les données d'application qui n'ont pas été utilisées pendant un certain temps peuvent être déplacées sur le disque :c'est le swap.
- Les données des fichiers qui ont été utilisés récemment sont conservées dans la RAM :il s'agit du cache disque (pour les données lues sur le disque) et des tampons de disque (pour les données qui sont sur le point d'être écrites sur le disque).
Sur un système typique, une partie importante de la RAM est consacrée au cache et aux tampons (50 % est un chiffre typique). Étant donné que la RAM est une ressource finie, cela peut nécessiter le déplacement de certaines données d'application à échanger (l'échange n'est nécessaire que s'il existe une meilleure façon d'utiliser la RAM).
Sur un système sans échange, il y a un moment où les données d'application utilisent presque toute la RAM, et il ne reste donc pratiquement plus de place pour le cache. Ensuite, le système risque d'être lent. Le noyau ne commencera pas à tuer les applications tant qu'il n'y est pas vraiment obligé. Tant que les applications ne remplissent que 99% de la mémoire disponible, le système continue, mais très lentement car les données des fichiers doivent être chargées et rechargées à partir du disque tout le temps. Avec les mêmes applications en cours d'exécution, le système serait plus rapide avec l'échange à ce stade.
Pour en savoir plus sur ce problème, consultez cette discussion sur lkml et cet article de blog.
Je ne connais pas de moyen direct de dire au noyau de réserver une quantité minimale de RAM pour le cache disque. Vous pouvez configurer une petite partie de votre RAM comme espace d'échange, peut-être même compressé. Il existe des rapports de réussite sur ce front, bien que je ne donne aucune garantie dans votre cas particulier.
Récemment, j'ai trouvé une solution à mon problème.
Étant donné que le tueur de MOO Linux n'est pas capable de faire son travail correctement, j'ai commencé à utiliser un tueur de MOO en espace utilisateur :earlyoom. C'est écrit en C, assez configurable et ça marche comme un charme pour moi.
J'ai aussi entendu parler d'alternatives, comme OOMD de Facebook, développées pour fonctionner sur leurs serveurs, mais je n'ai pas essayé celle-ci