Skip to content

Hadrian freeze1 no-op takes quite long

I find that the following command on a completed validate build (not sure if quick or default makes a difference) takes 4s on my machine:

$ hadrian/build --flavour=validate --skip='//*.mk' --skip=stage1:lib:rts --freeze1 --report --build-root=_validate +RTS -s
Up to date
Writing report to report.html
shakeArgsWith                     0.000s    0%                           
Function shake                    0.005s    0%                           
Database read                     0.589s   11%  ====                     
With database                     0.026s    0%                           
Running rules                     3.465s   69%  =========================
Pool finished (1 threads, 1 max)  0.003s    0%                           
Profile report                    0.898s   18%  ======                   
Cleanup                           0.000s    0%                           
Total                             4.987s  100%                           
Build completed in 4.99s

  11,657,404,688 bytes allocated in the heap
   1,636,997,592 bytes copied during GC
     221,555,448 bytes maximum residency (15 sample(s))
       2,663,688 bytes maximum slop
             211 MB total memory in use (0 MB lost due to fragmentation)

                                     Tot time (elapsed)  Avg pause  Max pause
  Gen  0     10782 colls,     0 par    0.810s   0.808s     0.0001s    0.0010s
  Gen  1        15 colls,     0 par    0.620s   0.619s     0.0413s    0.1598s

  TASKS: 5 (1 bound, 4 peak workers (4 total), using -N1)

  SPARKS: 0 (0 converted, 0 overflowed, 0 dud, 0 GC'd, 0 fizzled)

  INIT    time    0.000s  (  0.000s elapsed)
  MUT     time    3.681s  (  3.576s elapsed)
  GC      time    1.430s  (  1.427s elapsed)
  EXIT    time    0.000s  (  0.007s elapsed)
  Total   time    5.112s  (  5.010s elapsed)

  Alloc rate    3,166,660,336 bytes per MUT second

  Productivity  72.0% of total user, 71.4% of total elapsed

Here's the generated report.html.

8.6GB, >200MB residency!

I'm not sure if I can slap any more --skip flags onto that, but I hope that we can figure out a way that speeds up a no-op build like that (and thereby any build that actually has to do something).

Although the need for speed is mostly alleviated by HLS. I "hope" that this is shake's fault, so that more than just GHC might profit from a performance fix. But it might not, in which case I still like a fast GHC build system.

Edited by Sebastian Graf
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information