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

GHC cvs-ghc at haskell.org
Sat Feb 9 10:24:52 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 njd):

 I'd like to add a word of caution to the inclusion of any form of
 priority/weighted scheduling into GHC at this time.

 Scheduling (unless it discards work) does not, a priori, change the
 total amount of work that has to be done, just its order. Such
 scheduling strategies don't create computational power, they just
 distribute the "disappointment" of not being first...

 This would imply that all of the timing changes reported in this
 thread are the result of interactions with other resources - different
 patterns of memory access, garbage collection etc.

 The community already recognises these sort of performance couplings
 and there several mechanisms (at a higher level) that can be used to
 manage the inevitable performance trades.

 I strongly believe that adding differential scheduling at this time
 will be, overall, counter productive to GHC's RTS development. It will
 create a new class of performance artefacts that will require
 resources to investigate. Time will be spent pushing trades around,
 chasing the proverbial bubble under the wall paper around and around.

 Please don't get me wrong, I am highly appreciative of Edward's
 efforts. The more overhead we can reduce in the scheduling, the
 better.

 If we want to start looking at more complex differential treatment of
 the allocation of supply (cpu cycles) to demand (task steps) then we
 need to consider the issues of how that trade interacts with the
 others. And how the overall trading space is going to manifest itself
 in terms of end-user goals. We also need to come up with a sensible
 approach of how to discard computational demand (load shedding) when
 the "system" becomes "excessively" infeasible to schedule to met those
 goals. Fortunately there are approaches to this (stuff I've been
 involved with in data networks for many years) - and Haskell's
 operational has all the right hooks in to do this. Interested PhD
 students, do get in touch....

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



More information about the ghc-tickets mailing list