On Wed, Aug 14, 2024 at 3:00 PM Shakeel Butt <shakeel.butt@xxxxxxxxx> wrote: > > The oom_control provides functionality to disable memcg oom-killer, > notifications on oom-kill and reading the stats regarding oom-kills. > This interface was mainly introduced to provide functionality for > userspace oom-killers. However it is not robust enough and only supports > OOM handling in the page fault path. > > For v2, the users can use the combination of memory.events notifications > and memory.high interface to provide userspace OOM-killing functionality. Might be worth it to mention PSI here too for userspace OOM-killing? (It's what LMKD does for Android.) > Let's start the deprecation process for v1 and gather the info on how > the current users are using this interface and work on providing a more > robust functionality in v2. > > Signed-off-by: Shakeel Butt <shakeel.butt@xxxxxxxxx> Reviewed-by: T.J. Mercier <tjmercier@xxxxxxxxxx> > --- > Changes since v1: > - Fix build (T.J. Mercier) > > Documentation/admin-guide/cgroup-v1/memory.rst | 8 ++++++-- > mm/memcontrol-v1.c | 7 +++++++ > 2 files changed, 13 insertions(+), 2 deletions(-) > > diff --git a/Documentation/admin-guide/cgroup-v1/memory.rst b/Documentation/admin-guide/cgroup-v1/memory.rst > index 6831c6c16e3f..0042206414c8 100644 > --- a/Documentation/admin-guide/cgroup-v1/memory.rst > +++ b/Documentation/admin-guide/cgroup-v1/memory.rst > @@ -92,6 +92,8 @@ Brief summary of control files. > This knob is deprecated and shouldn't be > used. > memory.oom_control set/show oom controls. > + This knob is deprecated and shouldn't be > + used. > memory.numa_stat show the number of memory usage per numa > node > memory.kmem.limit_in_bytes Deprecated knob to set and read the kernel > @@ -846,8 +848,10 @@ It's applicable for root and non-root cgroup. > > .. _cgroup-v1-memory-oom-control: > > -10. OOM Control > -=============== > +10. OOM Control (DEPRECATED) > +============================ > + > +THIS IS DEPRECATED! > > memory.oom_control file is for OOM notification and other controls. > > diff --git a/mm/memcontrol-v1.c b/mm/memcontrol-v1.c > index e0bb54e42011..334a02597d9a 100644 > --- a/mm/memcontrol-v1.c > +++ b/mm/memcontrol-v1.c > @@ -1907,6 +1907,9 @@ static ssize_t memcg_write_event_control(struct kernfs_open_file *of, > event->register_event = mem_cgroup_usage_register_event; > event->unregister_event = mem_cgroup_usage_unregister_event; > } else if (!strcmp(name, "memory.oom_control")) { > + pr_warn_once("oom_control is deprecated and will be removed. " > + "Please report your usecase to linux-mm-@xxxxxxxxx" > + " if you depend on this functionality. \n"); > event->register_event = mem_cgroup_oom_register_event; > event->unregister_event = mem_cgroup_oom_unregister_event; > } else if (!strcmp(name, "memory.pressure_level")) { > @@ -2754,6 +2757,10 @@ static int mem_cgroup_oom_control_write(struct cgroup_subsys_state *css, > { > struct mem_cgroup *memcg = mem_cgroup_from_css(css); > > + pr_warn_once("oom_control is deprecated and will be removed. " > + "Please report your usecase to linux-mm-@xxxxxxxxx if you " > + "depend on this functionality. \n"); > + > /* cannot set to root cgroup and only 0 and 1 are allowed */ > if (mem_cgroup_is_root(memcg) || !((val == 0) || (val == 1))) > return -EINVAL; > -- > 2.43.5 >