haskell-cabal.eclass: unleash full parallelism of parallel ghc
I've explored scalability of 'ghc --make -j' a bit in
https://ghc.haskell.org/trac/ghc/ticket/9221
Some takeaways:
- never specify -j<N> with N > CPU. garbage collector threads
waste kernel time running sched_yield()
- GHC allocates A Lot: large nursery decreases GC interruptions.
We fix it with '-A256M'
- for large nursery enabling work-stealing makes GC finish faster
on each collection cycle.
We fix it with -qb0
While at it move HCFLAGS setup after parallel defaults.
That allows user to override defaults with own HCFLAGS.
Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>