Re: [PATCH v1] ringbuffer: Don't choose the process with adj equal OOM_SCORE_ADJ_MIN

From: Steven Rostedt
Date: Mon Apr 09 2018 - 09:49:52 EST


On Mon, 9 Apr 2018 08:56:01 +0800
Zhaoyang Huang <huangzhaoyang@xxxxxxxxx> wrote:

> >>
> >> if (oom_task_origin(task)) {
> >> points = ULONG_MAX;
> >> goto select;
> >> }
> >>
> >> points = oom_badness(task, NULL, oc->nodemask, oc->totalpages);
> >> if (!points || points < oc->chosen_points)
> >> goto next;
> >
> > And what's wrong with that?
> >
> > -- Steve
> I think the original thought of OOM is the flag 'OOM_SCORE_ADJ_MIN' is
> most likely to be set by process himself via accessing the proc file,
> if it does so, OOM can select it as the victim. except, it is
> reluctant to choose the critical process to be killed, so I suggest
> not to set such heavy flag as OOM_SCORE_ADJ_MIN on behalf of -1000
> process.

Really, I don't think tasks that are setting OOM_CORE_ADJ_MIN should be
allocating a lot of memory in the kernel (via ring buffer). It sounds
like a good way to wreck havoc on the system.

It's basically saying, "I'm going to take up all memory, but don't kill
me, just kill some random user on the system".

-- Steve