J'ai un eeePC 900a: il a un disque flash de 8 Go et seulement 1 Go de RAM. La distribution Linux installée est ArchLinux.
Lorsque le système est à court de mémoire , il devient extrêmement insensible: il faut plusieurs secondes / minutes pour faire des choses comme le passage à TTY1 ou même de déplacer le pointeur de la souris. Parfois, on a l'impression que le système se fige: il y a trois ans, je le laissais faire et rien n'a changé jusqu'à présent.
Je préférerais éviter de créer une partition / un fichier d'échange sur cet eeePC car le disque est déjà aussi petit et que de nombreuses écritures sur l'espace d'échange réduiraient considérablement la durée de vie de la carte Flash. De plus, je pense qu'un fichier / une partition d'échange ne ferait que déplacer le problème, au lieu de le résoudre définitivement.
Le noyau n'est-il pas censé tuer des applications aléatoires lorsqu'il manque de mémoire? Pourquoi cela échoue-t-il (ou prend-il des siècles)?
Il ya quelques mois / années, j’ai déjà essayé d’approfondir cette question, mais je n’ai rien trouvé qui puisse réellement fonctionner ...
while(true){ if( $FREE_MEMORY<10MB ){ kill -9 $RANDOM_PID; } }
. Cela réglerait définitivement mon problème. Mais attendez, le noyau n’est-il pas supposé le faire (et de manière bien meilleure que mon script)? Pourquoi ne fait-il pas son travail?Réponses:
Il est possible d’appeler directement OOM-killer (à court de mémoire) en utilisant une combinaison de touches:
SysRq-F
La touche SysRq est généralement combinée à la touche PrtSc sur les claviers.
OOM-Killer tue certains processus (-es) et le système redevient réactif.
Thx Raman pour des 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 concernant ce problème s’il est causé par Chrome ou par un logiciel gourmand en mémoire. Mais vous devez garder à l’esprit que le tueur OOM peut tuer un processus très important, utilisez-le avec précaution.
la source
PrtScn|SysRq
. Mais presserSysRq - F
ne donne qu'une capture d'écranL'état naturel des choses est que les données de l'application sont dans la RAM et les fichiers sur le disque.
En termes de performances, l’état idéal des choses est que les données fréquemment utilisées se trouvent dans la RAM et que les données inutiles 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:
Sur un système typique, une partie importante de la RAM est consacrée au cache et aux mémoires tampons (50% est un chiffre typique). La RAM étant une ressource finie, il peut être nécessaire de déplacer certaines données d'application pour les échanger (l'échange n'est nécessaire que s'il existe un meilleur moyen d'utiliser la RAM).
Sur un système sans échange, il arrive un moment où les données de l'application utilisent presque toute la RAM, il ne reste donc presque plus de place pour le cache. Ensuite, le système est susceptible d'être lent. Le noyau ne commencera pas à tuer les applications tant qu'il ne le sera pas. Tant que les applications ne remplissent que 99% de la mémoire disponible, le système continue à fonctionner, mais très lentement, car les données des fichiers doivent être chargées et rechargées à partir du disque en permanence. Avec les mêmes applications en cours d'exécution, le système serait plus rapide avec le swap à ce stade.
Pour plus d'informations sur cette question, voir cette discussion de Lkml et cet article de blog .
Je ne connais pas de moyen direct pour dire au noyau de réserver une quantité minimale de RAM pour le cache de disque. Vous pouvez configurer une petite partie de votre RAM en tant qu'espace de permutation , peut-être même compressé . Il existe des rapports de réussite sur ce front , bien que je ne fasse aucune garantie dans votre cas particulier.
la source
ld
, déchet), il reste suspendu pendant presque une minute, me réveillant juste assez pour me permettre de déplacer la souris incroyablement lente pendant une seconde. ou deux toutes les plusieurs secondes. La gestion des MOO par Linux est une merde complète Si j'ai de la chance, le tueur OOM tue le bon processus sans vider complètement l'environnement de bureau. Et je suis un grand fan de Linux. C'est bien pire avec la pagination activée. La pagination Linux est une blague.Ce bogue est connu depuis 2007 - voir Gel du système pour une utilisation intensive de la mémoire .
Dans cette situation, Windows affiche une boîte de dialogue demandant à l'utilisateur de fermer une ou plusieurs applications.
la source
Récemment, j'ai trouvé une solution à mon problème.
Le tueur de MOO Linux n'étant pas en mesure 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 de certaines alternatives, comme celle de Facebook, OOMD , développée pour fonctionner sur leurs serveurs, mais je n'ai pas essayé celui-ci.
la source