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

From: Zhaoyang Huang
Date: Sun Apr 08 2018 - 20:56:09 EST


On Sun, Apr 8, 2018 at 8:47 PM, Steven Rostedt <rostedt@xxxxxxxxxxx> wrote:
> [ Removing kernel-patch-test, because of annoying "moderator" messages ]
>
> On Sun, 8 Apr 2018 13:54:59 +0800
> Zhaoyang Huang <huangzhaoyang@xxxxxxxxx> wrote:
>
>> On Sun, Apr 8, 2018 at 11:48 AM, Steven Rostedt <rostedt@xxxxxxxxxxx> wrote:
>> > On Sun, 8 Apr 2018 10:16:23 +0800
>> > Zhaoyang Huang <huangzhaoyang@xxxxxxxxx> wrote:
>> >
>> >> Don't choose the process with adj == OOM_SCORE_ADJ_MIN which
>> >> over-allocating pages for ring buffers.
>> >
>> > Why?
>> >
>> > -- Steve
>> because in oom_evaluate_task, the process with adj == OOM_SCORE_ADJ_MIN will
>> be suppressed by oom_badness, but with applying your latest patch,
>> such process will
>> be selected by oom_task_origin
>>
>> 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.