Afficher les arguments de ligne de commande du programme complet dans les journaux de suppression OOM

8

Est-il possible d'afficher les arguments de ligne de commande du programme complet dans les journaux de suppression OOM? Ce que je vois maintenant dans / var / log / syslog est

Memory cgroup out of memory: Kill process 29187 (beam.smp) score 998 or sacrifice child
Killed process 29302 (cpu_sup) total-vm:4300kB, anon-rss:76kB, file-rss:272kB
beam.smp invoked oom-killer: gfp_mask=0xd0, order=0, oom_score_adj=0
beam.smp cpuset=/ mems_allowed=0-3

J'ai beaucoup de processus beam.smp sur ma machine et ce n'est pas très pratique de savoir quel processus particulier a été tué par OOM killer.

sergeyz
la source

Réponses:

4
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 des tâches à l'échelle du système (à l'exclusion 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 baisse de 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 module de suppression OOM tue réellement une tâche de mémoire mémoire.

HBruijn
la source
1
echo 1 > /proc/sys/vm/oom_dump_tasks

ne m'a pas beaucoup aidé - il n'y a toujours pas de paramètres de ligne de commande dans le journal.
pour afficher rétrospectivement la ligne de commande du processus interrompu, vous pouvez utiliser au sommet pour enregistrer l'activité du système.
si oom-killer tue s / th, ouvrez simplement le journal pendant ce temps, trouvez votre processus par PID à partir de / var / log / syslog, et appuyez sur la touche 'c' pour afficher la ligne de commande du processus.

atti
la source