Re: [PATCH 05/14] vrange: Add new vrange(2) system call

Minchan Kim
2013-10-08T07:15:45Z

On Tue, Oct 08, 2013 at 04:12:02PM +0900, Minchan Kim wrote:
> On Tue, Oct 08, 2013 at 12:35:33AM -0400, KOSAKI Motohiro wrote:
> > (10/7/13 11:07 PM), Minchan Kim wrote:
> > >Hi KOSAKI,
> > >
> > >On Mon, Oct 07, 2013 at 10:51:18PM -0400, KOSAKI Motohiro wrote:
> > >>>Maybe, int madvise5(addr, length, MADV_DONTNEED|MADV_LAZY|MADV_SIGBUS,
> > >>> &purged, &ret);
> > >>>
> > >>>Another reason to make it hard is that madvise(2) is tight coupled with
> > >>>with vmas split/merge. It needs mmap_sem's write-side lock and it hurt
> > >>>anon-vrange test performance much heavily and userland might want to
> > >>>make volatile range with small unit like "page size" so it's undesireable
> > >>>to make it with vma. Then, we should filter out to avoid vma split/merge
> > >>>in implementation if only MADV_LAZY case? Doable but it could make code
> > >>>complicated and lost consistency with other variant of madvise.
> > >>
> > >>I haven't seen your performance test result. Could please point out URLs?
> > >
> > >https://lkml.org/lkml/2013/3/12/105
> >
> > It's not comparison with and without vma merge. I'm interest how much benefit
> > vmas operation avoiding have.
>
> I had an number but lost it so I should set up it in my KVM machine :(
> And I needed old kernel 3.7.0 for testing vma-based approach.
>
> DRAM:2G, CPU : 12
>
> kernel 3.7.0
>
> jemalloc: 20527 records/s
> jemalloc vma based approach : 5360 records/s
>
> vrange call made worse because every thread stuck with mmap_sem.
>
> kernel 3.11.0
>
> jemalloc: 21176 records/s
> jemalloc vroot tree approach: 103637 records/s
>
> It could enhance 5 times.

And please keep in mind that vrange's user might want to small vrange
like PAGE_SIZE. If we go with vma-based approach, we would consume memory
with lots of vm_area_struct.

--
Kind regards,
Minchan Kim