[GHC] #4225: RTS option to remove profiling overhead from heap profile time stamps

GHC cvs-ghc at haskell.org
Tue Jul 27 15:44:19 EDT 2010


#4225: RTS option to remove profiling overhead from heap profile time stamps
---------------------------------+------------------------------------------
    Reporter:  ClaudiusMaximus   |       Owner:              
        Type:  feature request   |      Status:  new         
    Priority:  normal            |   Component:  Profiling   
     Version:  6.12.3            |    Keywords:              
          Os:  Unknown/Multiple  |    Testcase:              
Architecture:  Unknown/Multiple  |     Failure:  None/Unknown
---------------------------------+------------------------------------------

Comment(by ClaudiusMaximus):

 After some thinking, I've reached these conclusions, which are conjecture
 but if they are the case they do somewhat explain the behaviour I've been
 seeing:

 1. To get meaningful heap profiles, GC is performed before each census.
 2. GC takes an amount of time that depends on total heap usage.
 3. Census takes an amount of time that depends on total heap usage.
 4. GC affects the behaviour of the program, so IS included in heap profile
 time stamps.
 5. Census does not affect the behaviour of the program, so IS NOT included
 in heap profile time stamps.
 6. GC takes much longer than census.

 (1) would imply that the space/time behaviour of a profiled program might
 be very different from an unprofiled program because GC might be performed
 much more frequently.

 In which case, perhaps it would make sense to have a "tickless" heap
 profile where census is performed after any "naturally" occuring GC?

 I will look for the documentation giving an overview of how the RTS
 actually does profiling, because chances are that my guesses here are way
 off the mark.

-- 
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/4225#comment:3>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler


More information about the Glasgow-haskell-bugs mailing list