diff options
author | Kemi Wang <kemi.wang@intel.com> | 2018-12-01 07:03:33 -0800 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2018-12-01 08:19:20 -0800 |
commit | 6310e6be9b7c322d56a45729b3ebcd22e26dd0c2 (patch) | |
tree | 577b9815c0ab096a7d120ddf8ae7ca44ea166c1b /manual | |
parent | 8e67b39eb4a3abb6f3e35de3ad6e5d06ed0e8498 (diff) | |
download | glibc-6310e6be9b7c322d56a45729b3ebcd22e26dd0c2.zip glibc-6310e6be9b7c322d56a45729b3ebcd22e26dd0c2.tar.gz glibc-6310e6be9b7c322d56a45729b3ebcd22e26dd0c2.tar.bz2 |
Mutex: Add pthread mutex tunables
This patch does not have any functionality change, we only provide a spin
count tunes for pthread adaptive spin mutex. The tunable
glibc.pthread.mutex_spin_count tunes can be used by system administrator to
squeeze system performance according to different hardware capabilities and
workload characteristics.
The maximum value of spin count is limited to 32767 to avoid the overflow
of mutex->__data.__spins variable with the possible type of short in
pthread_mutex_lock ().
The default value of spin count is set to 100 with the reference to the
previous number of times of spinning via trylock. This value would be
architecture-specific and can be tuned with kinds of benchmarks to fit most
cases in future.
I would extend my appreciation sincerely to H.J.Lu for his help to refine
this patch series.
* manual/tunables.texi (POSIX Thread Tunables): New node.
* nptl/Makefile (libpthread-routines): Add pthread_mutex_conf.
* nptl/nptl-init.c: Include pthread_mutex_conf.h
(__pthread_initialize_minimal_internal) [HAVE_TUNABLES]: Call
__pthread_tunables_init.
* nptl/pthreadP.h (MAX_ADAPTIVE_COUNT): Remove.
(max_adaptive_count): Define.
* nptl/pthread_mutex_conf.c: New file.
* nptl/pthread_mutex_conf.h: New file.
* sysdeps/generic/adaptive_spin_count.h: New file.
* sysdeps/nptl/dl-tunables.list: New file.
* nptl/pthread_mutex_lock.c (__pthread_mutex_lock): Use
max_adaptive_count () not MAX_ADAPTIVE_COUNT.
* nptl/pthread_mutex_timedlock.c (__pthrad_mutex_timedlock):
Likewise.
Suggested-by: Andi Kleen <andi.kleen@intel.com>
Reviewed-by: Carlos O'Donell <carlos@redhat.com>
Signed-off-by: Kemi.wang <kemi.wang@intel.com>
Diffstat (limited to 'manual')
-rw-r--r-- | manual/tunables.texi | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/manual/tunables.texi b/manual/tunables.texi index 3345a23..09a2565 100644 --- a/manual/tunables.texi +++ b/manual/tunables.texi @@ -32,6 +32,7 @@ their own namespace. * Tunable names:: The structure of a tunable name * Memory Allocation Tunables:: Tunables in the memory allocation subsystem * Elision Tunables:: Tunables in elision subsystem +* POSIX Thread Tunables:: Tunables in the POSIX thread subsystem * Hardware Capability Tunables:: Tunables that modify the hardware capabilities seen by @theglibc{} @end menu @@ -281,6 +282,32 @@ of try lock attempts. The default value of this tunable is @samp{3}. @end deftp +@node POSIX Thread Tunables +@section POSIX Thread Tunables +@cindex pthread mutex tunables +@cindex thread mutex tunables +@cindex mutex tunables +@cindex tunables thread mutex + +@deftp {Tunable namespace} glibc.pthread +The behavior of POSIX threads can be tuned to gain performance improvements +according to specific hardware capabilities and workload characteristics by +setting the following tunables in the @code{pthread} namespace: +@end deftp + +@deftp Tunable glibc.pthread.mutex_spin_count +The @code{glibc.pthread.mutex_spin_count} tunable sets the maximum number of times +a thread should spin on the lock before calling into the kernel to block. +Adaptive spin is used for mutexes initialized with the +@code{PTHREAD_MUTEX_ADAPTIVE_NP} GNU extension. It affects both +@code{pthread_mutex_lock} and @code{pthread_mutex_timedlock}. + +The thread spins until either the maximum spin count is reached or the lock +is acquired. + +The default value of this tunable is @samp{100}. +@end deftp + @node Hardware Capability Tunables @section Hardware Capability Tunables @cindex hardware capability tunables |