kernel - Add usched_dfly algorith, set as default for now (7)
authorMatthew Dillon <dillon@apollo.backplane.com>
Wed, 19 Sep 2012 18:25:09 +0000 (11:25 -0700)
committerMatthew Dillon <dillon@apollo.backplane.com>
Wed, 19 Sep 2012 18:25:09 +0000 (11:25 -0700)
commit6f693557ce3036af2d363e05d6bc6beec109f290
tree8371eba56d7ca844769a676ecde432ca84681f49
parent4550c3e09a7ad95923d423a3c38cdd5a505d9b57
kernel - Add usched_dfly algorith, set as default for now (7)

* Reenable weight2 (the process pairing heuristic) and fix the
  edge cases associated with it.

* Change the process pulling behavior.  Now we pull the 'worst' thread
  from some other cpu instead of the best (duh!), we only pull when a
  cpu winds up with no designated user threads, or we pull via a
  schedulerclock-implemented rover.

  The schedulerclock-implemented rover will allow ONE cpu to pull the
  'worst' thread across all cpus (with some locality) once every
  round-robin ticks (4 scheduler ticks).

  The rover is responsible for taking excess processes that are unbalancing
  one or more cpu's (for example, you have 6 running batch processes and
  only 4 cpus) and slowly moving them between cpus.  If we did not do this
  the 'good' processes running on the unbalanced cpus are put at an unfair
  disadvantage.

* This should fix all known edge cases, including ramp-down edge cases.
sys/kern/usched_dfly.c