kernel - usched_dfly revamp
authorMatthew Dillon <dillon@apollo.backplane.com>
Fri, 21 Sep 2012 23:09:25 +0000 (16:09 -0700)
committerMatthew Dillon <dillon@apollo.backplane.com>
Fri, 21 Sep 2012 23:09:25 +0000 (16:09 -0700)
commitde4d4cb09ddef3daf05c2758cd2962bc7349e746
tree62a0b10dfc8fc4b1a4afca7ec65933b542e4940f
parentaf5fd90d4700f93ee5b91162ef4d9e8e5adce0a2
kernel - usched_dfly revamp

* NOTE: This introduces a few regressions at high loads.  They've been
  identified and will be fixed in another iteration.

  We've identified an issue with weight2.  When weight2 successfully
  schedules a process pair on the same cpu it can lead to inefficiencies
  elsewhere in the scheduler related to user-mode and kernel-mode
  priority switching.  In this situation testing pgbench/postgres pairs
  (e.g. -j $ncpus -c $ncpus) we sometimes see some serious regressions on
  multi-socket machines, and other times see remarkably high performance.

* Fix a reported panic.

* Revamp the weights and algorithms signficantly.  Fix algorithmic errors
  and improve the accuracy of weight3.  Add weight4 which basically tells
  the scheduler to try harder to find a free cpu to schedule the lwp on
  when the current cpu is busy doing something else.
sys/kern/kern_clock.c
sys/kern/kern_synch.c
sys/kern/kern_usched.c
sys/kern/lwkt_thread.c
sys/kern/usched_bsd4.c
sys/kern/usched_dfly.c
sys/kern/usched_dummy.c
sys/sys/globaldata.h
sys/sys/proc.h
sys/sys/usched.h