path: root/unittests
diff options
authorKuba Mracek <>2017-01-17 17:18:18 +0000
committerKuba Mracek <>2017-01-17 17:18:18 +0000
commit759ee7545ae910fa4913fabdd176c7e03fbfe4e2 (patch)
treef5521671e03f1ca382cbf2722eb0fa3cbdc4e93f /unittests
parent962ff04019e1e7bca19d61a6b96478f8e86a7176 (diff)
[lit] Limit parallelism of sanitizer tests on Darwin [compiler-rt part]
Running lit tests and unit tests of ASan and TSan on macOS has very bad performance when running with a high number of threads. This is caused by xnu (the macOS kernel), which currently doesn't handle mapping and unmapping of sanitizer shadow regions (reserved VM which are several terabytes large) very well. The situation is so bad that increasing the number of threads actually makes the total testing time larger. The macOS buildbots are affected by this. Note that we can't easily limit the number of sanitizer testing threads without affecting the rest of the tests. This patch adds a special "group" into lit, and limits the number of concurrently running tests in this group. This helps solve the contention problem, while still allowing other tests to run in full, that means running lit with -j8 will still with 8 threads, and parallelism is only limited in sanitizer tests. Differential Revision: git-svn-id: 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'unittests')
1 files changed, 7 insertions, 0 deletions
diff --git a/unittests/lit.common.unit.cfg b/unittests/lit.common.unit.cfg
index 2bd8f376f..cd66f5599 100644
--- a/unittests/lit.common.unit.cfg
+++ b/unittests/lit.common.unit.cfg
@@ -28,3 +28,10 @@ if 'TMP' in os.environ:
config.environment['TMP'] = os.environ['TMP']
if 'TEMP' in os.environ:
config.environment['TEMP'] = os.environ['TEMP']
+def darwin_sanitizer_parallelism_group_func(test):
+ if test.config.host_os == "Darwin":
+ if test.file_path.find("x86_64") != -1:
+ return "darwin-64bit-sanitizer"
+ return ""
+config.darwin_sanitizer_parallelism_group_func = darwin_sanitizer_parallelism_group_func