forked from OSchip/llvm-project
3464dac0ca
Race deduplication code proved to be a performance bottleneck in the past if suppressions/annotations are used, or just some races left unaddressed. And we still get user complaints about this: https://groups.google.com/forum/#!topic/thread-sanitizer/hB0WyiTI4e4 ReportRace already has several layers of caching for racy pcs/addresses to make deduplication faster. However, ReportRace still takes a global mutex (ThreadRegistry and ReportMutex) during deduplication and also calls mmap/munmap (which take process-wide semaphore in kernel), this makes deduplication non-scalable. This patch moves race deduplication outside of global mutexes and also removes all mmap/munmap calls. As the result, race_stress.cc with 100 threads and 10000 iterations become 30x faster: before: real 0m21.673s user 0m5.932s sys 0m34.885s after: real 0m0.720s user 0m23.646s sys 0m1.254s http://reviews.llvm.org/D12554 llvm-svn: 246758 |
||
---|---|---|
.. | ||
CMakeLists.txt | ||
Makefile.mk | ||
lsan.cc | ||
lsan.h | ||
lsan_allocator.cc | ||
lsan_allocator.h | ||
lsan_common.cc | ||
lsan_common.h | ||
lsan_common_linux.cc | ||
lsan_flags.inc | ||
lsan_interceptors.cc | ||
lsan_preinit.cc | ||
lsan_thread.cc | ||
lsan_thread.h |