Re: [PATCH] mm: Free per cpu pages async to shorten program exit time

From: Andrew Morton
Date: Sun Oct 10 2021 - 18:48:13 EST


On Fri, 8 Oct 2021 14:38:15 +0200 Vlastimil Babka <vbabka@xxxxxxx> wrote:

> On 10/8/21 10:17, David Hildenbrand wrote:
> > On 08.10.21 08:39, ultrachin@xxxxxxx wrote:
> >> From: chen xiaoguang <xiaoggchen@xxxxxxxxxxx>
> >>
> >> The exit time is long when program allocated big memory and
> >> the most time consuming part is free memory which takes 99.9%
> >> of the total exit time. By using async free we can save 25% of
> >> exit time.
> >>
> >> Signed-off-by: chen xiaoguang <xiaoggchen@xxxxxxxxxxx>
> >> Signed-off-by: zeng jingxiang <linuszeng@xxxxxxxxxxx>
> >> Signed-off-by: lu yihui <yihuilu@xxxxxxxxxxx>
> >
> > I recently discussed with Claudio if it would be possible to tear down the
> > process MM deferred, because for some use cases (secure/encrypted
> > virtualization, very large mmaps) tearing down the page tables is already
> > the much more expensive operation.
>
> OK, but what exactly is the benefit here? The cpu time will have to be spent
> in any case, but we move it to a context that's not accounted to the exiting
> process. Is that good? Also if it's a large process and restarts
> immediately, allocating all the memory back again, it might not be available
> as it's still being freed in the background, leading to a risk of OOM?

Yes, concerns. Some way of blocking the oom-killer if this freeing is
in progress sounds needed.

Dumb question: can the exiting process just clone(CLONE_MM) then exit?
Let the child take the burden of all the cleanup?