oom_score 和 badness 之间有什么关系?

oom_score 和 badness 之间有什么关系?

在阅读两篇文章的同时https://lwn.net/Articles/391222/http://man7.org/linux/man-pages/man5/proc.5.html我遇到过这些术语oom_score和坏处。两个数字具有相同的基本含义;它们越高,当主机面临内存压力时,相关任务被 OOM 杀死的可能性就越大。

这两个数字之间有什么关系(如果有的话)?

编辑:我的猜测是oom_score= max(badness + oom_score_adj, 0) 但我还没有找到任何证据

答案1

看起来是这样的:

oom_score = 坏度 * 1000 / 总页数

基于内核代码https://github.com/torvalds/linux/blob/master/fs/proc/base.c#L549

static int proc_oom_score(struct seq_file *m, struct pid_namespace *ns,
              struct pid *pid, struct task_struct *task)
{
    unsigned long totalpages = totalram_pages + total_swap_pages;
    unsigned long points = 0;

    points = oom_badness(task, NULL, NULL, totalpages) *
                    1000 / totalpages;
    seq_printf(m, "%lu\n", points);

    return 0;
}

相关内容