All of lore.kernel.org
 help / color / mirror / Atom feed
From: Suren Baghdasaryan <surenb@google.com>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: Michal Hocko <mhocko@kernel.org>, Michal Hocko <mhocko@suse.com>,
	David Rientjes <rientjes@google.com>,
	Matthew Wilcox <willy@infradead.org>,
	Johannes Weiner <hannes@cmpxchg.org>,
	Roman Gushchin <guro@fb.com>, Rik van Riel <riel@surriel.com>,
	Minchan Kim <minchan@kernel.org>,
	Christian Brauner <christian@brauner.io>,
	Christoph Hellwig <hch@infradead.org>,
	Oleg Nesterov <oleg@redhat.com>,
	David Hildenbrand <david@redhat.com>,
	Jann Horn <jannh@google.com>, Shakeel Butt <shakeelb@google.com>,
	Andy Lutomirski <luto@kernel.org>,
	Christian Brauner <christian.brauner@ubuntu.com>,
	Florian Weimer <fweimer@redhat.com>,
	Jan Engelhardt <jengelh@inai.de>,
	Linux API <linux-api@vger.kernel.org>,
	linux-mm <linux-mm@kvack.org>,
	LKML <linux-kernel@vger.kernel.org>,
	kernel-team <kernel-team@android.com>
Subject: Re: [PATCH 1/1] mm: prevent a race between process_mrelease and exit_mmap
Date: Thu, 21 Oct 2021 22:23:09 -0700	[thread overview]
Message-ID: <CAJuCfpEcvuYu5OhXMVz5g4OK+-a_jnF9MNtu17VP5V23r2oWtw@mail.gmail.com> (raw)
In-Reply-To: <20211021192454.72ada9b3d59460cc3c037d2c@linux-foundation.org>

On Thu, Oct 21, 2021 at 7:25 PM Andrew Morton <akpm@linux-foundation.org> wrote:
>
> On Thu, 21 Oct 2021 18:46:58 -0700 Suren Baghdasaryan <surenb@google.com> wrote:
>
> > Race between process_mrelease and exit_mmap, where free_pgtables is
> > called while __oom_reap_task_mm is in progress, leads to kernel crash
> > during pte_offset_map_lock call. oom-reaper avoids this race by setting
> > MMF_OOM_VICTIM flag and causing exit_mmap to take and release
> > mmap_write_lock, blocking it until oom-reaper releases mmap_read_lock.
> > Reusing MMF_OOM_VICTIM for process_mrelease would be the simplest way to
> > fix this race, however that would be considered a hack. Fix this race
> > by elevating mm->mm_users and preventing exit_mmap from executing until
> > process_mrelease is finished. Patch slightly refactors the code to adapt
> > for a possible mmget_not_zero failure.
> > This fix has considerable negative impact on process_mrelease performance
> > and will likely need later optimization.
>
> Has the impact been quantified?

A ball-park figure for a large process (6GB) it takes 4x times longer
for process_mrelease to exit.

>
> And where's the added cost happening?  The changes all look quite
> lightweight?

I think it's caused by the fact that exit_mmap and all other cleanup
routines happening on the last mmput are postponed until
process_mrelease finishes __oom_reap_task_mm and drops mm->mm_users. I
suspect all that cleanup is happening at the end of process_mrelease
now and that might be contributing to the regression. I didn't have
time yet to fully understand all the reasons for that regression but
wanted to fix the crash first. Will proceed with more investigation
and hopefully with a quick fix for the lost performance.

>
> --
> To unsubscribe from this group and stop receiving emails from it, send an email to kernel-team+unsubscribe@android.com.
>

  reply	other threads:[~2021-10-22  5:23 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-10-22  1:46 [PATCH 1/1] mm: prevent a race between process_mrelease and exit_mmap Suren Baghdasaryan
2021-10-22  2:24 ` Andrew Morton
2021-10-22  5:23   ` Suren Baghdasaryan [this message]
2021-10-22  8:03 ` Michal Hocko
2021-10-22 11:32   ` Matthew Wilcox
2021-10-22 12:04     ` Michal Hocko
2021-10-22 17:38   ` Suren Baghdasaryan
2021-10-27 16:08     ` Suren Baghdasaryan
2021-10-27 17:33       ` Matthew Wilcox
2021-10-27 17:42         ` Suren Baghdasaryan
2021-10-27 17:51           ` Matthew Wilcox
2021-10-27 18:00             ` Suren Baghdasaryan
2021-10-29 13:03       ` Michal Hocko
2021-10-29 16:07         ` Suren Baghdasaryan
2021-11-01  8:37           ` Michal Hocko
2021-11-01 15:44             ` Suren Baghdasaryan
2021-11-01 19:59               ` Suren Baghdasaryan
2021-11-02  7:58               ` Michal Hocko
2021-11-02 15:14                 ` Suren Baghdasaryan
2021-11-09 19:01                   ` Suren Baghdasaryan
2021-11-09 19:26                     ` Michal Hocko
2021-11-09 19:37                       ` Suren Baghdasaryan
2021-11-09 19:50                         ` Michal Hocko
2021-11-09 20:02                           ` Suren Baghdasaryan
2021-11-09 20:10                             ` Michal Hocko
2021-11-09 21:10                               ` Suren Baghdasaryan
2021-11-11  1:49                                 ` Suren Baghdasaryan
2021-11-11  9:20                                   ` Michal Hocko
2021-11-11 15:02                                     ` Suren Baghdasaryan
2021-11-12  8:58                                       ` Michal Hocko
2021-11-12 16:00                                         ` Suren Baghdasaryan
2021-11-09 19:41                       ` 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=CAJuCfpEcvuYu5OhXMVz5g4OK+-a_jnF9MNtu17VP5V23r2oWtw@mail.gmail.com \
    --to=surenb@google.com \
    --cc=akpm@linux-foundation.org \
    --cc=christian.brauner@ubuntu.com \
    --cc=christian@brauner.io \
    --cc=david@redhat.com \
    --cc=fweimer@redhat.com \
    --cc=guro@fb.com \
    --cc=hannes@cmpxchg.org \
    --cc=hch@infradead.org \
    --cc=jannh@google.com \
    --cc=jengelh@inai.de \
    --cc=kernel-team@android.com \
    --cc=linux-api@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=luto@kernel.org \
    --cc=mhocko@kernel.org \
    --cc=mhocko@suse.com \
    --cc=minchan@kernel.org \
    --cc=oleg@redhat.com \
    --cc=riel@surriel.com \
    --cc=rientjes@google.com \
    --cc=shakeelb@google.com \
    --cc=willy@infradead.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.