
#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@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