Précharger le tueur du MOO

Je n'ai pas de partition / file swap sur ma machine, et seulement 2 Go de RAM.

Parfois, il arrive que la memory soit saturée par un process ( Xorg + browser + compilateur + …) et le système se bloque indéfiniment, et le seul moyen de le redémarrer (autre que la réinitialisation matérielle) est SysRq.

J'ai compris que le Killer Out of Memory ne m'aidera pas parce que quand la memory est complètement pleine, le kernel ne peut pas allouer le KOMO lui-même.

Existe-t-il un moyen de précharger le KOM Killer, afin qu'il puisse fonctionner quand la memory est complètement pleine?
Ou est-il possible de tordre le kernel pour que OOM Killer s'active lorsque mon RAM est plein à ${TOTAL_RAM} - 10MB ?

Je suis assez sûr que le kernel réserve de la memory, c'est-à-dire pour lancer le oom_killer.

(A quoi servirait un oom_killer si celui-ci ne parvient pas à se charger en raison d'un manque de memory?)

Le kernel alloue une quantité minimale d'espace libre pour lui-même. Vous pouvez voir cette valeur avec:

 $ sysctl vm.min_free_kbytes vm.min_free_kbytes = 2842 $ cat /proc/sys/vm/min_free_kbytes vm.min_free_kbytes = 2842 

Cette valeur dépend de la quantité de RAM (512 Mo dans le cas ci-dessus), vous pouvez essayer de l'augmenter, mais je ne pense pas que cela résoudra votre problème (cela augmentera les chances d'get un MOO plus tôt).

Le tueur de MOO devrait avoir assez de memory libre pour tuer les applications, sinon il manquerait le but d'en avoir un (comme Chris déjà signalé).

Edit : Juste à côté, je ne pense pas que ce soit la meilleure façon de résoudre un problème concernant les programmes d'espace user, en modifiant simplement les parameters du kernel (valeurs de MOO). Le kernel a la meilleure connaissance de ce qui se passe et de la façon de gérer certaines situations. Plutôt que de jouer avec ces valeurs, essayez de résoudre les problèmes de memory générés par les programmes d'espace user (Xorg, browser). En outre, voir le commentaire sur le file source mm / oom_kill.c , même les développeurs du kernel pensent que le tueur du MOO devrait avoir beaucoup de travail à faire dans un environnement bien configuré.

Une façon d'éviter cela serait d'éteindre la gestion heuristique overcommit et de ne pas surcharger: définissez le sysctl vm.overcommit_memory = 2, puis baissez vm.overcommit_ratio. Lisez ceci à ce sujet dans les documents du kernel .

Vous pouvez également cibler des PID spécifiques pour un traitement préférentiel par le MOO en modifiant / proc / $ PID / oom_adj.