From: Yang Shi <yang.shi@linux.alibaba.com>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: mhocko@kernel.org, willy@infradead.org,
ldufour@linux.vnet.ibm.com, peterz@infradead.org,
mingo@redhat.com, acme@kernel.org,
alexander.shishkin@linux.intel.com, jolsa@redhat.com,
namhyung@kernel.org, tglx@linutronix.de, hpa@zytor.com,
linux-mm@kvack.org, x86@kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [RFC v3 PATCH 4/5] mm: mmap: zap pages with read mmap_sem for large mapping
Date: Fri, 29 Jun 2018 19:28:15 -0700 [thread overview]
Message-ID: <084aeccb-2c54-2299-8bf0-29a10cc0186e@linux.alibaba.com> (raw)
In-Reply-To: <20180629183501.9e30c26135f11853245c56c7@linux-foundation.org>
On 6/29/18 6:35 PM, Andrew Morton wrote:
> On Sat, 30 Jun 2018 06:39:44 +0800 Yang Shi <yang.shi@linux.alibaba.com> wrote:
>
>
> And...
>
>> diff --git a/mm/mmap.c b/mm/mmap.c
>> index 87dcf83..d61e08b 100644
>> --- a/mm/mmap.c
>> +++ b/mm/mmap.c
>> @@ -2763,6 +2763,128 @@ static int munmap_lookup_vma(struct mm_struct *mm, struct vm_area_struct **vma,
>> return 1;
>> }
>>
>> +/* Consider PUD size or 1GB mapping as large mapping */
>> +#ifdef HPAGE_PUD_SIZE
>> +#define LARGE_MAP_THRESH HPAGE_PUD_SIZE
>> +#else
>> +#define LARGE_MAP_THRESH (1 * 1024 * 1024 * 1024)
>> +#endif
> So this assumes that 32-bit machines cannot have 1GB mappings (fair
> enough) and this is the sole means by which we avoid falling into the
> "len >= LARGE_MAP_THRESH" codepath, which will behave very badly, at
> least because for such machines, VM_DEAD is zero.
>
> This is rather ugly and fragile. And, I guess, explains why we can't
> give all mappings this treatment: 32-bit machines can't do it. And
> we're adding a bunch of code to 32-bit kernels which will never be
> executed.
>
> I'm thinking it would be better to be much more explicit with "#ifdef
> CONFIG_64BIT" in this code, rather than relying upon the above magic.
>
> But I tend to think that the fact that we haven't solved anything on
> locked vmas or on uprobed mappings is a shostopper for the whole
> approach :(
I agree it is not that perfect. But, it still could improve the most use
cases.
For the locked vmas and hugetlb vmas, unmapping operations need modify
vm_flags. But, I'm wondering we might be able to separate unmap and
vm_flags update. Because we know they will be unmapped right away, the
vm_flags might be able to be updated in write mmap_sem critical section
before the actual unmap is called or after it. This is just off the top
of my head.
For uprobed mappings, I'm not sure how vital it is to this case.
Thanks,
Yang
>
next prev parent reply other threads:[~2018-06-30 2:28 UTC|newest]
Thread overview: 48+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-06-29 22:39 [RFC v3 PATCH 0/5] mm: zap pages with read mmap_sem in munmap " Yang Shi
2018-06-29 22:39 ` [RFC v3 PATCH 1/5] uprobes: make vma_has_uprobes non-static Yang Shi
2018-06-29 22:39 ` [RFC v3 PATCH 2/5] mm: introduce VM_DEAD flag Yang Shi
2018-07-02 13:40 ` Michal Hocko
2018-06-29 22:39 ` [RFC v3 PATCH 3/5] mm: refactor do_munmap() to extract the common part Yang Shi
2018-07-02 13:42 ` Michal Hocko
2018-07-02 16:59 ` Yang Shi
2018-07-02 17:58 ` Michal Hocko
2018-07-02 18:02 ` Yang Shi
2018-06-29 22:39 ` [RFC v3 PATCH 4/5] mm: mmap: zap pages with read mmap_sem for large mapping Yang Shi
2018-06-30 1:28 ` Andrew Morton
2018-06-30 2:10 ` Yang Shi
2018-06-30 1:35 ` Andrew Morton
2018-06-30 2:28 ` Yang Shi [this message]
2018-06-30 3:15 ` Andrew Morton
2018-06-30 4:26 ` Yang Shi
2018-07-03 0:01 ` Yang Shi
2018-07-02 14:05 ` Michal Hocko
2018-07-02 20:48 ` Andrew Morton
2018-07-03 6:09 ` Michal Hocko
2018-07-03 16:53 ` Yang Shi
2018-07-03 18:22 ` Yang Shi
2018-07-04 8:13 ` Michal Hocko
2018-07-02 12:33 ` Kirill A. Shutemov
2018-07-02 12:49 ` Michal Hocko
2018-07-03 8:12 ` Kirill A. Shutemov
2018-07-03 8:27 ` Michal Hocko
2018-07-03 9:19 ` Kirill A. Shutemov
2018-07-03 11:34 ` Michal Hocko
2018-07-03 12:14 ` Kirill A. Shutemov
2018-07-03 17:00 ` Yang Shi
2018-07-02 17:19 ` Yang Shi
2018-07-03 8:07 ` Kirill A. Shutemov
2018-07-02 13:53 ` Michal Hocko
2018-07-02 17:07 ` Yang Shi
2018-06-29 22:39 ` [RFC v3 PATCH 5/5] x86: check VM_DEAD flag in page fault Yang Shi
2018-07-02 8:45 ` Laurent Dufour
2018-07-02 12:15 ` Michal Hocko
2018-07-02 12:26 ` Laurent Dufour
2018-07-02 12:45 ` Michal Hocko
2018-07-02 13:33 ` Laurent Dufour
2018-07-02 13:37 ` Michal Hocko
2018-07-02 17:24 ` Yang Shi
2018-07-02 17:57 ` Michal Hocko
2018-07-02 18:10 ` Yang Shi
2018-07-03 6:17 ` Michal Hocko
2018-07-03 16:50 ` Yang Shi
2018-07-02 13:39 ` [RFC v3 PATCH 0/5] mm: zap pages with read mmap_sem in munmap for large mapping 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=084aeccb-2c54-2299-8bf0-29a10cc0186e@linux.alibaba.com \
--to=yang.shi@linux.alibaba.com \
--cc=acme@kernel.org \
--cc=akpm@linux-foundation.org \
--cc=alexander.shishkin@linux.intel.com \
--cc=hpa@zytor.com \
--cc=jolsa@redhat.com \
--cc=ldufour@linux.vnet.ibm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mhocko@kernel.org \
--cc=mingo@redhat.com \
--cc=namhyung@kernel.org \
--cc=peterz@infradead.org \
--cc=tglx@linutronix.de \
--cc=willy@infradead.org \
--cc=x86@kernel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox