linux – 如何找到导致OOM的cgroup?

linux – 如何找到导致OOM的cgroup?,第1张

概述我正在使用cgroup对我的进程进行分区,并且我在内核日志中收到Out Of Memory消息. 但是,我无法找到导致它们的分区.我已经检查了内存控制器cgroup,但没有明显的方法可以使用它. 问题是,当我在系统日志中看到“任务被杀”消息时,任务已经死亡,其/ proc条目已经消失,而cgroup的任务文件没有被杀死任务的pid. 回答我自己的问题.我已经使用SystemTap挂钩到OOM杀手: 我正在使用cgroup对我的进程进行分区,并且我在内核日志中收到Out Of Memory消息.

但是,我无法找到导致它们的分区.我已经检查了内存控制器cgroup,但没有明显的方法可以使用它.

问题是,当我在系统日志中看到“任务被杀”消息时,任务已经死亡,其/ proc条目已经消失,而cgroup的任务文件没有被杀死任务的pID.

解决方法 回答我自己的问题.我已经使用SystemTap挂钩到OOM杀手:
#!/usr/bin/env stap%{#include <linux/cgroup.h>%}function find_mem_cgroup:string(task:long) %{    struct cgroup *cgrp;    struct task_struct *tsk = (struct task_struct *)((long)THIS->task);    /* Initialize with an empty value */     strcpy(THIS->__retvalue,"NulL");    cgroup_lock();    cgrp = task_cgroup(tsk,mem_cgroup_subsys_ID);    if (cgrp)        cgroup_path(cgrp,THIS->__retvalue,MAXSTRINGLEN);    cgroup_unlock();%}probe kernel.function("oom_kill_task") {    cgroup = find_mem_cgroup($p)    exename = kernel_string($p->comm)    printf("pID\t%d\tmem-cgroup\t%s\texe-name\t%s\n",$p->pID,cgroup,exename)}

像这样工作:

cyberax@cybnb:~/work/shell$sudo stap -g oom.stappID    3966    mem-cgroup    /task1/1/    exe-name    oom_generator.p
总结

以上是内存溢出为你收集整理的linux – 如何找到导致OOM的cgroup?全部内容,希望文章能够帮你解决linux – 如何找到导致OOM的cgroup?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1038961.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存