Thread (4 messages) 4 messages, 3 authors, 2021-11-20

Re: [PATCH v4 2/4] mm/oom: handle remote ooms

From: Shakeel Butt <hidden>
Date: 2021-11-20 07:58:36
Also in: linux-fsdevel, linux-mm, lkml

On Fri, Nov 19, 2021 at 8:50 PM Mina Almasry [off-list ref] wrote:
[...]
+/*
+ * Returns true if current's mm is a descendant of the memcg_under_oom (or
+ * equal to it). False otherwise. This is used by the oom-killer to detect
+ * ooms due to remote charging.
+ */
+bool is_remote_oom(struct mem_cgroup *memcg_under_oom)
+{
+       struct mem_cgroup *current_memcg;
+       bool is_remote_oom;
+
+       if (!memcg_under_oom)
+               return false;
+
+       rcu_read_lock();
+       current_memcg = mem_cgroup_from_task(current);
+       if (current_memcg && !css_tryget_online(&current_memcg->css))
No need to grab a reference. You can call mem_cgroup_is_descendant() within rcu.
+               current_memcg = NULL;
+       rcu_read_unlock();
+
+       if (!current_memcg)
+               return false;
+
+       is_remote_oom =
+               !mem_cgroup_is_descendant(current_memcg, memcg_under_oom);
+       css_put(&current_memcg->css);
+
+       return is_remote_oom;
+}
+
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help