server-skynet-source-3rd-je.../include/jemalloc
Dave Watson b23336af96 mutex: fix trylock spin wait contention
If there are 3 or more threads spin-waiting on the same mutex,
there will be excessive exclusive cacheline contention because
pthread_trylock() immediately tries to CAS in a new value, instead
of first checking if the lock is locked.

This diff adds a 'locked' hint flag, and we will only spin wait
without trylock()ing while set.  I don't know of any other portable
way to get the same behavior as pthread_mutex_lock().

This is pretty easy to test via ttest, e.g.

./ttest1 500 3 10000 1 100

Throughput is nearly 3x as fast.

This blames to the mutex profiling changes, however, we almost never
have 3 or more threads contending in properly configured production
workloads, but still worth fixing.
2018-11-28 15:17:02 -08:00
..
internal mutex: fix trylock spin wait contention 2018-11-28 15:17:02 -08:00
jemalloc_defs.h.in Detect LG_SIZEOF_PTR depending on MSVC platform target 2016-02-20 10:50:24 -08:00
jemalloc_macros.h.in Make smallocx symbol name depend on the JEMALLOC_VERSION_GID 2018-10-17 07:12:28 -07:00
jemalloc_mangle.sh jemalloc_mangle.sh: set sh in strict mode 2017-12-11 23:35:20 -08:00
jemalloc_protos.h.in Hide smallocx even when enabled from the library API 2018-10-17 07:12:28 -07:00
jemalloc_rename.sh Fix name mangling for stress tests. 2014-01-16 17:38:01 -08:00
jemalloc_typedefs.h.in Hide smallocx even when enabled from the library API 2018-10-17 07:12:28 -07:00
jemalloc.sh Replace tabs following #define with spaces. 2017-01-20 21:45:53 -08:00