From: Oleg Nesterov <oleg@redhat.com>
To: Suren Baghdasaryan <surenb@google.com>
Cc: mhocko@suse.com, christian.brauner@ubuntu.com, mingo@kernel.org,
peterz@infradead.org, tglx@linutronix.de, esyr@redhat.com,
christian@kellner.me, areber@redhat.com, shakeelb@google.com,
cyphar@cyphar.com, adobriyan@gmail.com,
akpm@linux-foundation.org, ebiederm@xmission.com,
gladkov.alexey@gmail.com, walken@google.com,
daniel.m.jordan@oracle.com, avagin@gmail.com,
bernd.edlinger@hotmail.de, john.johansen@canonical.com,
laoar.shao@gmail.com, timmurray@google.com, minchan@kernel.org,
kernel-team@android.com, linux-kernel@vger.kernel.org,
linux-fsdevel@vger.kernel.org, linux-mm@kvack.org,
Michal Hocko <mhocko@kernel.org>
Subject: Re: [PATCH 1/1] mm, oom_adj: don't loop through tasks in __set_oom_adj when not necessary
Date: Thu, 20 Aug 2020 12:55:56 +0200 [thread overview]
Message-ID: <20200820105555.GA4546@redhat.com> (raw)
In-Reply-To: <20200820002053.1424000-1-surenb@google.com>
On 08/19, Suren Baghdasaryan wrote:
>
> Since the combination of CLONE_VM and !CLONE_SIGHAND is rarely
> used the additional mutex lock in that path of the clone() syscall should
> not affect its overall performance. Clearing the MMF_PROC_SHARED flag
> (when the last process sharing the mm exits) is left out of this patch to
> keep it simple and because it is believed that this threading model is
> rare.
vfork() ?
> --- a/kernel/fork.c
> +++ b/kernel/fork.c
> @@ -1403,6 +1403,15 @@ static int copy_mm(unsigned long clone_flags, struct task_struct *tsk)
> if (clone_flags & CLONE_VM) {
> mmget(oldmm);
> mm = oldmm;
> + if (!(clone_flags & CLONE_SIGHAND)) {
I agree with Christian, you need CLONE_THREAD
> + /* We need to synchronize with __set_oom_adj */
> + mutex_lock(&oom_adj_lock);
> + set_bit(MMF_PROC_SHARED, &mm->flags);
> + /* Update the values in case they were changed after copy_signal */
> + tsk->signal->oom_score_adj = current->signal->oom_score_adj;
> + tsk->signal->oom_score_adj_min = current->signal->oom_score_adj_min;
> + mutex_unlock(&oom_adj_lock);
I don't understand how this can close the race with __set_oom_adj...
What if __set_oom_adj() is called right after mutex_unlock() ? It will see
MMF_PROC_SHARED, but for_each_process() won't find the new child until
copy_process() does list_add_tail_rcu(&p->tasks, &init_task.tasks) ?
Oleg.
next prev parent reply other threads:[~2020-08-20 10:56 UTC|newest]
Thread overview: 50+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-08-20 0:20 [PATCH 1/1] mm, oom_adj: don't loop through tasks in __set_oom_adj when not necessary Suren Baghdasaryan
2020-08-20 5:56 ` Michal Hocko
2020-08-20 8:46 ` Christian Brauner
2020-08-20 9:09 ` Michal Hocko
2020-08-20 10:32 ` Christian Brauner
2020-08-20 11:14 ` Michal Hocko
2020-08-20 10:55 ` Oleg Nesterov [this message]
2020-08-20 11:13 ` Michal Hocko
2020-08-20 11:29 ` Michal Hocko
2020-08-20 11:41 ` Oleg Nesterov
2020-08-20 11:47 ` Christian Brauner
2020-08-20 11:30 ` Christian Brauner
2020-08-20 11:42 ` Michal Hocko
2020-08-20 12:41 ` Michal Hocko
2020-08-20 13:43 ` Christian Brauner
2020-08-20 12:34 ` Eric W. Biederman
2020-08-20 12:42 ` Michal Hocko
2020-08-20 12:45 ` Eric W. Biederman
2020-08-20 12:54 ` Eric W. Biederman
2020-08-20 13:26 ` Michal Hocko
2020-08-20 13:34 ` Christian Brauner
2020-08-20 13:48 ` Tetsuo Handa
2020-08-20 14:00 ` Christian Brauner
2020-08-20 14:15 ` Michal Hocko
2020-08-20 14:26 ` Tetsuo Handa
2020-08-20 14:34 ` Michal Hocko
2020-08-20 14:18 ` Tetsuo Handa
2020-08-20 14:49 ` Eric W. Biederman
2020-08-20 15:06 ` Christian Brauner
2020-08-20 15:56 ` Suren Baghdasaryan
2020-08-20 16:26 ` Michal Hocko
2020-08-20 16:29 ` Christian Brauner
2020-08-20 16:47 ` Suren Baghdasaryan
2020-08-21 4:39 ` Eric W. Biederman
2020-08-21 7:17 ` Michal Hocko
2020-08-21 11:15 ` Oleg Nesterov
2020-08-21 15:28 ` Suren Baghdasaryan
2020-08-21 16:06 ` Suren Baghdasaryan
2020-08-21 16:37 ` Oleg Nesterov
2020-08-21 17:22 ` Suren Baghdasaryan
2020-08-21 16:33 ` Oleg Nesterov
2020-08-21 17:59 ` Oleg Nesterov
2020-08-21 18:53 ` Suren Baghdasaryan
2020-08-24 20:03 ` Suren Baghdasaryan
2020-08-20 13:41 ` Eric W. Biederman
2020-08-20 14:04 ` Oleg Nesterov
2020-08-20 14:36 ` Oleg Nesterov
2020-08-20 15:06 ` Eric W. Biederman
2020-08-20 14:43 ` Eric W. Biederman
2020-08-20 14:12 ` 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=20200820105555.GA4546@redhat.com \
--to=oleg@redhat.com \
--cc=adobriyan@gmail.com \
--cc=akpm@linux-foundation.org \
--cc=areber@redhat.com \
--cc=avagin@gmail.com \
--cc=bernd.edlinger@hotmail.de \
--cc=christian.brauner@ubuntu.com \
--cc=christian@kellner.me \
--cc=cyphar@cyphar.com \
--cc=daniel.m.jordan@oracle.com \
--cc=ebiederm@xmission.com \
--cc=esyr@redhat.com \
--cc=gladkov.alexey@gmail.com \
--cc=john.johansen@canonical.com \
--cc=kernel-team@android.com \
--cc=laoar.shao@gmail.com \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mhocko@kernel.org \
--cc=mhocko@suse.com \
--cc=minchan@kernel.org \
--cc=mingo@kernel.org \
--cc=peterz@infradead.org \
--cc=shakeelb@google.com \
--cc=surenb@google.com \
--cc=tglx@linutronix.de \
--cc=timmurray@google.com \
--cc=walken@google.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 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.