[GHC] #7606: Stride scheduling for Haskell threads with priorities

GHC cvs-ghc at haskell.org
Tue Jan 22 06:34:57 CET 2013


#7606: Stride scheduling for Haskell threads with priorities
---------------------------------+------------------------------------------
    Reporter:  ezyang            |       Owner:  ezyang          
        Type:  feature request   |      Status:  new             
    Priority:  normal            |   Milestone:  7.8.1           
   Component:  Runtime System    |     Version:  7.7             
    Keywords:                    |          Os:  Unknown/Multiple
Architecture:  Unknown/Multiple  |     Failure:  None/Unknown    
  Difficulty:  Unknown           |    Testcase:                  
   Blockedby:                    |    Blocking:                  
     Related:                    |  
---------------------------------+------------------------------------------

Comment(by ezyang):

 > Currently, if there's a very long run queue, a minor GC won't have to
 traverse a lot of it because it will be in the old generation, but here
 the GC has to look at every element of the priority queue. We should make
 a benchmark with a long run queue and see if that's an issue.

 Based on some investigation, this appears to be probably one of the
 primary causes of slowdown. I checked to see if this was an issue by
 checking how often markCapability calls occurred versus actual evacuations
 performed on TSO objects. Although the number of markCapability calls is
 the same in both cases, TSO objects get evacuated a lot more frequently in
 the new world.

 One of the things that I'm not really clear about is how to tell if I can
 skip evacuating an object. This GC part of the code is pretty opaque to
 me, and while I feel like there should be something like a log(n) solution
 I'm not seeing an implementation path.

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



More information about the ghc-tickets mailing list