comment configurer Linux pour appeler oom_kill seul

7

Je ne veux pas que mon ordinateur permute les données sur le disque. Je n'ai pas de partition d'échange:

$ gratuit
             total utilisé des tampons partagés libres mis en cache
Mem: 3841912 3670012 171900 0 74980 699652
- / + buffers / cache: 2895380 946532
Échange: 0 0 0

De retour dans la journée (peut-être aussi récemment que le noyau 2.4?), Cela fonctionnait. Les processus gourmands en mémoire seraient tués par le tueur à mort et je les redémarrerais. Mais maintenant (google-chrome (13.0.782.24 beta)) envoie régulièrement ma machine dans une spirale mortelle de permutation. Ou du moins quelque chose qui ressemble à un échange: les fenêtres X prennent une éternité à mettre à jour, les disques durs, le diagramme de mémoire du panneau gnome atteint le plafond, et je vois ce message dans le syslog:

rtkit-daemon [1771]: Le fil canarien est apparemment en train de mourir de faim. Prendre part.
rtkit-daemon [1771]: rétrogradation des threads en temps réel connus.
...

Mais, selon syslog, le noyau n’exécute pas le tueur à mort. Pour faire bonne mesure, j'ai réglé swappiness sur 0:

$ cat / proc / sys / vm / swappiness
0

Ma solution consiste à utiliser ctrl-alt-sysrq-f lorsque cela commence à se produire. Quelqu'un a-t-il une recette pour configurer Linux afin qu'il exécute oom_kill seul, dans cette situation?

Joe
la source
1
Etes-vous sûr que le tueur de MOO ne fonctionne pas? Il est certainement possible que Chrome évite le tueur de MOO. Exécutez le deuxième programme ici pour voir si le tueur de MOO fonctionne ou non.
new123456
Je suis sûr que le tueur de MOO ne se lance pas aussi vite que je le voudrais. La seule fois où je vois "invoqué oom-killer" dans syslog, c'est quand je l'invoque manuellement - après plus d'une minute d'échange.
Joe
Mise à jour: je suis sur le noyau 3.0.0 (et le nouveau matériel) et le problème persiste. Je dois être proactif quant à la suppression de Google Chrome, car une fois que la clé est plongée dans la spirale de la mort, même la clé sysrq magique ne parvient pas à raviver le système.
Joe
Ce que je ne comprends pas à propos de cette question est la suivante: si vous n'aviez pas d'espace d'échange configuré, comment avez-vous échangé?
Michael Hampton
Eh bien, comme mentionné dans la question, nous avions l' impression que la machine ralentirait considérablement et qu'il serait difficile de faire réagir les applications, mais qu'elles le feraient éventuellement. C'était peut-être vraiment le noyau qui attendait que chrome libère de la mémoire, ou quelque chose du genre.
Joe

Réponses:

5

Le MOO ne tue pas nécessairement le processus que vous pensez qu'il le fera. Lisez à ce sujet ici: http://lwn.net/Articles/317814/

Je suppose que ce qui se passe, c’est que, du fait que chrome utilise un processus différent pour chaque page, cela confond les heuristiques du tueur de MOO et d’autres processus sont éliminés au lieu du processus chrome de parent.

Selon cette hypothèse, le tueur OOM aime tuer les processus sophistiqués. Donc, essayez de régler le chrome à une valeur supérieure à 0 .. pourrait en faire une cible :-)

petit
la source
Je pense que votre suspicion concernant le chrome est sur la bonne voie. Il semble fonctionner de manière à brouiller les heuristiques du tueur OOM. Le premier programme de la page new123456 lie mon noyau de la même manière: il alloue beaucoup de mémoire et empêche le système de répondre, mais le tueur de MOO ne le tue pas (du moins pas en une minute environ).
Joe
0

Je suis arrivé à la conclusion que le linux moderne n'aime pas fonctionner sans mémoire virtuelle. Peut-être que se débarrasser de l’échange avait du sens à l’époque des disques durs lents / d’anciens algorithmes de machine virtuelle / etc.

Mais je travaille avec un fichier d'échange depuis quelques mois et je suis beaucoup plus satisfait du comportement de ma machine en termes de mémoire insuffisante. Cela ralentit un peu les limites, mais il est facile d'intervenir et de mettre fin aux processus gourmands en mémoire pour que les choses reviennent à la normale.

Joe
la source
Mais comment se comporte le système quand il manque de mémoire?
Aaron Franke