cvs commit: src/sys/conf NOTES files options src/sys/kern kern_clock.c kern_switch.c sched_4bsd.c sched_core.c sched_ule.c src/sys/sys sched.h src/sys/i386/conf GENERIC src/sys/amd64/conf GENERIC

David Xu davidxu at FreeBSD.org
Tue Jun 13 13:15:16 UTC 2006


davidxu     2006-06-13 13:12:57 UTC

  FreeBSD src repository

  Modified files:
    sys/conf             NOTES files options 
    sys/kern             kern_clock.c kern_switch.c sched_4bsd.c 
                         sched_ule.c 
    sys/sys              sched.h 
    sys/i386/conf        GENERIC 
    sys/amd64/conf       GENERIC 
  Added files:
    sys/kern             sched_core.c 
  Log:
  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.
  
  Revision  Changes    Path
  1.459     +1 -0      src/sys/amd64/conf/GENERIC
  1.1366    +1 -0      src/sys/conf/NOTES
  1.1124    +1 -0      src/sys/conf/files
  1.546     +1 -0      src/sys/conf/options
  1.449     +1 -0      src/sys/i386/conf/GENERIC
  1.189     +1 -0      src/sys/kern/kern_clock.c
  1.122     +6 -1      src/sys/kern/kern_switch.c
  1.82      +5 -0      src/sys/kern/sched_4bsd.c
  1.1       +2329 -0   src/sys/kern/sched_core.c (new)
  1.163     +5 -0      src/sys/kern/sched_ule.c
  1.25      +1 -0      src/sys/sys/sched.h


More information about the cvs-src mailing list