haskell / haskell/cabal

Add option to limit number of concurrent calls to linker when building with -j

Open
#1,529 16 comments 1 reaction 0 assignees View on GitHub
type: enhancement
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.