Re: [PATCHv3 1/2] mm: introduce vm_ops->map_pages()

2014-07-24 Thread Konstantin Khlebnikov
On Thu, Jul 24, 2014 at 5:05 PM, Sasha Levin wrote: > On 07/23/2014 11:33 PM, Sasha Levin wrote: >> On 02/27/2014 02:53 PM, Kirill A. Shutemov wrote: >>> > The patch introduces new vm_ops callback ->map_pages() and uses it for >>> > mapping easy accessible pages around fault address. >>> > >>> >

Re: [PATCHv3 1/2] mm: introduce vm_ops->map_pages()

2014-07-24 Thread Sasha Levin
On 07/23/2014 11:33 PM, Sasha Levin wrote: > On 02/27/2014 02:53 PM, Kirill A. Shutemov wrote: >> > The patch introduces new vm_ops callback ->map_pages() and uses it for >> > mapping easy accessible pages around fault address. >> > >> > On read page fault, if filesystem provides ->map_pages(),

Re: [PATCHv3 1/2] mm: introduce vm_ops->map_pages()

2014-07-24 Thread Sasha Levin
On 07/24/2014 02:53 AM, Andrey Ryabinin wrote: > On 07/24/14 07:33, Sasha Levin wrote: >> > On 02/27/2014 02:53 PM, Kirill A. Shutemov wrote: >>> >> The patch introduces new vm_ops callback ->map_pages() and uses it for >>> >> mapping easy accessible pages around fault address. >>> >> >>> >> On

Re: [PATCHv3 1/2] mm: introduce vm_ops->map_pages()

2014-07-24 Thread Andrey Ryabinin
On 07/24/14 07:33, Sasha Levin wrote: > On 02/27/2014 02:53 PM, Kirill A. Shutemov wrote: >> The patch introduces new vm_ops callback ->map_pages() and uses it for >> mapping easy accessible pages around fault address. >> >> On read page fault, if filesystem provides ->map_pages(), we try to map

Re: [PATCHv3 1/2] mm: introduce vm_ops-map_pages()

2014-07-24 Thread Andrey Ryabinin
On 07/24/14 07:33, Sasha Levin wrote: On 02/27/2014 02:53 PM, Kirill A. Shutemov wrote: The patch introduces new vm_ops callback -map_pages() and uses it for mapping easy accessible pages around fault address. On read page fault, if filesystem provides -map_pages(), we try to map up to

Re: [PATCHv3 1/2] mm: introduce vm_ops-map_pages()

2014-07-24 Thread Sasha Levin
On 07/24/2014 02:53 AM, Andrey Ryabinin wrote: On 07/24/14 07:33, Sasha Levin wrote: On 02/27/2014 02:53 PM, Kirill A. Shutemov wrote: The patch introduces new vm_ops callback -map_pages() and uses it for mapping easy accessible pages around fault address. On read page fault, if

Re: [PATCHv3 1/2] mm: introduce vm_ops-map_pages()

2014-07-24 Thread Sasha Levin
On 07/23/2014 11:33 PM, Sasha Levin wrote: On 02/27/2014 02:53 PM, Kirill A. Shutemov wrote: The patch introduces new vm_ops callback -map_pages() and uses it for mapping easy accessible pages around fault address. On read page fault, if filesystem provides -map_pages(), we try to map

Re: [PATCHv3 1/2] mm: introduce vm_ops-map_pages()

2014-07-24 Thread Konstantin Khlebnikov
On Thu, Jul 24, 2014 at 5:05 PM, Sasha Levin sasha.le...@oracle.com wrote: On 07/23/2014 11:33 PM, Sasha Levin wrote: On 02/27/2014 02:53 PM, Kirill A. Shutemov wrote: The patch introduces new vm_ops callback -map_pages() and uses it for mapping easy accessible pages around fault address.

Re: [PATCHv3 1/2] mm: introduce vm_ops->map_pages()

2014-07-23 Thread Sasha Levin
On 02/27/2014 02:53 PM, Kirill A. Shutemov wrote: > The patch introduces new vm_ops callback ->map_pages() and uses it for > mapping easy accessible pages around fault address. > > On read page fault, if filesystem provides ->map_pages(), we try to map > up to FAULT_AROUND_PAGES pages around page

Re: [PATCHv3 1/2] mm: introduce vm_ops-map_pages()

2014-07-23 Thread Sasha Levin
On 02/27/2014 02:53 PM, Kirill A. Shutemov wrote: The patch introduces new vm_ops callback -map_pages() and uses it for mapping easy accessible pages around fault address. On read page fault, if filesystem provides -map_pages(), we try to map up to FAULT_AROUND_PAGES pages around page fault

Re: [PATCHv3 1/2] mm: introduce vm_ops->map_pages()

2014-03-05 Thread Andrew Morton
On Wed, 05 Mar 2014 10:34:15 +1030 Rusty Russell wrote: > Andrew Morton writes: > > On Thu, 27 Feb 2014 21:53:46 +0200 "Kirill A. Shutemov" > > wrote: > >> + > >> +void do_set_pte(struct vm_area_struct *vma, unsigned long address, > >> + struct page *page, pte_t *pte, bool write,

Re: [PATCHv3 1/2] mm: introduce vm_ops-map_pages()

2014-03-05 Thread Andrew Morton
On Wed, 05 Mar 2014 10:34:15 +1030 Rusty Russell ru...@rustcorp.com.au wrote: Andrew Morton a...@linux-foundation.org writes: On Thu, 27 Feb 2014 21:53:46 +0200 Kirill A. Shutemov kirill.shute...@linux.intel.com wrote: + +void do_set_pte(struct vm_area_struct *vma, unsigned long

Re: [PATCHv3 1/2] mm: introduce vm_ops->map_pages()

2014-03-04 Thread Rusty Russell
Andrew Morton writes: > On Thu, 27 Feb 2014 21:53:46 +0200 "Kirill A. Shutemov" > wrote: >> + >> +void do_set_pte(struct vm_area_struct *vma, unsigned long address, >> +struct page *page, pte_t *pte, bool write, bool anon); >> #endif >> >> /* > > lguest made a dubious naming

Re: [PATCHv3 1/2] mm: introduce vm_ops-map_pages()

2014-03-04 Thread Rusty Russell
Andrew Morton a...@linux-foundation.org writes: On Thu, 27 Feb 2014 21:53:46 +0200 Kirill A. Shutemov kirill.shute...@linux.intel.com wrote: + +void do_set_pte(struct vm_area_struct *vma, unsigned long address, +struct page *page, pte_t *pte, bool write, bool anon); #endif

Re: [PATCHv3 1/2] mm: introduce vm_ops->map_pages()

2014-03-03 Thread Kirill A. Shutemov
On Mon, Mar 03, 2014 at 03:16:11PM -0800, Andrew Morton wrote: > On Thu, 27 Feb 2014 21:53:46 +0200 "Kirill A. Shutemov" > wrote: > > > The patch introduces new vm_ops callback ->map_pages() and uses it for > > mapping easy accessible pages around fault address. > > > > On read page fault, if

Re: [PATCHv3 1/2] mm: introduce vm_ops-map_pages()

2014-03-03 Thread Kirill A. Shutemov
On Mon, Mar 03, 2014 at 03:16:11PM -0800, Andrew Morton wrote: On Thu, 27 Feb 2014 21:53:46 +0200 Kirill A. Shutemov kirill.shute...@linux.intel.com wrote: The patch introduces new vm_ops callback -map_pages() and uses it for mapping easy accessible pages around fault address. On

Re: [PATCHv3 1/2] mm: introduce vm_ops->map_pages()

2014-02-28 Thread Benjamin Herrenschmidt
On Thu, 2014-02-27 at 14:34 -0800, Dave Hansen wrote: > > The question is really whether or not we ever access the mapping that we > faulted around, though. If we never access it, then the cost (however > small it was) is a loss. That's the mechanism that I'd expect causes > Kirill's numbers to

Re: [PATCHv3 1/2] mm: introduce vm_ops-map_pages()

2014-02-28 Thread Benjamin Herrenschmidt
On Thu, 2014-02-27 at 14:34 -0800, Dave Hansen wrote: The question is really whether or not we ever access the mapping that we faulted around, though. If we never access it, then the cost (however small it was) is a loss. That's the mechanism that I'd expect causes Kirill's numbers to go

Re: [PATCHv3 1/2] mm: introduce vm_ops->map_pages()

2014-02-27 Thread Kirill A. Shutemov
On Thu, Feb 27, 2014 at 02:34:55PM -0800, Dave Hansen wrote: > Kirill's git test suite runs did show that it _can_ hurt in some cases. And see last use-case for how much it can hurt. :) It shouldn't differs much for the same *number* of pages between [u]archs unless setup of the pte is

Re: [PATCHv3 1/2] mm: introduce vm_ops->map_pages()

2014-02-27 Thread Dave Hansen
On 02/27/2014 02:06 PM, Linus Torvalds wrote: > On Thu, Feb 27, 2014 at 1:59 PM, Dave Hansen > wrote: >> >> Also, the folks with larger base bage sizes probably don't want a >> FAULT_AROUND_ORDER=4. That's 1MB of fault-around for ppc64, for example. > > Actually, I'd expect that they won't

Re: [PATCHv3 1/2] mm: introduce vm_ops->map_pages()

2014-02-27 Thread Andrew Morton
On Thu, 27 Feb 2014 13:59:59 -0800 Dave Hansen wrote: > On 02/27/2014 11:53 AM, Kirill A. Shutemov wrote: > > +#define FAULT_AROUND_ORDER 4 > > +#define FAULT_AROUND_PAGES (1UL << FAULT_AROUND_ORDER) > > +#define FAULT_AROUND_MASK ~((1UL << (PAGE_SHIFT + FAULT_AROUND_ORDER)) - 1) > > Looking

Re: [PATCHv3 1/2] mm: introduce vm_ops->map_pages()

2014-02-27 Thread Linus Torvalds
On Thu, Feb 27, 2014 at 1:59 PM, Dave Hansen wrote: > > Also, the folks with larger base bage sizes probably don't want a > FAULT_AROUND_ORDER=4. That's 1MB of fault-around for ppc64, for example. Actually, I'd expect that they won't mind, because there's no real extra cost (the costs are

Re: [PATCHv3 1/2] mm: introduce vm_ops->map_pages()

2014-02-27 Thread Dave Hansen
On 02/27/2014 11:53 AM, Kirill A. Shutemov wrote: > +#define FAULT_AROUND_ORDER 4 > +#define FAULT_AROUND_PAGES (1UL << FAULT_AROUND_ORDER) > +#define FAULT_AROUND_MASK ~((1UL << (PAGE_SHIFT + FAULT_AROUND_ORDER)) - 1) Looking at the performance data made me think of this: do we really want this

[PATCHv3 1/2] mm: introduce vm_ops->map_pages()

2014-02-27 Thread Kirill A. Shutemov
The patch introduces new vm_ops callback ->map_pages() and uses it for mapping easy accessible pages around fault address. On read page fault, if filesystem provides ->map_pages(), we try to map up to FAULT_AROUND_PAGES pages around page fault address in hope to reduce number of minor page

[PATCHv3 1/2] mm: introduce vm_ops-map_pages()

2014-02-27 Thread Kirill A. Shutemov
The patch introduces new vm_ops callback -map_pages() and uses it for mapping easy accessible pages around fault address. On read page fault, if filesystem provides -map_pages(), we try to map up to FAULT_AROUND_PAGES pages around page fault address in hope to reduce number of minor page faults.

Re: [PATCHv3 1/2] mm: introduce vm_ops-map_pages()

2014-02-27 Thread Dave Hansen
On 02/27/2014 11:53 AM, Kirill A. Shutemov wrote: +#define FAULT_AROUND_ORDER 4 +#define FAULT_AROUND_PAGES (1UL FAULT_AROUND_ORDER) +#define FAULT_AROUND_MASK ~((1UL (PAGE_SHIFT + FAULT_AROUND_ORDER)) - 1) Looking at the performance data made me think of this: do we really want this to be

Re: [PATCHv3 1/2] mm: introduce vm_ops-map_pages()

2014-02-27 Thread Linus Torvalds
On Thu, Feb 27, 2014 at 1:59 PM, Dave Hansen dave.han...@linux.intel.com wrote: Also, the folks with larger base bage sizes probably don't want a FAULT_AROUND_ORDER=4. That's 1MB of fault-around for ppc64, for example. Actually, I'd expect that they won't mind, because there's no real extra

Re: [PATCHv3 1/2] mm: introduce vm_ops-map_pages()

2014-02-27 Thread Andrew Morton
On Thu, 27 Feb 2014 13:59:59 -0800 Dave Hansen dave.han...@linux.intel.com wrote: On 02/27/2014 11:53 AM, Kirill A. Shutemov wrote: +#define FAULT_AROUND_ORDER 4 +#define FAULT_AROUND_PAGES (1UL FAULT_AROUND_ORDER) +#define FAULT_AROUND_MASK ~((1UL (PAGE_SHIFT + FAULT_AROUND_ORDER)) -

Re: [PATCHv3 1/2] mm: introduce vm_ops-map_pages()

2014-02-27 Thread Dave Hansen
On 02/27/2014 02:06 PM, Linus Torvalds wrote: On Thu, Feb 27, 2014 at 1:59 PM, Dave Hansen dave.han...@linux.intel.com wrote: Also, the folks with larger base bage sizes probably don't want a FAULT_AROUND_ORDER=4. That's 1MB of fault-around for ppc64, for example. Actually, I'd expect

Re: [PATCHv3 1/2] mm: introduce vm_ops-map_pages()

2014-02-27 Thread Kirill A. Shutemov
On Thu, Feb 27, 2014 at 02:34:55PM -0800, Dave Hansen wrote: Kirill's git test suite runs did show that it _can_ hurt in some cases. And see last use-case for how much it can hurt. :) It shouldn't differs much for the same *number* of pages between [u]archs unless setup of the pte is