On Fri, 26 May 2023 at 08:08, Dmitry Vyukov <dvyu...@google.com> wrote:
> > A little bit related question/problem - some of our system test jobs got 
> > significantly slower (3x-5x) with **clang-16** TSAN after we integrated 
> > liburcu to BIND 9. The GCC (13.1.1) TSAN doesn’t exhibit this behavior.
> >
> > The liburcu integration in BIND 9 is very light at the moment - we use 
> > liburcu for qptrie and there’s some usage of wfcqueue for queuing 
> > jobs(callbacks) between threads.
> >
> > We were not able to put a finger on it yet, but saying this aloud might 
> > help diagnose this.
>
> Interesting. Clang 16 got a completely new tsan runtime
> implementation, which is generally ~2x faster and consumes less
> memory.
> However, of course, it's not possible to optimize for all gazillion of
> programs in the world. I suspect librcu tests are quite extreme in
> terms of synchronization.
>
> If you collect perf profiles for both, I can look for some low hanging fruit.
> Or is there a reasonable way for me to reproduce?

How many CPUs do these machines have?

> > Ondrej
> > --
> > Ondřej Surý <ond...@sury.org> (He/Him)
> >
> > > On 24. 5. 2023, at 10:15, Dmitry Vyukov via lttng-dev 
> > > <lttng-dev@lists.lttng.org> wrote:
> > >
> > > On Tue, 23 May 2023 at 18:05, Olivier Dion <od...@efficios.com> wrote:
> > >>
> > >> Hi Dmitry,
> > >>
> > >> We do have a new issue and we think it might be a limitation from TSAN.
> > >>
> > >> Find attached a test program that we believe is correct.  You can
> > >> compile it with `gcc -fsanitize=thread test.c -pthread'.
> > >>
> > >>
> > >> TSAN flags a race condition between the atomic store relaxed at line 36
> > >> and the free at line 81.
> > >>
> > >> We can solve the issue by replacing the atomic store relaxed with a
> > >> atomic store release.  However, the preceding atomic exchange with
> > >> sequential consistency already acts as an implicit release (in term of
> > >> memory barrier) for the following store, making the release semantic
> > >> redundant.
> > >>
> > >> We've found an alternative to fix this by ignoring the thread during the
> > >> relaxed store (line 39).  However, what we would like is to annotate the
> > >> memory stored (line 45).
> > >>
> > >> My theory (I don't know the internal of TSAN much) is that TSAN thinks
> > >> for some reason that the atomic store relaxed happen at the same epoch
> > >> as the free, resulting in a false positive.  If so, m
> > >
> > >
> > > I don't this this is true in the C/C++ memory model:
> > > "the preceding atomic exchange with sequential consistency already
> > > acts as an implicit release (in term of memory barrier) for the
> > > following store".
> > >
> > > std::atomic_thread_fence does affect all preceding/subsequent
> > > operations, but an atomic memory operation only affects ordering on
> > > that variable, it doesn't also serve as a standalone memory fence.
> > > _______________________________________________
> > > lttng-dev mailing list
> > > lttng-dev@lists.lttng.org
> > > https://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
> >
_______________________________________________
lttng-dev mailing list
lttng-dev@lists.lttng.org
https://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev

Reply via email to