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

GHC cvs-ghc at haskell.org
Thu Feb 21 23:35:07 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, after a brief break, I've started working on latency benchmarks to
 help evaluate how much alternative scheduling algorithms help.  Of course,
 the first order of business was to establish some baselines, so I ran some
 tests on GHC 7.4 first, as well as a bare-bones C version of the
 application.  The tests are here https://github.com/ezyang/latency ;
 eventually I'll integrate them with nofib (although it's not obvious how
 to integrate them into the current nofib reporting framework).  The basic
 method is to write a byte onto a Unix domain socket; I'm sure I've botched
 some instrumentation somewhere so some eyeballs here would be useful.  I
 can also make pretty graphs if people are interested.

 System info:

 {{{
 [ezyang at hs01 latency]$ uname -a
 Linux hs01.scs.stanford.edu 3.5.3-1-ARCH #1 SMP PREEMPT Sun Aug 26
 09:14:51 CEST 2012 x86_64 GNU/Linux
 }}}

 GHC 7.4.2 (as installed by Arch Linux)

 {{{
       0%      50%      90%      99%    99.9%   99.99%
 0.000016 0.000021 0.000064 0.000096 0.000157 0.000175
 }}}

 GHC 7.4.2 threaded -N1

 {{{
       0%      50%      90%      99%    99.9%   99.99%
 0.000048 0.000096 0.000191 0.000221 0.000260 0.000301
 }}}

 GHC 7.4.2 threaded -N2

 {{{
       0%      50%      90%      99%    99.9%   99.99%
 0.000054 0.000208 0.000264 0.000307 0.000338 0.000370
 }}}

 GHC 7.7.20130122 (prior to the newest latency IO manager)

 {{{
       0%      50%      90%      99%    99.9%   99.99%
 0.000015 0.000045 0.000093 0.000117 0.000153 0.000169
 }}}

 GHC 7.7.20130122 (prior to the newest latency IO manager)

 {{{
       0%      50%      90%      99%    99.9%   99.99%
 0.000015 0.000045 0.000093 0.000117 0.000153 0.000169
 }}}

 GHC 7.7.20130122 -threaded

 {{{
       0%      50%      90%      99%    99.9%   99.99%
 0.000044 0.000058 0.000177 0.000219 0.000252 0.000281
 }}}

 GHC 7.7.20130122 -threaded -N2

 {{{
       0%      50%      90%      99%    99.9%   99.99%
 0.000053 0.000210 0.000258 0.000298 0.000335 0.000376
 }}}

 I'm building a version of GHC with the latest IO manager stuff and we'll
 see how that changes things...

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



More information about the ghc-tickets mailing list