glibc/sysdeps/generic
Kemi Wang 6310e6be9b 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>
2018-12-01 08:19:20 -08:00
..
net Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
netinet generic if_ether.h: Fix build 2018-01-19 01:51:10 +01:00
nfs Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
sys Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
_G_config.h Post-cleanup 2: minimize _G_config.h. 2018-02-07 10:10:32 -05:00
_itoa.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
a.out.h
abort-instr.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
adaptive_spin_count.h Mutex: Add pthread mutex tunables 2018-12-01 08:19:20 -08:00
aio_misc.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
allocalim.h Update. 2002-10-09 09:42:48 +00:00
asm-syntax.h
atomic-machine.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
c++-types.data Add placeholder c++-types.data and *.abilist files. 2015-02-13 15:41:34 -08:00
confstr.h
device-nrs.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
dirstream.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
dl-cache.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
dl-dtprocnum.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
dl-dtv.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
dl-fcntl.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
dl-fileid.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
dl-fptr.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
dl-hash.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
dl-irel.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
dl-librecon.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
dl-lookupcfg.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
dl-machine.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
dl-mman.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
dl-osinfo.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
dl-procinfo.c Dummy dl-procinfo.c file for platforms which don't have one. 2002-02-01 18:25:44 +00:00
dl-procinfo.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
dl-procruntime.c ld.so: Add architecture specific fields 2017-11-13 08:02:52 -08:00
dl-prop.h x86: Support IBT and SHSTK in Intel CET [BZ #21598] 2018-07-16 14:08:27 -07:00
dl-sysdep.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
dl-tls.h Update. 2002-02-07 04:08:19 +00:00
dl-unistd.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
dwarf2.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
elide.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
eloop-threshold.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
entry.h Update. 2002-03-15 03:16:52 +00:00
errqueue.h Update. 2001-01-10 23:47:39 +00:00
exit-thread.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
fd_to_filename.h libio: Flush stream at freopen (BZ#21037) 2018-10-02 10:01:56 -03:00
fenv_private.h Move fenv.h soft-float inlines from fenv_private.h to include/fenv.h. 2018-09-04 19:52:06 +00:00
fips-private.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
fix-fp-int-compare-invalid.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
fix-fp-int-convert-overflow.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
fix-int-fp-convert-zero.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
float128-abi.h Move some float128 symbol version definitions. 2017-10-16 22:04:42 +00:00
fork.h Update. 2002-10-01 00:05:23 +00:00
fpu_control.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
framestate.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
gcc-compat.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
gccframe.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
get-rounding-mode.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
gmp-mparam.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
hp-timing-common.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
hp-timing.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
ifreq.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
ifunc-init.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
ifunc-sel.h Do not stack-protect ifunc resolvers [BZ #7065] 2016-12-26 10:08:41 +01:00
internal-signals.h Make sysdeps/generic/internal-signals.h less stubby. 2018-04-04 12:37:23 -04:00
intr-msg.h
inttypes.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
ld.abilist Simplify the abilist format 2015-11-06 13:58:53 +01:00
ldbl-classify-compat.h Move LDBL_CLASSIFY_COMPAT to its own header. 2018-02-01 21:01:00 +00:00
ldconfig.h Add support for the RISC-V-specific ELF flags 2018-01-25 10:06:19 -08:00
ldsodefs.h elf: Correct absolute (SHN_ABS) symbol run-time calculation [BZ #19818] 2018-04-04 23:09:37 +01:00
libanl.abilist Simplify the abilist format 2015-11-06 13:58:53 +01:00
libBrokenLocale.abilist Simplify the abilist format 2015-11-06 13:58:53 +01:00
libc-lock.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
libc-mmap.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
libc-start.h hurd: Initialize TLS and libpthread before signal thread start 2018-03-25 00:52:39 +01:00
libc-tsd.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
libc.abilist Simplify the abilist format 2015-11-06 13:58:53 +01:00
libcrypt.abilist Simplify the abilist format 2015-11-06 13:58:53 +01:00
libdl.abilist Simplify the abilist format 2015-11-06 13:58:53 +01:00
libm-alias-double.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
libm-alias-float128.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
libm-alias-float.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
libm-alias-ldouble.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
libm-test-ulps Replace gen-libm-test.pl with gen-libm-test.py. 2018-08-09 15:34:12 +00:00
libm-test-ulps-name Do not hardcode platform names in manual/libm-err-tab.pl (bug 14139). 2016-11-04 16:49:06 +00:00
libm.abilist Simplify the abilist format 2015-11-06 13:58:53 +01:00
libnsl.abilist Add placeholder libnsl.abilist and libutil.abilist files 2016-03-07 00:49:36 +01:00
libnss_compat.abilist Add missed zero length files in previous abilist commit. 2012-04-28 15:38:24 -04:00
libnss_db.abilist Add missed zero length files in previous abilist commit. 2012-04-28 15:38:24 -04:00
libnss_dns.abilist Add missed zero length files in previous abilist commit. 2012-04-28 15:38:24 -04:00
libnss_files.abilist Add missed zero length files in previous abilist commit. 2012-04-28 15:38:24 -04:00
libnss_hesiod.abilist Add missed zero length files in previous abilist commit. 2012-04-28 15:38:24 -04:00
libnss_nis.abilist Add missed zero length files in previous abilist commit. 2012-04-28 15:38:24 -04:00
libnss_nisplus.abilist Add missed zero length files in previous abilist commit. 2012-04-28 15:38:24 -04:00
libpthread.abilist Simplify the abilist format 2015-11-06 13:58:53 +01:00
libresolv.abilist Simplify the abilist format 2015-11-06 13:58:53 +01:00
librt.abilist Simplify the abilist format 2015-11-06 13:58:53 +01:00
libutil.abilist Add placeholder libnsl.abilist and libutil.abilist files 2016-03-07 00:49:36 +01:00
link_map.h ld.so: Add architecture specific fields 2017-11-13 08:02:52 -08:00
linkmap.h Rename bits/linkmap.h to linkmap.h (bug 14912). 2015-09-04 19:44:27 +00:00
local-setxid.h * sysdeps/posix/spawni.c (__spawni): Use local_seteuid and 2006-06-04 22:17:06 +00:00
localplt.data ld.so: Introduce struct dl_exception 2017-08-10 16:54:57 +02:00
machine-gmon.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
machine-lock.h hurd: take __USE_EXTERN_INLINES into account and restrict inlines 2018-01-28 18:46:23 +01:00
machine-sp.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
Makefile Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
malloc-alignment.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
malloc-machine.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
malloc-sysdep.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
math_ldbl_opt.h * math/math.h [__NO_LONG_DOUBLE_MATH] (__nldbl_nexttowardf): New 2006-01-14 12:10:44 +00:00
math_ldbl.h Allow direct use of math_ldbl.h in testsuite. 2017-02-25 10:40:48 -05:00
math_private_calls.h Use copysign functions not __copysign functions in glibc libm. 2018-09-27 20:04:48 +00:00
math_private.h Add new pow implementation 2018-09-19 10:04:51 +01:00
math-barriers.h Move math_opt_barrier, math_force_eval to separate math-barriers.h. 2018-05-09 19:45:47 +00:00
math-nan-payload-double.h math: Merge strtod_nan_*.h into math-type-macros-*.h 2018-05-16 06:03:08 +02:00
math-nan-payload-float.h math: Merge strtod_nan_*.h into math-type-macros-*.h 2018-05-16 06:03:08 +02:00
math-tests-arch.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
math-tests-exceptions.h Move EXCEPTION_TESTS_* out of math-tests.h 2018-08-23 23:41:13 +00:00
math-tests-rounding.h Move ROUNDING_TESTS_* out of math-tests.h. 2018-08-22 12:25:50 +00:00
math-tests-snan-cast.h Move SNAN_TESTS_TYPE_CAST out of math-tests.h. 2018-08-01 11:18:57 +00:00
math-tests-snan-payload.h Move SNAN_TESTS_PRESERVE_PAYLOAD out of math-tests.h. 2018-08-01 11:21:16 +00:00
math-tests-snan.h Move SNAN_TESTS_* out of math-tests.h. 2018-08-10 19:22:01 +00:00
math-tests-trap-force.h Move EXCEPTION_SET_FORCES_TRAP out of math-tests.h. 2018-08-27 18:52:41 +00:00
math-tests-trap.h Move EXCEPTION_ENABLE_SUPPORTED out of math-tests.h. 2018-08-24 19:18:16 +00:00
math-tests.h Move EXCEPTION_SET_FORCES_TRAP out of math-tests.h. 2018-08-27 18:52:41 +00:00
math-type-macros-double.h math: Reverse include order in <math-type-macros-*.h> 2018-05-17 15:48:42 +02:00
math-type-macros-float128.h math: Reverse include order in <math-type-macros-*.h> 2018-05-17 15:48:42 +02:00
math-type-macros-float.h math: Reverse include order in <math-type-macros-*.h> 2018-05-17 15:48:42 +02:00
math-type-macros-ldouble.h math: Reverse include order in <math-type-macros-*.h> 2018-05-17 15:48:42 +02:00
math-type-macros.h Use copysign functions not __copysign functions in glibc libm. 2018-09-27 20:04:48 +00:00
memcopy.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
memusage.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
nan-high-order-bit.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
not-cancel.h Fix Linux fcntl OFD locks for non-LFS architectures (BZ#20251) 2018-06-26 13:22:53 -03:00
not-errno.h posix: Use posix_spawn on system 2018-11-30 18:42:05 -02:00
nscd-types.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
pagecopy.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
paths.h generic paths.h: remove old paths from _PATH_STDPATH 2012-11-04 10:11:39 +01:00
profil-counter.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
pty-private.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
register-dump.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
rtld-lowlevel.h Jakub Jelinek <jakub@redhat.com> 2006-10-10 00:51:29 +00:00
safe-fatal.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
setjmpP.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
sigcontextinfo.h Remove unused frame.h header, sigcontextinfo.h macros. 2018-03-22 16:40:51 +00:00
siglist.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
sigset-cvt-mask.h hurd: fix warning 2018-01-27 16:45:55 +01:00
sigsetops.h hurd: fix warnings 2018-01-27 16:47:36 +01:00
stackguard-macros.h BZ #15754: Fix test case for ARM. 2013-09-23 01:44:38 -04:00
stackinfo.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
startup.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
stdint.h Define char16_t, char32_t consistently with uint_least16_t, uint_least32_t (bug 17979). 2018-02-07 20:33:55 +00:00
stdio-lock.h Mechanically remove _IO_ name aliases for types and constants. 2018-02-21 14:11:05 -05:00
string_private.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
symbol-hacks.h PLT avoidance for __stack_chk_fail [BZ #7065] 2016-12-26 10:11:05 +01:00
sysdep-cancel.h * elf/dl-sym.c (do_sym): Use RTLD_SINGLE_THREAD_P. 2006-10-29 21:46:32 +00:00
sysdep.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
thread_state.h hurd: add TLS support 2018-03-17 03:17:36 +01:00
tininess.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tls-macros.h * elf/tls-macros.h: #include_next <tls-macros.h> to get a sysdeps 2005-03-13 09:09:05 +00:00
tls-setup.h x86: Rename __glibc_reserved1 to feature_1 in tcbhead_t [BZ #22563] 2018-07-14 05:56:46 -07:00
tls.h hurd: add gscope support 2018-03-11 13:06:33 +01:00
tst-audit.h Move testsuite audit definitions to sysdeps tst-audit.h files. 2012-07-26 11:29:07 +00:00
tst-stack-align.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
unsecvars.h Ignore and remove LD_HWCAP_MASK for AT_SECURE programs (bug #21209) 2017-03-07 20:52:04 +05:30
unwind-dw2-fde-glibc.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
unwind-dw2-fde.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
unwind-dw2-fde.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
unwind-dw2.c [BZ #20271] Add newlines in __libc_fatal calls. 2018-08-31 18:04:32 -07:00
unwind-pe.c Update. 2004-03-10 10:04:19 +00:00
unwind-pe.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
unwind-resume.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
unwind.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
utmp-equal.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00