diff options
Diffstat (limited to 'dev-lang/ghc/files/ghc-8.0.1-limit-jN.patch')
-rw-r--r-- | dev-lang/ghc/files/ghc-8.0.1-limit-jN.patch | 50 |
1 files changed, 0 insertions, 50 deletions
diff --git a/dev-lang/ghc/files/ghc-8.0.1-limit-jN.patch b/dev-lang/ghc/files/ghc-8.0.1-limit-jN.patch deleted file mode 100644 index dc5410da3020..000000000000 --- a/dev-lang/ghc/files/ghc-8.0.1-limit-jN.patch +++ /dev/null @@ -1,50 +0,0 @@ -commit 501e05bb1b8974fc8b6c9eee86c87c367e87a211 -Author: Sergei Trofimovich <slyfox@gentoo.org> -Date: Tue Aug 30 12:10:47 2016 +0100 - - GhcMake: limit Capability count to CPU count in parallel mode - - In Trac #9221 one of problems using high --jobs=<N> - is amount of mutator (or GC) threads we crate. - - We use userspace spinning-and-yielding (see ACQUIRE_SPIN_LOCK) - to acess work stealing queues. In case of - N-worker-threads > N-CPUs fraction of time when - thread holding spin lock gets descheduled by kernel - increases. That causes other threads to waste CPU time - before giving up CPU. - - Signed-off-by: Sergei Trofimovich <siarheit@google.com> - - Test Plan: - ghc --make -j8 and -j80 have comparable sys time - on a 8-core system. - - Reviewers: austin, gintas, bgamari, simonmar - - Reviewed By: bgamari, simonmar - - Subscribers: thomie - - Differential Revision: https://phabricator.haskell.org/D2482 - - GHC Trac Issues: #9221 - -diff --git a/compiler/main/GhcMake.hs b/compiler/main/GhcMake.hs -index 9dc43cd..905df63 100644 ---- a/compiler/main/GhcMake.hs -+++ b/compiler/main/GhcMake.hs -@@ -761,7 +761,12 @@ parUpsweep n_jobs old_hpt stable_mods cleanup sccs = do - - let updNumCapabilities = liftIO $ do - n_capabilities <- getNumCapabilities -- unless (n_capabilities /= 1) $ setNumCapabilities n_jobs -+ n_cpus <- getNumProcessors -+ -- Setting number of capabilities more than -+ -- CPU count usually leads to high userspace -+ -- lock contention. Trac #9221 -+ let n_caps = min n_jobs n_cpus -+ unless (n_capabilities /= 1) $ setNumCapabilities n_caps - return n_capabilities - -- Reset the number of capabilities once the upsweep ends. - let resetNumCapabilities orig_n = liftIO $ setNumCapabilities orig_n |