在阅读两篇文章的同时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;
}