tsan: optimize test-only barrier
authorDmitry Vyukov <dvyukov@google.com>
Fri, 30 Jul 2021 06:35:11 +0000 (08:35 +0200)
committerDmitry Vyukov <dvyukov@google.com>
Fri, 30 Jul 2021 09:39:38 +0000 (11:39 +0200)
commit97795be22f634667ce7a022398c59ccc9f7440eb
treeed4186259576a6c928bfd3738f46c5bd9f2ba4e6
parentdbe36e4073e708816cbeb693ea52832f54f52f2a
tsan: optimize test-only barrier

The updated lots_of_threads.c test with 300 threads
started running for too long on machines with low
hardware parallelism (e.g. taskset -c 0-1).
On lots of CPUs it finishes in ~2 secs. But with
taskset -c 0-1 it runs for hundreds of seconds
effectively spinning in the barrier in the sleep loop.

We now have the handy futex API in sanitizer_common.
Use it instead of the passive spin loop.
It makes the test run only faster with taskset -c 0-1,
it runs for ~1.5 secs, while with full parallelism
it still runs for ~2 secs (but consumes less CPU time).

Depends on D107131.

Reviewed By: vitalybuka

Differential Revision: https://reviews.llvm.org/D107132
compiler-rt/lib/tsan/rtl/tsan_interceptors_posix.cpp
compiler-rt/test/tsan/test.h