Add option to limit number of concurrent calls to linker when building with -j
- Dominant language
- Haskell
- Stars
- 1.7k
- Forks
- 750
- Avg merge
- 4d 3h
- Merged PRs (30d)
- 28
Description
On my eight-core machine, running `cabal install -j8` renders the machine virtually unusable, presumably due to trying to run many invocations of the linker in parallel (?). It would be nice to be able to do something like `cabal install -j8 --max-linkers=3` so I can compile, download, etc. up to 8 packages in parallel but only have 3 linking phases running at a time.
However, it's also possible that I have misdiagnosed the problem. The real issue, of course, is that I don't want `cabal install -j8` to make my machine grind to a halt.
Contributor guide
Research direction
Start with the cabal install -j8 scheduling path and trace how package builds invoke linker processes. Check the existing concurrency controls before deciding where a max-linkers limit belongs. Done means parallel package work remains available while linker invocations are capped and the behavior is covered by relevant tests.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- haskell
- Domain
- build-system, cli, performance
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100