clangd: use -j for background index pool
authorSam McCall <sam.mccall@gmail.com>
Fri, 9 Aug 2019 23:03:32 +0000 (23:03 +0000)
committerSam McCall <sam.mccall@gmail.com>
Fri, 9 Aug 2019 23:03:32 +0000 (23:03 +0000)
commit4bd6ebb49584cff4d364d8586caa35f37e967147
treeb858a7af7d1d1976196915521798a2e2133cc506
parent575ce5da7d557c4df194fc7419d9c878058f9002
clangd: use -j for background index pool

Summary:
clangd supports a -j option to limit the amount of threads to use for parsing
TUs. However, when using -background-index (the default in later versions of
clangd), the parallelism used by clangd defaults to the hardware_parallelisn,
i.e. number of physical cores.

On shared hardware environments, with large projects, this can significantly
affect performance with no way to tune it down.

This change makes the -j parameter apply equally to parsing and background
index. It's not perfect, because the total number of threads is 2x the -j value,
which may still be unexpected. But at least this change allows users to prevent
clangd using all CPU cores.

Reviewers: kadircet, sammccall

Reviewed By: sammccall

Subscribers: javed.absar, jfb, sammccall, ilya-biryukov, MaskRay, jkorous, arphaman, cfe-commits

Tags: #clang

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

llvm-svn: 368498
clang-tools-extra/clangd/ClangdServer.cpp
clang-tools-extra/clangd/TUScheduler.cpp
clang-tools-extra/clangd/tool/ClangdMain.cpp