Skip to content

GitLab

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
  • Sign in / Register
GHC
GHC
  • Project overview
    • Project overview
    • Details
    • Activity
    • Releases
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
    • Locked Files
  • Issues 4,269
    • Issues 4,269
    • List
    • Boards
    • Labels
    • Service Desk
    • Milestones
    • Iterations
  • Merge Requests 413
    • Merge Requests 413
  • Requirements
    • Requirements
    • List
  • CI / CD
    • CI / CD
    • Pipelines
    • Jobs
    • Schedules
  • Security & Compliance
    • Security & Compliance
    • Dependency List
    • License Compliance
  • Operations
    • Operations
    • Incidents
    • Environments
  • Analytics
    • Analytics
    • CI / CD
    • Code Review
    • Insights
    • Issue
    • Repository
    • Value Stream
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Members
    • Members
  • Collapse sidebar
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
  • Glasgow Haskell Compiler
  • GHCGHC
  • Issues
  • #19195

Closed
Open
Opened Jan 08, 2021 by Sebastian Graf@sgraf812Developer

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 Jan 13, 2021 by Sebastian Graf
Assignee
Assign to
Make removal
Milestone
Make removal (Past due)
Assign milestone
Time tracking
None
Due date
None
Reference: ghc/ghc#19195