Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1682968 > unrolled thread
| Started by | Balbir Singh <bsingharora@gmail.com> |
|---|---|
| First post | 2017-07-07 09:10 +0200 |
| Last post | 2017-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.
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
| From | Balbir Singh <bsingharora@gmail.com> |
|---|---|
| Date | 2017-07-07 09:10 +0200 |
| Subject | Re: [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]
| From | Laurent Dufour <ldufour@linux.vnet.ibm.com> |
|---|---|
| Date | 2017-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]
| From | Balbir Singh <bsingharora@gmail.com> |
|---|---|
| Date | 2017-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