summaryrefslogtreecommitdiffstats
path: root/sys/conf
diff options
context:
space:
mode:
authordavidxu <davidxu@FreeBSD.org>2006-06-13 13:12:56 +0000
committerdavidxu <davidxu@FreeBSD.org>2006-06-13 13:12:56 +0000
commit82b666ed4a1c655e74f606994b240c188d1f4a4d (patch)
treea9fec91142711752b931300f2309e4de17526aad /sys/conf
parent569fed19c7183960be11bec68284107dc89c362f (diff)
downloadFreeBSD-src-82b666ed4a1c655e74f606994b240c188d1f4a4d.zip
FreeBSD-src-82b666ed4a1c655e74f606994b240c188d1f4a4d.tar.gz
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.
Diffstat (limited to 'sys/conf')
-rw-r--r--sys/conf/NOTES1
-rw-r--r--sys/conf/files1
-rw-r--r--sys/conf/options1
3 files changed, 3 insertions, 0 deletions
diff --git a/sys/conf/NOTES b/sys/conf/NOTES
index 31d195d..a9618b4 100644
--- a/sys/conf/NOTES
+++ b/sys/conf/NOTES
@@ -166,6 +166,7 @@ options ROOTDEVNAME=\"ufs:da0s2e\"
# over time.
#
options SCHED_4BSD
+#options SCHED_CORE
#options SCHED_ULE
#####################################################################
diff --git a/sys/conf/files b/sys/conf/files
index 8455bc8..2be0954 100644
--- a/sys/conf/files
+++ b/sys/conf/files
@@ -1324,6 +1324,7 @@ kern/linker_if.m standard
kern/md4c.c optional netsmb
kern/md5c.c standard
kern/sched_4bsd.c optional sched_4bsd
+kern/sched_core.c optional sched_core
kern/sched_ule.c optional sched_ule
kern/serdev_if.m optional puc | scc
kern/subr_autoconf.c standard
diff --git a/sys/conf/options b/sys/conf/options
index e55fc8f..19cca6f 100644
--- a/sys/conf/options
+++ b/sys/conf/options
@@ -128,6 +128,7 @@ PPS_SYNC opt_ntp.h
PREEMPTION opt_sched.h
QUOTA
SCHED_4BSD opt_sched.h
+SCHED_CORE opt_sched.h
SCHED_ULE opt_sched.h
SHOW_BUSYBUFS
SLEEPQUEUE_PROFILING
OpenPOWER on IntegriCloud