[GHC] #15999: Stabilise nofib runtime measurements
GHC
ghc-devs at haskell.org
Thu Dec 13 10:18:02 UTC 2018
#15999: Stabilise nofib runtime measurements
-------------------------------------+-------------------------------------
Reporter: sgraf | Owner: (none)
Type: task | Status: new
Priority: normal | Milestone: ⊥
Component: NoFib benchmark | Version: 8.6.2
suite |
Resolution: | Keywords:
Operating System: Unknown/Multiple | Architecture:
| Unknown/Multiple
Type of failure: None/Unknown | Test Case:
Blocked By: | Blocking:
Related Tickets: #5793 #9476 | Differential Rev(s): Phab:D5438
#15333 #15357 |
Wiki Page: |
-------------------------------------+-------------------------------------
Comment (by sgraf):
Replying to [comment:6 simonmar]:
> So as I understand it, the GC "wibbles" you're talking about are caused
by the number of GCs we run? Making a small change to the nursery size can
make the difference between N and N+1 GC runs, which could be a large
difference in runtime.
Yes, that's one source of wibble (in hindsight, that may have been a bad
term to use here). But it's not exactly the reason why I'm doing this:
Have a look at the numbers in
https://ghc.haskell.org/trac/ghc/ticket/9476#comment:55. The `./default`
had significantly fewer Gen 0 collections and the same number of Gen 1
collections as `./allow-cg` (which produces more garbage but is faster in
total). Gen 1 collections where cheaper for `./allow-cg` for some reason.
Also note how this correlates with the productivity rate: 10% vs 15% for
the latter. The findings in the thread led me to plot the above curves.
>
> You're only looking at `-G1`, right? Generational GC often has weird
effects based on the timing of when a GC runs. I think there will still be
issues when there's an old-gen collection right around the end of the
program run - making a small change may mean the difference between
running or not running the expensive GC.
This is not `-G1` and I agree that a single old-gen collection might make
the difference. But when we modify the program in a way that there are
''more'' Gen 1 collections, at more uniformly distributed points in the
program, I argue we will have a much better experience comparing nofib
numbers. There are multiple ways to achieve this, but I think the simplest
one is what I outline above and more closely corresponds to the workload
of real applications (e.g. long running time, growing and shrinking
working sets).
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/15999#comment:7>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list