summaryrefslogtreecommitdiff
path: root/lib/tsan/rtl/tsan_stat.h
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2014-03-24 18:54:20 +0000
committerDmitry Vyukov <dvyukov@google.com>2014-03-24 18:54:20 +0000
commita8db7580b56915d073b0f7216842452275be0ed2 (patch)
treeb1b3453d8100cbab9477b1302839ebf4b07308c4 /lib/tsan/rtl/tsan_stat.h
parentf8e591ece02b709b932d8c01b7d4be957b1e03dc (diff)
downloadcompiler-rt-a8db7580b56915d073b0f7216842452275be0ed2.tar.gz
tsan: optimize vector clock operations
Make vector clock operations O(1) for several important classes of use cases. See comments for details. Below are stats from a large server app, 77% of all clock operations are handled as O(1). Clock acquire : 25983645 empty clock : 6288080 fast from release-store : 14917504 contains my tid : 4515743 repeated (fast) : 2141428 full (slow) : 2636633 acquired something : 1426863 Clock release : 2544216 resize : 6241 fast1 : 197693 fast2 : 1016293 fast3 : 2007 full (slow) : 1797488 was acquired : 709227 clear tail : 1 last overflow : 0 Clock release store : 3446946 resize : 200516 fast : 469265 slow : 2977681 clear tail : 0 Clock acquire-release : 820028 git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@204656 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/tsan/rtl/tsan_stat.h')
-rw-r--r--lib/tsan/rtl/tsan_stat.h27
1 files changed, 27 insertions, 0 deletions
diff --git a/lib/tsan/rtl/tsan_stat.h b/lib/tsan/rtl/tsan_stat.h
index 6453bda5f..22327d3b0 100644
--- a/lib/tsan/rtl/tsan_stat.h
+++ b/lib/tsan/rtl/tsan_stat.h
@@ -69,6 +69,33 @@ enum StatType {
StatSyncAcquire,
StatSyncRelease,
+ // Clocks - acquire.
+ StatClockAcquire,
+ StatClockAcquireEmpty,
+ StatClockAcquireFastRelease,
+ StatClockAcquireLarge,
+ StatClockAcquireRepeat,
+ StatClockAcquireFull,
+ StatClockAcquiredSomething,
+ // Clocks - release.
+ StatClockRelease,
+ StatClockReleaseResize,
+ StatClockReleaseFast1,
+ StatClockReleaseFast2,
+ StatClockReleaseFast3,
+ StatClockReleaseFull,
+ StatClockReleaseAcquired,
+ StatClockReleaseClearTail,
+ StatClockReleaseLastOverflow,
+ // Clocks - release store.
+ StatClockStore,
+ StatClockStoreResize,
+ StatClockStoreFast,
+ StatClockStoreFull,
+ StatClockStoreTail,
+ // Clocks - acquire-release.
+ StatClockAcquireRelease,
+
// Atomics.
StatAtomic,
StatAtomicLoad,