[GHC] #10007: Fix misattribution of Cost Centre profiles to lintAnnots
GHC
ghc-devs at haskell.org
Thu Dec 15 18:07:39 UTC 2016
#10007: Fix misattribution of Cost Centre profiles to lintAnnots
-------------------------------------+-------------------------------------
Reporter: thoughtpolice | Owner: simonmar
Type: bug | Status: new
Priority: high | Milestone: 8.2.1
Component: Profiling | Version: 7.10.1-rc1
Resolution: | Keywords:
Operating System: Unknown/Multiple | Architecture:
Type of failure: Incorrect result | Unknown/Multiple
at runtime | Test Case:
Blocked By: | Blocking:
Related Tickets: #9961,#5654 | Differential Rev(s): Phab:D616
Wiki Page: | Phab:D636
-------------------------------------+-------------------------------------
Comment (by Ben Gamari <ben@…>):
In [changeset:"394231b301efb6b56654b0a480ab794fe3b7e4db/ghc"
394231b3/ghc]:
{{{
#!CommitTicketReference repository="ghc"
revision="394231b301efb6b56654b0a480ab794fe3b7e4db"
Fix cost-centre-stacks bug (#5654)
This fixes some cases of wrong stacks being generated by the profiler.
For background and details on the fix see
`Note [Evaluating functions with profiling]` in `rts/Apply.cmm`.
This does have an impact on allocations for some programs when
profiling. nofib results:
```
k-nucleotide +0.0% +8.8% +11.0% +11.0% 0.0%
puzzle +0.0% +12.5% 0.244 0.246 0.0%
typecheck 0.0% +8.7% +16.1% +16.2% 0.0%
------------------------------------------------------------------------
--------
Min -0.0% -0.0% -34.4% -35.5% -25.0%
Max +0.0% +12.5% +48.9% +49.4% +10.6%
Geometric Mean +0.0% +0.6% +2.0% +1.8% -0.3%
```
But runtimes don't seem to be affected much, and the examples I looked
at were completely legitimate. For example, in puzzle we have this:
```
position :: ItemType -> StateType -> BankType
position Bono = bonoPos
position Edge = edgePos
position Larry = larryPos
position Adam = adamPos
```
where the identifiers on the rhs are all record selectors. Previously
the profiler gave a stack that looked like
```
position
bonoPos
...
```
i.e. `bonoPos` was at the same level of the call stack as `position`,
but now it looks like
```
position
bonoPos
...
```
I used the normaliser from the testsuite to diff the profiling output
from other nofib programs and they all looked better.
Test Plan:
* the broken test passes
* validate
* compiled and ran all of nofib, measured perf, diff'd several .prof
files
Reviewers: niteria, erikd, austin, scpmw, bgamari
Reviewed By: bgamari
Subscribers: thomie
Differential Revision: https://phabricator.haskell.org/D2804
GHC Trac Issues: #5654, #10007
}}}
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/10007#comment:20>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list