On Tue, May 10, 2022 at 1:53 PM Michal Hocko <mhocko@xxxxxxxx> wrote: > > On Tue 10-05-22 09:31:50, Suren Baghdasaryan wrote: > > On Tue, May 10, 2022 at 6:06 AM Michal Hocko <mhocko@xxxxxxxx> wrote: > > > > > > On Mon 09-05-22 20:00:13, Suren Baghdasaryan wrote: > > > > With the oom-killer being able to operate on locked pages, exit_mmap > > > > does not need to ensure that oom_reap_task_mm is done before it can > > > > proceed. Instead it can rely on mmap_lock write lock to prevent > > > > oom-killer from operating on the vma tree while it's freeing page > > > > tables. exit_mmap can hold mmap_lock read lock when unmapping vmas > > > > and then take mmap_lock write lock before freeing page tables. > > > > > > The changelog is rather light on nasty details which might be good but > > > for the sake of our future us let's be more verbose so that we do not > > > have to reinvent the prior history each time we are looking into this > > > code. I would go with something like this instead: > > > " > > > The primary reason to invoke the oom reaper from the exit_mmap path used > > > to be a prevention of an excessive oom killing if the oom victim exit > > > races with the oom reaper (see 212925802454 ("mm: oom: let oom_reap_task > > > and exit_mmap run concurrently") for more details. The invocation has > > > moved around since then because of the interaction with the munlock > > > logic but the underlying reason has remained the same (see 27ae357fa82b > > > ("mm, oom: fix concurrent munlock and oom reaper unmap, v3"). > > > > > > Munlock code is no longer a problem since a213e5cf71cb ("mm/munlock: > > > delete munlock_vma_pages_all(), allow oomreap") and there shouldn't be > > > any blocking operation before the memory is unmapped by exit_mmap so > > > the oom reaper invocation can be dropped. The unmapping part can be done > > > with the non-exclusive mmap_sem and the exclusive one is only required > > > when page tables are freed. > > > > > > Remove the oom_reaper from exit_mmap which will make the code easier to > > > read. This is really unlikely to make any observable difference although > > > some microbenchmarks could benefit from one less branch that needs to be > > > evaluated even though it almost never is true. > > > " > > > > Looks great! Thanks for collecting all the history. Will update the description. > > Please make sure you double check the story. This is mostly my > recollection and brief reading through the said commits. I might > misremember here and there. Will do. Thanks! > -- > Michal Hocko > SUSE Labs