Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1682968 > unrolled thread

Re: [RFC v5 01/11] mm: Dont assume page-table invariance during faults

Started byBalbir Singh <bsingharora@gmail.com>
First post2017-07-07 09:10 +0200
Last post2017-07-11 06:30 +0200
Articles 3 — 2 participants

Back to article view | Back to linux.kernel

This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by below is the oldest one visible, not the original post.


Contents

  Re: [RFC v5 01/11] mm: Dont assume page-table invariance during  faults Balbir Singh <bsingharora@gmail.com> - 2017-07-07 09:10 +0200
    Re: [RFC v5 01/11] mm: Dont assume page-table invariance during  faults Laurent Dufour <ldufour@linux.vnet.ibm.com> - 2017-07-10 19:50 +0200
      Re: [RFC v5 01/11] mm: Dont assume page-table invariance during  faults Balbir Singh <bsingharora@gmail.com> - 2017-07-11 06:30 +0200

#1682968 — Re: [RFC v5 01/11] mm: Dont assume page-table invariance during faults

FromBalbir Singh <bsingharora@gmail.com>
Date2017-07-07 09:10 +0200
SubjectRe: [RFC v5 01/11] mm: Dont assume page-table invariance during faults
Message-ID<u0vyN-sw-11@gated-at.bofh.it>
On Fri, 2017-06-16 at 19:52 +0200, Laurent Dufour wrote:
> From: Peter Zijlstra <peterz@infradead.org>
> 
> One of the side effects of speculating on faults (without holding
> mmap_sem) is that we can race with free_pgtables() and therefore we
> cannot assume the page-tables will stick around.
> 
> Remove the relyance on the pte pointer.
             ^^ reliance

Looking at the changelog and the code the impact is not clear.
It looks like after this patch we always assume the pte is not
the same. What is the impact of this patch?

Balbir Singh.

[toc] | [next] | [standalone]


#1684542

FromLaurent Dufour <ldufour@linux.vnet.ibm.com>
Date2017-07-10 19:50 +0200
Message-ID<u1KYO-81W-7@gated-at.bofh.it>
In reply to#1682968
On 07/07/2017 09:07, Balbir Singh wrote:
> On Fri, 2017-06-16 at 19:52 +0200, Laurent Dufour wrote:
>> From: Peter Zijlstra <peterz@infradead.org>
>>
>> One of the side effects of speculating on faults (without holding
>> mmap_sem) is that we can race with free_pgtables() and therefore we
>> cannot assume the page-tables will stick around.
>>
>> Remove the relyance on the pte pointer.
>              ^^ reliance
> 
> Looking at the changelog and the code the impact is not clear.
> It looks like after this patch we always assume the pte is not
> the same. What is the impact of this patch?

Hi Balbir,

In most of the case pte_unmap_same() was returning 1, which meaning that
do_swap_page() should do its processing.

So in most of the case there will be no impact.

Now regarding the case where pte_unmap_safe() was returning 0, and thus
do_swap_page return 0 too, this happens when the page has already been
swapped back. This may happen before do_swap_page() get called or while in
the call to do_swap_page(). In that later case, the check done when
swapin_readahead() returns will detect that case.

The worst case would be that a page fault is occuring on 2 threads at the
same time on the same swapped out page. In that case one thread will take
much time looping in __read_swap_cache_async(). But in the regular page
fault path, this is even worse since the thread would wait for semaphore to
be released before starting anything.

Cheers,
Laurent.

[toc] | [prev] | [next] | [standalone]


#1684767

FromBalbir Singh <bsingharora@gmail.com>
Date2017-07-11 06:30 +0200
Message-ID<u1UY9-5Z1-1@gated-at.bofh.it>
In reply to#1684542
On Mon, 10 Jul 2017 19:48:43 +0200
Laurent Dufour <ldufour@linux.vnet.ibm.com> wrote:

> On 07/07/2017 09:07, Balbir Singh wrote:
> > On Fri, 2017-06-16 at 19:52 +0200, Laurent Dufour wrote:  
> >> From: Peter Zijlstra <peterz@infradead.org>
> >>
> >> One of the side effects of speculating on faults (without holding
> >> mmap_sem) is that we can race with free_pgtables() and therefore we
> >> cannot assume the page-tables will stick around.
> >>
> >> Remove the relyance on the pte pointer.  
> >              ^^ reliance
> > 
> > Looking at the changelog and the code the impact is not clear.
> > It looks like after this patch we always assume the pte is not
> > the same. What is the impact of this patch?  
> 
> Hi Balbir,
> 
> In most of the case pte_unmap_same() was returning 1, which meaning that
> do_swap_page() should do its processing.
> 
> So in most of the case there will be no impact.
> 
> Now regarding the case where pte_unmap_safe() was returning 0, and thus
> do_swap_page return 0 too, this happens when the page has already been
> swapped back. This may happen before do_swap_page() get called or while in
> the call to do_swap_page(). In that later case, the check done when
> swapin_readahead() returns will detect that case.
> 
> The worst case would be that a page fault is occuring on 2 threads at the
> same time on the same swapped out page. In that case one thread will take
> much time looping in __read_swap_cache_async(). But in the regular page
> fault path, this is even worse since the thread would wait for semaphore to
> be released before starting anything.
> 
>

Sounds good!

Thanks,
Balbir Singh 

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web