Find a file
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
bin Don't strip a leading ./ from the path for the cd builtin to avoid interpreting 2006-06-12 21:06:00 +00:00
contrib This commit was generated by cvs2svn to compensate for changes in r159399, 2006-06-08 13:10:51 +00:00
crypto Our glob(3) has all the required features. 2006-06-09 08:39:05 +00:00
etc o Add missed $start variable in the grep statement back. 2006-06-11 20:39:12 +00:00
games Burying UNIX--a quote by Rob Pike, 2006-06-12 23:28:52 +00:00
gnu Garbage collect library we did not compile for ages. 2006-06-06 19:31:45 +00:00
include Add size_t declaration 2006-05-22 05:57:39 +00:00
kerberos5 Bump library majro version for gethostbyaddr(3). 2006-05-21 15:15:21 +00:00
lib o Sort .Xrs. 2006-06-13 12:49:14 +00:00
libexec Fix compilation of ftpcmd.y without -DINET6. 2006-06-05 15:50:34 +00:00
release Update release note: KDE 3.5.3. 2006-06-12 01:38:49 +00:00
rescue Pass -DCRUNCH down to standard targets in individual makefiles. 2006-04-10 09:32:50 +00:00
sbin o Fix typo. 2006-06-11 15:53:36 +00:00
secure Add a manual dependency on ssh_namespace.h. 2006-05-13 21:38:16 +00:00
share o vinum.8 -> gvinum.8 as the former was replaced by the latter. 2006-06-11 19:41:07 +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 Tweak mfc.pl to generate backout patchsets. 2006-06-09 10:59:54 +00:00
usr.bin Fix display of idle processes, which had been broken since rev. 1.56 of 2006-06-11 19:18:39 +00:00
usr.sbin Allow variable amounts of verbosity. 2006-06-12 22:39:32 +00:00
COPYRIGHT Happy new year, a little late 2006-01-15 22:06:10 +00:00
LOCKS Document commit constraints for RELENG_6_*. 2006-01-13 06:51:43 +00:00
MAINTAINERS Remove stale entries. 2006-06-03 01:52:11 +00:00
Makefile Simply running ``make world'' will bomb unless you dig up the 2006-06-07 03:33:48 +00:00
Makefile.inc1 Also need to quote values so they can be passed on correctly. 2006-06-06 18:07:58 +00:00
ObsoleteFiles.inc Belatedly add usr/share/man/man4.sab.4.gz. The sab(4) driver was 2006-05-20 00:30:06 +00:00
README Simply running ``make world'' will bomb unless you dig up the 2006-06-07 03:33:48 +00:00
UPDATING Note that an old adjkerntz is not really usable after the recent 2006-05-15 15:47:45 +00:00

This is the top level of the FreeBSD source directory.  This file
was last revised on:
$FreeBSD$

For copyright information, please see the file COPYRIGHT in this
directory (additional copyright information also exists for some
sources in this tree - please see the specific source directories for
more information).

The Makefile in this directory supports a number of targets for
building components (or all) of the FreeBSD source tree, the most
commonly used one being ``world'', which rebuilds and installs
everything in the FreeBSD system from the source tree except the
kernel, the kernel-modules and the contents of /etc.  The ``world''
target should only be used in cases where the source tree has not
changed from the currently running version.  See:
http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/makeworld.html
for more information, including setting make(1) variables.

The ``buildkernel'' and ``installkernel'' targets build and install
the kernel and the modules (see below).  Please see the top of
the Makefile in this directory for more information on the
standard build targets and compile-time flags.

Building a kernel is a somewhat more involved process, documentation
for which can be found at:
   http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/kernelconfig.html
And in the config(8) man page.
Note: If you want to build and install the kernel with the
``buildkernel'' and ``installkernel'' targets, you might need to build
world before.  More information is available in the handbook.

The sample kernel configuration files reside in the sys/<arch>/conf
sub-directory (assuming that you've installed the kernel sources), the
file named GENERIC being the one used to build your initial installation
kernel.  The file NOTES contains entries and documentation for all possible
devices, not just those commonly used.  It is the successor of the ancient
LINT file, but in contrast to LINT, it is not buildable as a kernel but a
pure reference and documentation file.


Source Roadmap:
---------------
bin		System/user commands.

contrib		Packages contributed by 3rd parties.

crypto		Cryptography stuff (see crypto/README).

etc		Template files for /etc.

games		Amusements.

gnu		Various commands and libraries under the GNU Public License.
		Please see gnu/COPYING* for more information.

include		System include files.

kerberos5	Kerberos5 (Heimdal) package.

lib		System libraries.

libexec		System daemons.

release		Release building Makefile & associated tools.

rescue		Build system for statically linked /rescue utilities.

sbin		System commands.

secure		Cryptographic libraries and commands.

share		Shared resources.

sys		Kernel sources.

tools		Utilities for regression testing and miscellaneous tasks.

usr.bin		User commands.

usr.sbin	System administration commands.


For information on synchronizing your source tree with one or more of
the FreeBSD Project's development branches, please see:

  http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/synching.html