From: Michal Hocko <mhocko@suse.com>
To: Vasily Averin <vvs@virtuozzo.com>
Cc: Tetsuo Handa <penguin-kernel@i-love.sakura.ne.jp>,
cgroups@vger.kernel.org, linux-mm@kvack.org,
linux-kernel@vger.kernel.org,
Johannes Weiner <hannes@cmpxchg.org>,
Vladimir Davydov <vdavydov.dev@gmail.com>,
Andrew Morton <akpm@linux-foundation.org>
Subject: Re: [PATCH memcg] memcg: prohibit unconditional exceeding the limit of dying tasks
Date: Fri, 10 Sep 2021 16:55:26 +0200 [thread overview]
Message-ID: <YTtx3toUOMLXk4GZ@dhcp22.suse.cz> (raw)
In-Reply-To: <4a407474-ff7a-9e4f-d314-ab85f0eeaadf@virtuozzo.com>
On Fri 10-09-21 16:20:58, Vasily Averin wrote:
> On 9/10/21 4:04 PM, Tetsuo Handa wrote:
> > On 2021/09/10 21:39, Vasily Averin wrote:
> >> The kernel currently allows dying tasks to exceed the memcg limits.
> >> The allocation is expected to be the last one and the occupied memory
> >> will be freed soon.
> >> This is not always true because it can be part of the huge vmalloc
> >> allocation. Allowed once, they will repeat over and over again.
> >> Moreover lifetime of the allocated object can differ from
> >> In addition the lifetime of the dying task.
> >
> > Can't we add fatal_signal_pending(current) test to vmalloc() loop?
We can and we should.
> 1) this has been done in the past but has been reverted later.
The reason for that should be addressed IIRC.
> 2) any vmalloc changes will affect non-memcg allocations too.
> If we're doing memcg-related checks it's better to do it in one place.
I think those two things are just orthogonal. Bailing out from vmalloc
early sounds reasonable to me on its own. Allocating a large thing that
is likely to go away with the allocating context is just a waste of
resources and potential reason to disruptions to others.
> 3) it is not vmalloc-only issue. Huge number of kmalloc page allocations
> from N concurrent threads will lead to the same problem.
Agreed. I do not think it is viable to sprinkle fatal_signal_pending or
similar checks all over the code. This should better be limited to
allocators and the charging function.
Our assumption that is described in the code simply doesn't hold and it
is close to impossible to check all charging paths to bail out properly
so I think we should just remove that optimistic attitude and do not
force charges unless that is absolutely necessary (e.g. __GFP_NOFAIL) or
impractical (e.g. atomic allocations) and bound.
I didn't get to review the patch yet. This is a tricky area with many
unobvious corner cases. I will try find some time next week.
Thanks!
--
Michal Hocko
SUSE Labs
next prev parent reply other threads:[~2021-09-10 14:55 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-09-10 12:39 Vasily Averin
2021-09-10 13:04 ` Tetsuo Handa
2021-09-10 13:20 ` Vasily Averin
2021-09-10 14:55 ` Michal Hocko [this message]
2021-09-13 8:29 ` Vasily Averin
2021-09-13 8:42 ` Michal Hocko
2021-09-17 8:06 ` [PATCH mm] vmalloc: back off when the current task is OOM-killed Vasily Averin
2021-09-19 23:31 ` Andrew Morton
2021-09-20 1:22 ` Tetsuo Handa
2021-09-20 10:59 ` Vasily Averin
2021-09-21 18:55 ` Andrew Morton
2021-09-22 6:18 ` Vasily Averin
2021-09-22 12:27 ` Michal Hocko
2021-09-23 6:49 ` Vasily Averin
2021-09-24 7:55 ` Michal Hocko
2021-09-27 9:36 ` Vasily Averin
2021-09-27 11:08 ` Michal Hocko
2021-10-05 13:52 ` [PATCH mm v2] " Vasily Averin
2021-10-05 14:00 ` Vasily Averin
2021-10-07 10:47 ` Michal Hocko
2021-10-07 19:55 ` Andrew Morton
2021-09-10 13:07 ` [PATCH memcg] memcg: prohibit unconditional exceeding the limit of dying tasks Vasily Averin
2021-09-13 7:51 ` Vasily Averin
2021-09-13 8:39 ` Michal Hocko
2021-09-13 9:37 ` Vasily Averin
2021-09-13 10:10 ` Michal Hocko
2021-09-13 8:53 ` Michal Hocko
2021-09-13 10:35 ` Vasily Averin
2021-09-13 10:55 ` Michal Hocko
2021-09-14 10:01 ` Vasily Averin
2021-09-14 10:10 ` [PATCH memcg v2] " Vasily Averin
2021-09-16 12:55 ` Michal Hocko
2021-10-05 13:52 ` [PATCH memcg v3] " Vasily Averin
2021-10-05 14:55 ` Michal Hocko
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=YTtx3toUOMLXk4GZ@dhcp22.suse.cz \
--to=mhocko@suse.com \
--cc=akpm@linux-foundation.org \
--cc=cgroups@vger.kernel.org \
--cc=hannes@cmpxchg.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=penguin-kernel@i-love.sakura.ne.jp \
--cc=vdavydov.dev@gmail.com \
--cc=vvs@virtuozzo.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox