[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <87jywuwumq.fsf@linux.dev>
Date: Mon, 02 Feb 2026 16:14:37 -0800
From: Roman Gushchin <roman.gushchin@...ux.dev>
To: Alexei Starovoitov <alexei.starovoitov@...il.com>, Michal Hocko
<mhocko@...e.com>
Cc: Matt Bobrowski <mattbobrowski@...gle.com>, bpf <bpf@...r.kernel.org>,
Michal Hocko <mhocko@...e.com>, Alexei Starovoitov <ast@...nel.org>,
Shakeel Butt <shakeel.butt@...ux.dev>, JP Kobryn
<inwardvessel@...il.com>, LKML <linux-kernel@...r.kernel.org>, linux-mm
<linux-mm@...ck.org>, Suren Baghdasaryan <surenb@...gle.com>, Johannes
Weiner <hannes@...xchg.org>, Andrew Morton <akpm@...ux-foundation.org>
Subject: Re: [PATCH bpf-next v3 10/17] mm: introduce
bpf_task_is_oom_victim() kfunc
Alexei Starovoitov <alexei.starovoitov@...il.com> writes:
> On Sun, Feb 1, 2026 at 9:39 PM Matt Bobrowski <mattbobrowski@...gle.com> wrote:
>>
>> On Mon, Jan 26, 2026 at 06:44:13PM -0800, Roman Gushchin wrote:
>> > Export tsk_is_oom_victim() helper as a BPF kfunc.
>> > It's very useful to avoid redundant oom kills.
>> >
>> > Signed-off-by: Roman Gushchin <roman.gushchin@...ux.dev>
>> > Suggested-by: Michal Hocko <mhocko@...e.com>
>> > ---
>> > mm/oom_kill.c | 14 ++++++++++++++
>> > 1 file changed, 14 insertions(+)
>> >
>> > diff --git a/mm/oom_kill.c b/mm/oom_kill.c
>> > index 8f63a370b8f5..53f9f9674658 100644
>> > --- a/mm/oom_kill.c
>> > +++ b/mm/oom_kill.c
>> > @@ -1381,10 +1381,24 @@ __bpf_kfunc int bpf_out_of_memory(struct mem_cgroup *memcg__nullable,
>> > return ret;
>> > }
>> >
>> > +/**
>> > + * bpf_task_is_oom_victim - Check if the task has been marked as an OOM victim
>> > + * @task: task to check
>> > + *
>> > + * Returns true if the task has been previously selected by the OOM killer
>> > + * to be killed. It's expected that the task will be destroyed soon and some
>> > + * memory will be freed, so maybe no additional actions required.
>> > + */
>> > +__bpf_kfunc bool bpf_task_is_oom_victim(struct task_struct *task)
>> > +{
>> > + return tsk_is_oom_victim(task);
>> > +}
>>
>> Why not just do a direct memory read (i.e., task->signal->oom_mm)
>> within the BPF program? I'm not quite convinced that a BPF kfunc
>> wrapper for something like tsk_is_oom_victim() is warranted as you can
>> literally achieve the same semantics without one.
>
> +1
> there is no need for this kfunc.
It was explicitly asked by Michal Hocko, who is (co)maintaining the oom
code. I don't have a strong opinion here. I agree that it can be easily
open-coded without a kfunc, but at the same time the cost of having an
extra kfunc is not high and it makes the API more consistent.
Michal, do you feel strongly about having a dedicated kfunc vs the
direct memory read?
Powered by blists - more mailing lists