From: Michal Hocko <mhocko@kernel.org> To: "Kirill A. Shutemov" <kirill@shutemov.name> Cc: Andrew Morton <akpm@linux-foundation.org>, David Rientjes <rientjes@google.com>, Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>, Oleg Nesterov <oleg@redhat.com>, Hugh Dickins <hughd@google.com>, Andrea Arcangeli <aarcange@redhat.com>, linux-mm@kvack.org, LKML <linux-kernel@vger.kernel.org> Subject: Re: [PATCH] mm, oom: allow oom reaper to race with exit_mmap Date: Tue, 25 Jul 2017 18:04:00 +0200 [thread overview] Message-ID: <20170725160359.GO26723@dhcp22.suse.cz> (raw) In-Reply-To: <20170725153110.qzfz7wpnxkjwh5bc@node.shutemov.name> On Tue 25-07-17 18:31:10, Kirill A. Shutemov wrote: > On Tue, Jul 25, 2017 at 05:23:00PM +0200, Michal Hocko wrote: > > what is stdev? > > Updated tables: > > 3 runs before the patch: > Min. 1st Qu. Median Mean 3rd Qu. Max. Stdev > 177200 205000 212900 217800 223700 2377000 32868 > 172400 201700 209700 214300 220600 1343000 31191 > 175700 203800 212300 217100 223000 1061000 31195 > > 3 runs after the patch: > Min. 1st Qu. Median Mean 3rd Qu. Max. Stdev > 175900 204800 213000 216400 223600 1989000 27210 > 180300 210900 219600 223600 230200 3184000 32609 > 182100 212500 222000 226200 232700 1473000 32138 High std/avg ~15% matches my measurements (mine were even higher ~20%) and that would suggest that 3% average difference is still somehing within a "noise". Anyway, I do not really need to take the lock unless the task is the oom victim. Could you try whether those numbers improve if the lock is conditional? Thanks! --- diff --git a/mm/mmap.c b/mm/mmap.c index 0eeb658caa30..ca8a274485f8 100644 --- a/mm/mmap.c +++ b/mm/mmap.c @@ -44,6 +44,7 @@ #include <linux/userfaultfd_k.h> #include <linux/moduleparam.h> #include <linux/pkeys.h> +#include <linux/oom.h> #include <linux/uaccess.h> #include <asm/cacheflush.h> @@ -2997,7 +2998,8 @@ void exit_mmap(struct mm_struct *mm) * oom reaper might race with exit_mmap so make sure we won't free * page tables or unmap VMAs under its feet */ - down_write(&mm->mmap_sem); + if (tsk_is_oom_victim(current)) + down_write(&mm->mmap_sem); free_pgtables(&tlb, vma, FIRST_USER_ADDRESS, USER_PGTABLES_CEILING); tlb_finish_mmu(&tlb, 0, -1); @@ -3012,7 +3014,8 @@ void exit_mmap(struct mm_struct *mm) } mm->mmap = NULL; vm_unacct_memory(nr_accounted); - up_write(&mm->mmap_sem); + if (tsk_is_oom_victim(current)) + up_write(&mm->mmap_sem); } /* Insert vm structure into process list sorted by address -- Michal Hocko SUSE Labs
WARNING: multiple messages have this Message-ID (diff)
From: Michal Hocko <mhocko@kernel.org> To: "Kirill A. Shutemov" <kirill@shutemov.name> Cc: Andrew Morton <akpm@linux-foundation.org>, David Rientjes <rientjes@google.com>, Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>, Oleg Nesterov <oleg@redhat.com>, Hugh Dickins <hughd@google.com>, Andrea Arcangeli <aarcange@redhat.com>, linux-mm@kvack.org, LKML <linux-kernel@vger.kernel.org> Subject: Re: [PATCH] mm, oom: allow oom reaper to race with exit_mmap Date: Tue, 25 Jul 2017 18:04:00 +0200 [thread overview] Message-ID: <20170725160359.GO26723@dhcp22.suse.cz> (raw) In-Reply-To: <20170725153110.qzfz7wpnxkjwh5bc@node.shutemov.name> On Tue 25-07-17 18:31:10, Kirill A. Shutemov wrote: > On Tue, Jul 25, 2017 at 05:23:00PM +0200, Michal Hocko wrote: > > what is stdev? > > Updated tables: > > 3 runs before the patch: > Min. 1st Qu. Median Mean 3rd Qu. Max. Stdev > 177200 205000 212900 217800 223700 2377000 32868 > 172400 201700 209700 214300 220600 1343000 31191 > 175700 203800 212300 217100 223000 1061000 31195 > > 3 runs after the patch: > Min. 1st Qu. Median Mean 3rd Qu. Max. Stdev > 175900 204800 213000 216400 223600 1989000 27210 > 180300 210900 219600 223600 230200 3184000 32609 > 182100 212500 222000 226200 232700 1473000 32138 High std/avg ~15% matches my measurements (mine were even higher ~20%) and that would suggest that 3% average difference is still somehing within a "noise". Anyway, I do not really need to take the lock unless the task is the oom victim. Could you try whether those numbers improve if the lock is conditional? Thanks! --- diff --git a/mm/mmap.c b/mm/mmap.c index 0eeb658caa30..ca8a274485f8 100644 --- a/mm/mmap.c +++ b/mm/mmap.c @@ -44,6 +44,7 @@ #include <linux/userfaultfd_k.h> #include <linux/moduleparam.h> #include <linux/pkeys.h> +#include <linux/oom.h> #include <linux/uaccess.h> #include <asm/cacheflush.h> @@ -2997,7 +2998,8 @@ void exit_mmap(struct mm_struct *mm) * oom reaper might race with exit_mmap so make sure we won't free * page tables or unmap VMAs under its feet */ - down_write(&mm->mmap_sem); + if (tsk_is_oom_victim(current)) + down_write(&mm->mmap_sem); free_pgtables(&tlb, vma, FIRST_USER_ADDRESS, USER_PGTABLES_CEILING); tlb_finish_mmu(&tlb, 0, -1); @@ -3012,7 +3014,8 @@ void exit_mmap(struct mm_struct *mm) } mm->mmap = NULL; vm_unacct_memory(nr_accounted); - up_write(&mm->mmap_sem); + if (tsk_is_oom_victim(current)) + up_write(&mm->mmap_sem); } /* Insert vm structure into process list sorted by address -- Michal Hocko SUSE Labs -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
next prev parent reply other threads:[~2017-07-25 16:04 UTC|newest] Thread overview: 71+ messages / expand[flat|nested] mbox.gz Atom feed top 2017-07-24 7:23 [PATCH] mm, oom: allow oom reaper to race with exit_mmap Michal Hocko 2017-07-24 7:23 ` Michal Hocko 2017-07-24 14:00 ` Kirill A. Shutemov 2017-07-24 14:00 ` Kirill A. Shutemov 2017-07-24 14:15 ` Michal Hocko 2017-07-24 14:15 ` Michal Hocko 2017-07-24 14:51 ` Kirill A. Shutemov 2017-07-24 14:51 ` Kirill A. Shutemov 2017-07-24 16:11 ` Michal Hocko 2017-07-24 16:11 ` Michal Hocko 2017-07-25 14:17 ` Kirill A. Shutemov 2017-07-25 14:17 ` Kirill A. Shutemov 2017-07-25 14:26 ` Michal Hocko 2017-07-25 14:26 ` Michal Hocko 2017-07-25 15:07 ` Kirill A. Shutemov 2017-07-25 15:07 ` Kirill A. Shutemov 2017-07-25 15:15 ` Michal Hocko 2017-07-25 15:15 ` Michal Hocko 2017-07-25 14:26 ` Michal Hocko 2017-07-25 15:17 ` Kirill A. Shutemov 2017-07-25 15:17 ` Kirill A. Shutemov 2017-07-25 15:23 ` Michal Hocko 2017-07-25 15:23 ` Michal Hocko 2017-07-25 15:31 ` Kirill A. Shutemov 2017-07-25 15:31 ` Kirill A. Shutemov 2017-07-25 16:04 ` Michal Hocko [this message] 2017-07-25 16:04 ` Michal Hocko 2017-07-25 19:19 ` Andrea Arcangeli 2017-07-25 19:19 ` Andrea Arcangeli 2017-07-26 5:45 ` Michal Hocko 2017-07-26 5:45 ` Michal Hocko 2017-07-26 16:29 ` Andrea Arcangeli 2017-07-26 16:29 ` Andrea Arcangeli 2017-07-26 16:43 ` Andrea Arcangeli 2017-07-26 16:43 ` Andrea Arcangeli 2017-07-27 6:50 ` Michal Hocko 2017-07-27 6:50 ` Michal Hocko 2017-07-27 14:55 ` Andrea Arcangeli 2017-07-27 14:55 ` Andrea Arcangeli 2017-07-28 6:23 ` Michal Hocko 2017-07-28 6:23 ` Michal Hocko 2017-07-28 1:58 ` [PATCH 1/1] mm: oom: let oom_reap_task and exit_mmap to run kbuild test robot 2017-08-15 0:20 ` [PATCH] mm, oom: allow oom reaper to race with exit_mmap David Rientjes 2017-08-15 0:20 ` David Rientjes 2017-07-24 15:27 ` Michal Hocko 2017-07-24 15:27 ` Michal Hocko 2017-07-24 16:42 ` kbuild test robot 2017-07-24 18:12 ` Michal Hocko 2017-07-24 18:12 ` Michal Hocko 2017-07-25 15:26 ` Andrea Arcangeli 2017-07-25 15:26 ` Andrea Arcangeli 2017-07-25 15:45 ` Michal Hocko 2017-07-25 15:45 ` Michal Hocko 2017-07-25 18:26 ` Andrea Arcangeli 2017-07-25 18:26 ` Andrea Arcangeli 2017-07-26 5:45 ` Michal Hocko 2017-07-26 5:45 ` Michal Hocko 2017-07-26 16:39 ` Andrea Arcangeli 2017-07-26 16:39 ` Andrea Arcangeli 2017-07-27 6:32 ` Michal Hocko 2017-07-27 6:32 ` Michal Hocko 2017-07-27 8:29 Manish Jaggi 2017-07-27 9:24 ` Michal Hocko 2017-08-10 8:16 Michal Hocko 2017-08-10 8:16 ` Michal Hocko 2017-08-10 18:05 ` Andrea Arcangeli 2017-08-10 18:05 ` Andrea Arcangeli 2017-08-10 18:51 ` Michal Hocko 2017-08-10 18:51 ` Michal Hocko 2017-08-10 20:36 ` Michal Hocko 2017-08-10 20:36 ` 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=20170725160359.GO26723@dhcp22.suse.cz \ --to=mhocko@kernel.org \ --cc=aarcange@redhat.com \ --cc=akpm@linux-foundation.org \ --cc=hughd@google.com \ --cc=kirill@shutemov.name \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-mm@kvack.org \ --cc=oleg@redhat.com \ --cc=penguin-kernel@I-love.SAKURA.ne.jp \ --cc=rientjes@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: linkBe 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.