Re: [PATCH 0/3] FUTEX : new PRIVATE futexes, SMP and NUMA improvements

Peter Zijlstra
2007-03-16T10:10:20Z

On Fri, 2007-03-16 at 10:30 +0100, Eric Dumazet wrote:
> On Friday 16 March 2007 09:05, Peter Zijlstra wrote:
> > On Thu, 2007-03-15 at 20:10 +0100, Eric Dumazet wrote:
> > > Hi
> > >
> > > I'm pleased to present these patches which improve linux futex
> > > performance and scalability, on both UP, SMP and NUMA configs.
> > >
> > > I had this idea last year but I was not understood, probably because I
> > > gave not enough explanations. Sorry if this mail is really long...
> >
> > I started playing with it after your last reference to it, I have some
> > code here (against -rt):
> > http://programming.kicks-ass.net/kernel-patches/futex-vma-cache/
> >
> > Which I will post once I have the found what keeps pthread_join() from
> > completing :-(
> >
> > It basically adds a per task vma lookup cache which can also activate
> > the private logic without explicit use of the new interface.
>
> Hi Peter
>
> I dont think yet another cache will help in the general case.
> A typical program uses many vmas at once...
>
> glibc has internal futexes, on a different vma than futexes declared in your
> program. Each shared library is going to have its own vma for its data (and
> futexes)
>
> (244 vmas on one kmail program for example)

Yeah, I was just hoping a few cache entries would be enough to get the
worst of them. A benchmark will have to tell I guess.

> About your guess_futex_shared() thing, I miss the vma_anon() definition.

http://programming.kicks-ass.net/kernel-patches/futex-vma-cache/vma_cache.patch

> But if it has to walk the vmas (and take mmap_sem), you already loose the
> PRIVATE benefit.

It doesn't take mmap_sem, I am aware of the problems.