Skip to content
  • Simon Marlow's avatar
    [project @ 2001-11-22 14:25:11 by simonmar] · db61851c
    Simon Marlow authored
    Retainer Profiling / Lag-drag-void profiling.
    
    This is mostly work by Sungwoo Park, who spent a summer internship at
    MSR Cambridge this year implementing these two types of heap profiling
    in GHC.
    
    Relative to Sungwoo's original work, I've made some improvements to
    the code:
    
       - it's now possible to apply constraints to retainer and LDV profiles
         in the same way as we do for other types of heap profile (eg.
         +RTS -hc{foo,bar} -hR -RTS gives you a retainer profiling considering
         only closures with cost centres 'foo' and 'bar').
    
       - the heap-profile timer implementation is cleaned up.
    
       - heap profiling no longer has to be run in a two-space heap.
    
       - general cleanup of the code and application of the SDM C coding
         style guidelines.
    
    Profiling will be a little slower and require more space than before,
    mainly because closures have an extra header word to support either
    retainer profiling or LDV profiling (you can't do both at the same
    time).
    
    We've used the new profiling tools on GHC itself, with moderate
    success.  Fixes for some space leaks in GHC to follow...
    db61851c