freebsd-dev/sys
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
..
amd64 Add scheduler CORE, the work I have done half a year ago, recent, 2006-06-13 13:12:56 +00:00
arm MFp4: 2006-06-12 22:58:50 +00:00
boot Increment the disk block offset after writing, not before. This 2006-05-31 09:05:49 +00:00
bsm Merge OpenBSM 1.0 alpha 6 version of audit_record.h to src/sys: 2006-06-05 13:00:52 +00:00
cam Add PIM_SEQSCAN for HBA misc flags and code that understands 2006-06-05 22:22:14 +00:00
coda Since DELAY() was moved, most <machine/clock.h> #includes have been 2006-05-16 14:37:58 +00:00
compat Forcefully turn off GPROF in this file if it is enabled as GPROF's 2006-06-12 20:35:59 +00:00
conf Add scheduler CORE, the work I have done half a year ago, recent, 2006-06-13 13:12:56 +00:00
contrib reposition defines so things build on architectures where AH_REGOPS_FUNC 2006-06-07 18:09:33 +00:00
crypto Fix gratuitous compiler warning. 2006-06-08 17:40:02 +00:00
ddb Use __LP64__ rather than the PTR64 hack. 2006-05-11 21:59:55 +00:00
dev Need machine/bus.h here too 2006-06-12 19:22:44 +00:00
doc Add a disclaimer regarding public/internal functions to every subsystem for 2006-05-28 15:25:18 +00:00
fs Upon further review, DES prefers this change over that in revision 1.13 2006-06-05 16:41:27 +00:00
gdb Convert to new console api 2006-05-26 13:54:27 +00:00
geom Allow to use the old -a option to specify an encryption algorithm to use 2006-06-06 22:06:24 +00:00
gnu Implement vnode operations for setting and removing extended attributes. 2006-06-11 03:32:50 +00:00
i4b Since DELAY() was moved, most <machine/clock.h> #includes have been 2006-05-16 14:37:58 +00:00
i386 Add scheduler CORE, the work I have done half a year ago, recent, 2006-06-13 13:12:56 +00:00
ia64 Add the ability to subset the devices that UART pulls in. This allows 2006-06-12 04:21:50 +00:00
isa Make the ISAPNP code optional and only enable it on i386 and pc98 (used 2006-06-12 21:07:13 +00:00
isofs/cd9660 Remove calls to vfs_export() for exporting a filesystem for NFS mounting 2006-05-26 00:32:21 +00:00
kern Add scheduler CORE, the work I have done half a year ago, recent, 2006-06-13 13:12:56 +00:00
libkern First pass at removing Alpha kernel support. 2006-05-11 22:25:28 +00:00
modules Don't expect that 'device random' will compile in those files into the 2006-06-09 17:36:50 +00:00
net Use bit operations to get a locally administered address rather than using a 2006-06-12 22:43:37 +00:00
net80211 Fix the following bpf(4) race condition which can result in a panic: 2006-06-02 19:59:33 +00:00
netatalk Update global copyright statement for netatalk, as I claim copyright 2006-06-08 22:13:52 +00:00
netatm Chance protocol switch method pru_detach() so that it returns void 2006-04-01 15:42:02 +00:00
netgraph When counting nodes second time, use the same criteria as for 2006-06-07 12:42:15 +00:00
netinet Enable proxy ARP answers on any of the bridged interfaces if proxy record 2006-06-09 00:33:30 +00:00
netinet6 Fix spurious warnings from neighbor discovery when working with IPv6 over 2006-06-08 00:31:17 +00:00
netipsec Change '#if INET' and '#if INET6' to '#ifdef INET' and '#ifdef INET6'. 2006-06-04 19:32:32 +00:00
netipx Make this compile without INVARIANTS. 2006-04-11 23:15:47 +00:00
netkey In raw and raw-derived socket types, maintain and enforce invariant that 2006-04-01 15:55:44 +00:00
netnatm style(9) treatment following fixups. 2006-04-23 16:33:56 +00:00
netncp In ncp_sysctl_connstat(), the SLIST_FOREACH() logic to check 'error' 2006-01-14 11:40:32 +00:00
netsmb Retire NETSMBCRYPTO as a kernel option and make its functionality 2006-03-05 22:52:17 +00:00
nfs
nfs4client While reviewing NFS client for another PR, noticed this omission in the 2006-05-24 15:56:36 +00:00
nfsclient Kris Kennaway found that for '/' NFS mounts, the MPSAFE mount flag was 2006-05-30 20:32:44 +00:00
nfsserver Temporary workaround to prevent leak of Giant from nfsd when calling 2006-06-05 14:48:02 +00:00
opencrypto When DIAGNOSTIC is defined, verify if we don't free crypto requests from 2006-06-06 15:04:52 +00:00
pc98 Make the ISAPNP code optional and only enable it on i386 and pc98 (used 2006-06-12 21:07:13 +00:00
pccard I don't believe these are used at all, and can be safely removed 2006-01-15 06:49:28 +00:00
pci Move SiS 760 to where it belongs. 2006-05-30 18:41:26 +00:00
posix4 Don't allow non-root user to set a scheduler policy, otherwise this could 2006-05-21 00:40:38 +00:00
powerpc Some machines have an ESCC. Make sure we build uart(4) with support 2006-06-12 20:10:46 +00:00
rpc Fix up some cut-n-paste damage and some out-of-date comments. 2006-01-20 15:20:41 +00:00
security Lock process when copying fields from process structure so as to 2006-06-08 21:58:04 +00:00
sparc64 Add the ability to subset the devices that UART pulls in. This allows 2006-06-12 04:21:50 +00:00
sys Add scheduler CORE, the work I have done half a year ago, recent, 2006-06-13 13:12:56 +00:00
tools - Add two checks for syntax errors 2006-05-30 21:13:28 +00:00
ufs Check the sectorsize of the underlying disk before trying to 2006-06-03 21:20:37 +00:00
vm Enable debug.mpsafevm on arm by default. 2006-06-10 05:29:37 +00:00
Makefile o Add net80211/ to cscope dir list. 2006-05-29 19:29:41 +00:00