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

GHC cvs-ghc at haskell.org
Thu Jan 24 05:23: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):

 OK, I've fixed all of the performance problems, except for the TSO one.

 {{{
 --------------------------------------------------------------------------------
         Program           Size    Allocs   Runtime   Elapsed  TotalMem
 --------------------------------------------------------------------------------
     callback001          +0.0%     +0.0%     -0.6%     +0.0%     +0.0%
     callback002          +0.0%     +0.0%     +0.2%     +0.0%     +0.0%
            chan          +0.0%     +0.0%     +0.2%     +0.2%     +3.2%
           sieve          +0.0%     +0.0%     -0.4%     -0.1%     +0.0%
      threads001          +0.0%     +0.0%     +0.8%     +0.8%     +0.0%
      threads003          +0.0%     -0.0%     +0.1%     +0.3%     +0.0%
      threads006          +0.0%     +0.0%    +35.1%    +34.9%    +52.7%
      threads007          +0.0%     +0.0%     -0.1%     +0.0%     +0.0%
 }}}

 I don't think the TSO problem (in threads006) has to do with influencing
 stack size; when I run with GC stats, I don't see any thread overflows
 (the stack is only one word smaller), and the overall allocation remains
 the same (TSO ends up being 0x10 aligned, but I don't see why that would
 cause performance problems...)

 {{{
 big (slows down)
     size = 0x80
     sizeOf(StgTSO) = 0x80 (0x10 * 8)
     free = 0x7ffff6b0a800
     allocate(0x70) = 0x7ffff6b0a800 (stack)
     free = 0x7ffff6b0ab80 (+0x380 == 0x70 * 8)
     allocate(0x10) = 0x7ffff6b0ab80 (tso)
     free = 0x7ffff6b0ac00 (+0x80)
     # overall, free += 0x400

 medium (is fine)
     size = 0x80
     sizeOf(StgTSO) = 0x78 (0xf * 8)
     free = 0x7ffff6b0a800
     allocate(0x71) = 0x7ffff6b0a800 (stack)
     free = 0x7ffff6b0ab88 (+0x388 == 0x71 * 8)
     allocate(0xf) = 0x7ffff6b0ab88 (tso)
     free = 0x7ffff6b0ac00 (+0x78)
     # overall, free += 0x400
 }}}

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



More information about the ghc-tickets mailing list