Thread (20 messages) 20 messages, 2 authors, 2021-10-21

Re: [PATCH memcg 0/1] false global OOM triggered by memcg-limited task

From: Vasily Averin <hidden>
Date: 2021-10-18 10:14:36
Also in: linux-mm, lkml

On 18.10.2021 13:05, Vasily Averin wrote:
On 18.10.2021 12:04, Michal Hocko wrote:
quoted
On Mon 18-10-21 11:13:52, Vasily Averin wrote:
quoted
Partially this problem depends on one of my recent patches, disabled unlimited
memory allocation for dying tasks. However I think the problem can happen
on non-killed tasks too, for example because of kmem limit.
Could you be more specific on how this can happen without your patch? I
have to say I haven't realized this side effect when discussing it.
We can reach obj_cgroup_charge_pages() for example via

do_user_addr_fault
handle_mm_fault
__handle_mm_fault
p4d_alloc
__p4d_alloc
p4d_alloc_one
get_zeroed_page
__get_free_pages
alloc_pages
__alloc_pages
__memcg_kmem_charge_page
obj_cgroup_charge_pages

Here we call try_charge_memcg() that return success and approve the allocation,
however then we hit into kmem limit and fail the allocation.
btw. in OpenVZ kernels we trying to cleanup the memory in when task hit kmem limit,
therefore we moved kmem limit check into try_charge_memcg.

Are any improvements for kmem controller interesting for upstream?

Thank you,
	Vasily Averin
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help