Thread (23 messages) 23 messages, 7 authors, 2022-12-02

Re: [PATCH] mm: memcontrol: protect the memory in cgroup from being oom killed

From: 程垲涛 Chengkaitao Cheng <hidden>
Date: 2022-12-01 14:30:26
Also in: cgroups, linux-fsdevel, linux-mm, lkml

At 2022-12-01 21:08:26, "Michal Hocko" [off-list ref] wrote:
On Thu 01-12-22 13:44:58, Michal Hocko wrote:
quoted
On Thu 01-12-22 10:52:35, 程垲涛 Chengkaitao Cheng wrote:
quoted
At 2022-12-01 16:49:27, "Michal Hocko" [off-list ref] wrote:
[...]
quoted
There is a misunderstanding, oom.protect does not replace the user's 
tailed policies, Its purpose is to make it easier and more efficient for 
users to customize policies, or try to avoid users completely abandoning 
the oom score to formulate new policies.
Then you should focus on explaining on how this makes those policies and
easier and moe efficient. I do not see it.
In fact, there are some relevant contents in the previous chat records. 
If oom.protect is applied, it will have the following benefits
1. Users only need to focus on the management of the local cgroup, not the 
impact on other users' cgroups.
2. Users and system do not need to spend extra time on complicated and 
repeated scanning and configuration. They just need to configure the 
oom.protect of specific cgroups, which is a one-time task
quoted
quoted
quoted
Why cannot you simply discount the protection from all processes
equally? I do not follow why the task_usage has to play any role in
that.
If all processes are protected equally, the oom protection of cgroup is 
meaningless. For example, if there are more processes in the cgroup, 
the cgroup can protect more mems, it is unfair to cgroups with fewer 
processes. So we need to keep the total amount of memory that all 
processes in the cgroup need to protect consistent with the value of 
eoom.protect.
You are mixing two different concepts together I am afraid. The per
memcg protection should protect the cgroup (i.e. all processes in that
cgroup) while you want it to be also process aware. This results in a
very unclear runtime behavior when a process from a more protected memcg
is selected based on its individual memory usage.
The correct statement here should be that each memcg protection should 
protect the number of mems specified by the oom.protect. For example, 
a cgroup's usage is 6G, and it's oom.protect is 2G, when an oom killer occurs, 
In the worst case, we will only reduce the memory used by this cgroup to 2G 
through the om killer.
Let me be more specific here. Although it is primarily processes which
are the primary source of memcg charges the memory accounted for the oom
badness purposes is not really comparable to the overal memcg charged
memory. Kernel memory, non-mapped memory all that can generate rather
interesting cornercases.
Sorry, I'm thoughtless enough about some special memory statistics. I will fix 
it in the next version
 
Thanks for your comment!
chengkaitao
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help