freebsd-skq/sys/i386
David Xu b41f1452d9 Add scheduler CORE, the work I have done half a year ago, recent,
I picked it up again. The scheduler is forked from ULE, but the
algorithm to detect an interactive process is almost completely
different with ULE, it comes from Linux paper "Understanding the
Linux 2.6.8.1 CPU Scheduler", although I still use same word
"score" as a priority boost in ULE scheduler.

Briefly, the scheduler has following characteristic:
1. Timesharing process's nice value is seriously respected,
   timeslice and interaction detecting algorithm are based
   on nice value.
2. per-cpu scheduling queue and load balancing.
3. O(1) scheduling.
4. Some cpu affinity code in wakeup path.
5. Support POSIX SCHED_FIFO and SCHED_RR.
Unlike scheduler 4BSD and ULE which using fuzzy RQ_PPQ, the scheduler
uses 256 priority queues. Unlike ULE which using pull and push, the
scheduelr uses pull method, the main reason is to let relative idle
cpu do the work, but current the whole scheduler is protected by the
big sched_lock, so the benefit is not visible, it really can be worse
than nothing because all other cpu are locked out when we are doing
balancing work, which the 4BSD scheduelr does not have this problem.
The scheduler does not support hyperthreading very well, in fact,
the scheduler does not make the difference between physical CPU and
logical CPU, this should be improved in feature. The scheduler has
priority inversion problem on MP machine, it is not good for
realtime scheduling, it can cause realtime process starving.
As a result, it seems the MySQL super-smack runs better on my
Pentium-D machine when using libthr, despite on UP or SMP kernel.
2006-06-13 13:12:56 +00:00
..
acpica * Ask for a page-aligned page instead of an arbitrary address. This should 2006-06-10 08:20:17 +00:00
bios APM was calling the suspend process from a timeout. This meant that 2006-05-25 23:06:38 +00:00
compile
conf Add scheduler CORE, the work I have done half a year ago, recent, 2006-06-13 13:12:56 +00:00
cpufreq Since DELAY() was moved, most <machine/clock.h> #includes have been 2006-05-16 14:37:58 +00:00
i386 Don't invalidate the TLB in pmap_qenter() unless the old mapping was valid. 2006-06-12 20:05:27 +00:00
ibcs2 Regenerate. 2006-02-06 22:15:00 +00:00
include Use the method described in IA-32 Intel Architecture Software Developer's 2006-05-30 23:44:21 +00:00
isa Use the method described in IA-32 Intel Architecture Software Developer's 2006-05-30 23:44:21 +00:00
linux regen (linux rt_sigpending) 2006-05-10 18:19:51 +00:00
pci - Make pcib_devclass private to sys/dev/pci/pci_pci.c and change all the 2006-01-06 19:22:19 +00:00
svr4 Use svr4_si_{addr,code,errno,signo,trap} in preference to si_{...}. 2005-10-19 14:59:54 +00:00
xbox Committed the xbox syscons(8)-able console driver. 2006-03-03 14:52:57 +00:00
Makefile