tsan: use smaller trace parts for Go
authorDmitry Vyukov <dvyukov@google.com>
Tue, 16 Nov 2021 08:14:09 +0000 (09:14 +0100)
committerDmitry Vyukov <dvyukov@google.com>
Tue, 16 Nov 2021 14:59:33 +0000 (15:59 +0100)
In the old runtime we used to use different number of trace parts
for C++ and Go to reduce trace memory consumption for Go.
But now it's easier and better to use smaller parts because
we already use minimal possible number of parts for C++ (3).

Reviewed By: melver

Differential Revision: https://reviews.llvm.org/D113978

compiler-rt/lib/tsan/rtl/tsan_trace.h

index a771ad9..c13fb12 100644 (file)
@@ -191,7 +191,8 @@ struct TraceHeader {
 };
 
 struct TracePart : TraceHeader {
-  static constexpr uptr kByteSize = 256 << 10;
+  // There are a lot of goroutines in Go, so we use smaller parts.
+  static constexpr uptr kByteSize = (SANITIZER_GO ? 128 : 256) << 10;
   static constexpr uptr kSize =
       (kByteSize - sizeof(TraceHeader)) / sizeof(Event);
   // TraceAcquire does a fast event pointer overflow check by comparing