[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <200608090826.28249.dada1@cosmosbay.com>
Date: Wed, 9 Aug 2006 08:26:27 +0200
From: Eric Dumazet <dada1@...mosbay.com>
To: Nick Piggin <nickpiggin@...oo.com.au>,
Ulrich Drepper <drepper@...il.com>, Andi Kleen <ak@...e.de>,
Ravikiran G Thirumalai <kiran@...lex86.org>
Cc: "Shai Fultheim (Shai@...lex86.org)" <shai@...lex86.org>,
pravin b shelar <pravin.shelar@...softinc.com>,
linux-kernel@...r.kernel.org
Subject: Re: [RFC] NUMA futex hashing
Based on various discussions and feedbacks, I cooked a patch that implements
the notion of private futexes (private to a process, in the spirit of POSIX
pshared PTHREAD_PROCESS_PRIVATE )
[PATCH] futex : Add new PRIVATE futex primitives for performance improvements
When a futex is privately used by a process, we dont really need to lookup the
list of vmas of the process in order to discover if the futex is backed by a
inode or by the mm struct. We dont really need to keep a refcount on the
inode or mm.
This patch introduces new futex calls, that could be used by user land (glibc
of course) when private futexes are used.
Avoiding vmas lookup means avoiding taking the mmap_sem (and forcing cacheline
bouncings).
Avoiding refcounting on underlying inode or mm struct also avoids cacheline
bouncing.
Thats two cacheline bounces avoided per FUTEX syscall
glibc could use the new futex primitives introduced here (in particular for
PTHREAD_PROCESS_PRIVATE semantic), and fallback to old one if running on
older kernel. Fallback could set a global variable with the number of syscall
so that only one failed syscall is done in the process lifetime.
Note : Compatibility should be maintained by this patch, as old applications
will use the 'SHARED' functionality, unchanged.
Signed-off-by: Eric Dumazet <dada1@...mosbay.com>
View attachment "futex_priv1.patch" of type "text/x-diff" (9593 bytes)
Powered by blists - more mailing lists