cvs commit: src/sys/kern sched_ule.c

Jeff Roberson jeff at FreeBSD.org
Thu Jan 4 00:56:25 PST 2007


jeff        2007-01-04 08:56:25 UTC

  FreeBSD src repository

  Modified files:
    sys/kern             sched_ule.c 
  Log:
  ULE 2.0:
   - Remove the double queue mechanism for timeshare threads.  It was slow
     due to excess cache lines in play, caused suboptimal scheduling behavior
     with niced and other non-interactive processes, complicated priority
     lending, etc.
   - Use a circular queue with a floating starting index for timeshare threads.
     Enforces fairness by moving the insertion point closer to threads with
     worse priorities over time.
   - Give interactive timeshare threads real-time user-space priorities and
     place them on the realtime/ithd queue.
   - Select non-interactive timeshare thread priorities based on their cpu
     utilization over the last 10 seconds combined with the nice value.  This
     gives us more sane priorities and behavior in a loaded system as
     compared to the old method of using the interactivity score.  The
     interactive score quickly hit a ceiling if threads were non-interactive
     and penalized new hog threads.
   - Use one slice size for all threads.  The slice is not currently
     dynamically set to adjust scheduling behavior of different threads.
   - Add some new sysctls for scheduling parameters.
  
  Bug fixes/Clean up:
   - Fix zeroing of td_sched after initialization in sched_fork_thread() caused
     by recent ksegrp removal.
   - Fix KSE interactivity issues related to frequent forking and exiting of
     kse threads.  We simply disable the penalty for thread creation and exit
     for kse threads.
   - Cleanup the cpu estimator by using tickincr here as well.  Keep ticks and
     ltick/ftick in the same frequency.  Previously ticks were stathz and
     others were hz.
   - Lots of new and updated comments.
   - Many many others.
  
  Tested on:      up x86/amd64, 8way amd64.
  
  Revision  Changes    Path
  1.172     +332 -412  src/sys/kern/sched_ule.c


More information about the cvs-src mailing list