[GHC] #7751: Incremental heap census

GHC cvs-ghc at haskell.org
Fri Mar 8 00:50:40 CET 2013


#7751: Incremental heap census
-----------------------------+----------------------------------------------
Reporter:  ezyang            |          Owner:                  
    Type:  bug               |         Status:  new             
Priority:  normal            |      Component:  Compiler        
 Version:  7.6.2             |       Keywords:                  
      Os:  Unknown/Multiple  |   Architecture:  Unknown/Multiple
 Failure:  None/Unknown      |      Blockedby:                  
Blocking:                    |        Related:                  
-----------------------------+----------------------------------------------
 At the moment, a heap census forces a major garbage collection, because a
 heap census is always traverses the entire heap, and the only time when
 there is no slop is right after a major GC. What would be nice is if we
 only carried out heap census on portions of the heap which were
 *immediately* GC'd; i.e. an incremental census.

 The question, then, is how do we reconstruct full heap state from only a
 partial census? In particular, how do we know if an object that was
 previously present got collected or got promoted? If we always assume that
 it got collected (the naive implementation), a promoted object will
 disappear from the census, and only mysteriously reappear when we do a
 full census. The trick we want to employ is to save the starting pointer
 of all of the generations: while the entire generation is not slop free,
 the remainder of the first block and all of the later blocks are. I
 believe this is sufficient to reconstruct full heap state.

 #4225 has related discussion.

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



More information about the ghc-tickets mailing list