From d8f48f7e77dded574ca1bd1e901ef0164373a088 Mon Sep 17 00:00:00 2001 From: Cristian Maglie Date: Mon, 5 Feb 2024 16:38:43 +0100 Subject: [PATCH 1/2] Limit parallel jobs to 1 / use in-memeory pch storage --- ls/lsp_client_clangd.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ls/lsp_client_clangd.go b/ls/lsp_client_clangd.go index 83789bb..165dec3 100644 --- a/ls/lsp_client_clangd.go +++ b/ls/lsp_client_clangd.go @@ -51,6 +51,8 @@ func newClangdLSPClient(logger jsonrpc.FunctionLogger, dataFolder *paths.Path, l args := []string{ ls.config.ClangdPath.String(), "-log=verbose", + "-j", "1", // Limit parallel build jobs to 1 + "--pch-storage=memory", fmt.Sprintf(`--compile-commands-dir=%s`, ls.buildPath), } if dataFolder != nil { From 22c33aec6bbf183765d2cff6857ed34c2c81f8eb Mon Sep 17 00:00:00 2001 From: Cristian Maglie Date: Tue, 6 Feb 2024 13:48:54 +0100 Subject: [PATCH 2/2] Allow jobs tuning via -jobs N flag --- ls/ls.go | 1 + ls/lsp_client_clangd.go | 9 ++++++++- main.go | 2 ++ 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/ls/ls.go b/ls/ls.go index 17e4f56..794cd5c 100644 --- a/ls/ls.go +++ b/ls/ls.go @@ -77,6 +77,7 @@ type Config struct { EnableLogging bool SkipLibrariesDiscoveryOnRebuild bool DisableRealTimeDiagnostics bool + Jobs int } var yellow = color.New(color.FgHiYellow) diff --git a/ls/lsp_client_clangd.go b/ls/lsp_client_clangd.go index 165dec3..f39b3dd 100644 --- a/ls/lsp_client_clangd.go +++ b/ls/lsp_client_clangd.go @@ -51,10 +51,17 @@ func newClangdLSPClient(logger jsonrpc.FunctionLogger, dataFolder *paths.Path, l args := []string{ ls.config.ClangdPath.String(), "-log=verbose", - "-j", "1", // Limit parallel build jobs to 1 "--pch-storage=memory", fmt.Sprintf(`--compile-commands-dir=%s`, ls.buildPath), } + if jobs := ls.config.Jobs; jobs == -1 { + // default: limit parallel build jobs to 1 + args = append(args, "-j", "1") + } else if jobs == 0 { + // no args: clangd will max out the available cores + } else { + args = append(args, "-j", fmt.Sprintf("%d", jobs)) + } if dataFolder != nil { args = append(args, fmt.Sprintf("-query-driver=%s", dataFolder.Join("packages", "**").Canonical())) } diff --git a/main.go b/main.go index 3333672..b1ed671 100644 --- a/main.go +++ b/main.go @@ -56,6 +56,7 @@ func main() { noRealTimeDiagnostics := flag.Bool( "no-real-time-diagnostics", false, "Disable real time diagnostics") + jobs := flag.Int("jobs", -1, "Max number of parallel jobs. Default is 1. Use 0 to match the number of available CPU cores.") flag.Parse() if *loggingBasePath != "" { @@ -127,6 +128,7 @@ func main() { CliInstanceNumber: *cliDaemonInstanceNumber, SkipLibrariesDiscoveryOnRebuild: *skipLibrariesDiscoveryOnRebuild, DisableRealTimeDiagnostics: *noRealTimeDiagnostics, + Jobs: *jobs, } stdio := streams.NewReadWriteCloser(os.Stdin, os.Stdout) pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy