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: Mon, 2 Jul 2018 17:01:12 -0700 [thread overview]
Message-ID: <06df816f-b8b7-f6c0-3710-baad99fb3213@linux.alibaba.com> (raw)
In-Reply-To: <ce2f93d3-fe0e-89c2-5465-94cfa974f1ea@linux.alibaba.com>
On 6/29/18 9:26 PM, Yang Shi wrote:
>
>
> On 6/29/18 8:15 PM, Andrew Morton wrote:
>> On Fri, 29 Jun 2018 19:28:15 -0700 Yang Shi
>> <yang.shi@linux.alibaba.com> wrote:
>>
>>>
>>>> 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.
>> Well, those unaddressed usecases will need to be fixed at some point.
>
> Yes, definitely.
>
>> What's our plan for that?
>
> As I mentioned in the earlier email, locked and hugetlb cases might be
> able to be solved by separating vm_flags update and actual unmap. I
> will look into it further later.
By looking into this furtheri 1/4 ? I think both mlocked and hugetlb vmas can
be handled.
For mlocked vmas, it is easy since we acquires write mmap_sem before
unmapping, so VM_LOCK flags can be cleared here then unmap, just like
what the regular path does.
For hugetlb vmas, the VM_MAYSHARE flag is just checked by
huge_pmd_share() in hugetlb_fault()->huge_pte_alloc(), another call site
is dup_mm()->copy_page_range()->copy_hugetlb_page_range(), we don't care
this call chain in this case.
So we may expand VM_DEAD to hugetlb_fault().A Michal suggested to check
VM_DEAD in check_stable_address_space(), so it would be called in
hugetlb_fault() too (not in current code), then the page fault handler
would bail out before huge_pte_alloc() is called.
With this trick, we don't have to care about when the vm_flags is
updated, we can unmap hugetlb vmas in read mmap_sem critical section,
then update the vm_flags with write mmap_sem held or before the unmap.
Yang
>
> From my point of view, uprobe mapping sounds not that vital.
>
>>
>> Would one of your earlier designs have addressed all usecases? I
>> expect the dumb unmap-a-little-bit-at-a-time approach would have?
>
> Yes. The v1 design does unmap with holding write map_sem. So, the
> vm_flags update is not a problem.
>
> Thanks,
> Yang
>
>>
>>> 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-07-03 0:01 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 for large mapping 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
2018-06-30 3:15 ` Andrew Morton
2018-06-30 4:26 ` Yang Shi
2018-07-03 0:01 ` Yang Shi [this message]
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=06df816f-b8b7-f6c0-3710-baad99fb3213@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;
as well as URLs for NNTP newsgroup(s).