Réponses:
Une autre approche consiste à désactiver la surcharge de la mémoire.
Pour restaurer un semblant de raison à votre gestion de la mémoire:
- Désactiver le
vm.oom-kill = 0
module OOM Killer ( placé dans /etc/sysctl.conf)- Désactiver la surcharge de mémoire (mise
vm.overcommit_memory = 2
en place/etc/sysctl.conf
)Ces paramètres feront que Linux se comportera de la manière traditionnelle (si un processus demande plus de mémoire que ce qui est disponible
Notez qu'il s'agit d'une valeur ternaire:malloc()
échouera et le processus demandant la mémoire devrait faire face à cet échec).
- 0 = "estimer si nous avons suffisamment de RAM"
- 1 = "Toujours dire oui"
- 2 = "dites non si nous n'avons pas la mémoire"
Cela forcera l'application à gérer le manque de mémoire lui-même, et peut-être que ses journaux / coredump / etc. pourraient vous donner quelque chose d'utile.
REMARQUE: lorsque votre système manque de mémoire, vous ne pourrez pas générer de nouveaux processus! Vous pouvez être exclu du système.
echo 1 > /proc/sys/vm/oom_dump_tasks
ce qui semble être le maximum que vous pouvez obtenir du noyau pour afficher les erreurs de mémoire insuffisante.
https://www.kernel.org/doc/Documentation/sysctl/vm.txt
Permet à un vidage de tâche à l'échelle du système (à l'exception des threads du noyau) d'être produit lorsque le noyau effectue une destruction OOM et inclut des informations telles que pid, uid, tgid, vm size, rss, nr_ptes, swapents, oom_score_adj score et name. Cela est utile pour déterminer pourquoi le tueur OOM a été invoqué, pour identifier la tâche malveillante qui l'a provoquée et pour déterminer pourquoi le tueur OOM a choisi la tâche qu'il a faite pour tuer.
Si ce paramètre est défini sur zéro, ces informations sont supprimées. Sur les très grands systèmes avec des milliers de tâches, il peut ne pas être possible de vider les informations d'état de la mémoire pour chacune. De tels systèmes ne devraient pas être obligés de subir une dégradation des performances dans des conditions MOO lorsque les informations peuvent ne pas être souhaitées.
Si ce paramètre est défini sur non nul, ces informations sont affichées chaque fois que le tueur OOM tue réellement une tâche de mémoire mémoire.