* Remove a procedural layer in the scheduler clock code by having
authorMatthew Dillon <dillon@dragonflybsd.org>
Mon, 27 Jun 2005 18:38:03 +0000 (18:38 +0000)
committerMatthew Dillon <dillon@dragonflybsd.org>
Mon, 27 Jun 2005 18:38:03 +0000 (18:38 +0000)
commitdcc99b62de5a701d6916bd834157397026fe321f
tree6cca282897e6c83dc508a69af6d0fac3f17b88f0
parent7eea36fca4deacfb281574fd63ec40ebdc1f37df
* Remove a procedural layer in the scheduler clock code by having
  kern_clock call the usched scheduler clock function directly.

* Move p_estcpu to scheduler-specific code.

* Have kern_synch's one-second timer call into the scheduler instead of
  trying to figure it out itself.

* Decay p_estcpu whenever a user process is scheduled as well as once
  per second, leading to (hopefully) better performance under load and
  better handling of adverse conditions (a nice +20 process running in the
  face of a nice -20 process).

* No longer assume that one second has elapsed in the one-second callback.
  Instead calculate the elapsed time on a per-process basis.  This should
  reduce instances of batch processes 'glitching' interactive processes.

* Remove the old round-robin code and instead just have the scheduler
  figure it out internally in the scheduler clock function.

* Revamp the scheduler algorithms, making everything #define constant
  driven.  Retain the NICE-based base-priority and decay algorithms but
  narrow the decay range from the process nice value.  Retain the child
  estcpu inheritance algorithm.

Feedback-provided-by: walt <wa1ter@myrealbox.com>
14 files changed:
bin/ps/keyword.c
sys/emulation/posix4/ksched.c
sys/i386/include/smp.h
sys/kern/kern_clock.c
sys/kern/kern_fork.c
sys/kern/kern_sched.c
sys/kern/kern_synch.c
sys/kern/tty.c
sys/platform/pc32/include/smp.h
sys/sys/globaldata.h
sys/sys/proc.h
sys/sys/usched.h
sys/vm/vm_pageout.c
usr.bin/w/proc_compare.c