git: kernel - Add usched_dfly algorith, set as default for now (8)

Matthew Dillon dillon at crater.dragonflybsd.org
Wed Sep 19 21:42:07 PDT 2012


commit 9235da16e932b49b97c0dfdda35bf04cfc931f96
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date:   Wed Sep 19 21:37:18 2012 -0700

    kernel - Add usched_dfly algorith, set as default for now (8)
    
    * Fix additional edge cases, in particular improving the process pairing
      algorithm to reduce flapping.
    
    * Reorder conditionals in dd->uschedcp assignment to improve the hot path.
    
    * Rewrite the balancing rover.  The rover will now move one process per
      tick from a very heavily loaded cpu queue to a lightly loaded cpu queue.
      Each cpu target is iterated by the rover, one target per tick.
    
    * Reformulate dfly_chooseproc_locked() and friends.  Add a capability to
      choose the 'worst' process (from the end of the queue), which is used
      by the rover.
    
    * When pulling a random thread we require the queue it is taken from to
      be MUCH more heavily loaded than our own queue, which avoids ping-ponging
      processes back and forth when the load is not balanced against the number
      of cpu cores (e.g. 6 servers, 4 cores).

Summary of changes:
 sys/kern/usched_dfly.c |  427 +++++++++++++++++++++++++++---------------------
 1 files changed, 239 insertions(+), 188 deletions(-)

http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/9235da16e932b49b97c0dfdda35bf04cfc931f96


-- 
DragonFly BSD source repository



More information about the Commits mailing list