但是,我无法找到导致它们的分区.我已经检查了内存控制器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?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)