haskellPackages: build with RTS -A64M options#317251
Merged
sternenseemann merged 1 commit intoNixOS:haskell-updatesfrom Jun 10, 2024
Merged
haskellPackages: build with RTS -A64M options#317251sternenseemann merged 1 commit intoNixOS:haskell-updatesfrom
sternenseemann merged 1 commit intoNixOS:haskell-updatesfrom
Conversation
wolfgangwalther
commented
Jun 4, 2024
Member
sternenseemann
left a comment
There was a problem hiding this comment.
Otherwise this makes sense to me. -A64M is beneficial in multi-threaded situations. As far as I'm aware, Cabal is single-threaded for our usecase while ghc (even with our current escaping mess) receives a -j flag.
Member
|
My testing with |
c91ca68 to
0b1a452
Compare
Those flags were not actually passed to GHC before, but to Setup.hs. They were introduced in NixOS#86948. The related twitch live stream uses the build of git-annex as a measurement. I get the following numbers when building git-annex with doCheck = false: - for current master: 1:40 wall clock / 340s user - without any -A64M argument: 1:40 wall clock / 340s user - with this fix: 1:13 wall clock / 280s user The idea was good, but the settings were never active. More testing revealed that this seems to work on darwin just as well, so we're removing the isLinux condition, too.
sternenseemann
approved these changes
Jun 10, 2024
Member
1 task
Contributor
|
Successfully created backport PR for |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
While working on #317181 I realized that the
+RTS -A64M -RTSoptions inparallelBuildingFlagswere never passed to GHC, because the arguments are not passed quoted. This means those arguments are actually passed toSetup.hs. This can be verified by removing-rtsoptsfromsetupCompileFlags- after this change the configure command will throw an error, because it doesn't understand the+RTS ...argument anymore. Once you pass it properly, the error is gone again and GHC receives the arguments.Passing the RTS flags to
Setup.hs(i.e. cabal) - makes little to zero sense. The same is true for the entireparallelBuildingFlagsbeing passed tosetupCompileFlags: If there was any customSetup.hsscript in any package anywhere that benefits from heavy parallelization like this... there would be something wrong with that script! ;)Those flags were introduced in #86948. The related twitch live stream uses the build of git-annex as a measurement. I get the following numbers when building
git-annexwithdoCheck = false;:This 27% improvement is essentially the result from that live stream mentioned above. Let's use that, shall we?
Things done
haskell.lib.overrideCabal haskellPackages.git-annex { doCheck = false; }[...]
Add a 👍 reaction to pull requests you find important.