git: kernel - 48-core MP work

Matthew Dillon dillon at crater.dragonflybsd.org
Sat Dec 11 15:52:59 PST 2010


commit cbdd23b1e5d007ed3aa4b7b24b111f3f3e0561cb
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date:   Sat Dec 11 15:47:01 2010 -0800

    kernel - 48-core MP work
    
    * Replace the cpu_contention_mask global with a per-token contention mask.
    
    * Fold the lwkt.user_pri_sched feature into the scheduler and remove the
      sysctl.  The feature is now alwayws on.  The feature allows a lower
      priority non-contending thread to be scheduled in the face of a
      high-priority contending thread that would normally spin in the scheduler.
    
    * A reschedule IPI is now performed when a high-priority contending thread
      might possibly resolve, which will kick the user process back into the
      kernel and allow rescheduling of the higher priority thread.
    
    * Change the idle-cpu check semantics.  When a cpu's scheduler finds only
      contending threads it used to loop in the scheduler and the idle thread
      would be flagged to not halt.  We now allow the idle thread to halt in
      this case and expect to receive an IPI when any of the contending threads
      might possibly resolve.
    
      As a fringe benefit this should also benefit vkernels.
    
    * lwkt_schedule() has been significantly simplified.  Or as I would say,
      decomplexified.

Summary of changes:
 sys/dev/acpica5/acpi_cpu_cstate.c        |    4 +-
 sys/kern/lwkt_thread.c                   |   48 +++------------
 sys/kern/lwkt_token.c                    |   95 +++++++++++++++++++++++++-----
 sys/platform/pc32/i386/machdep.c         |   35 ++---------
 sys/platform/pc64/x86_64/machdep.c       |   32 +---------
 sys/platform/vkernel/i386/cpu_regs.c     |   34 ++---------
 sys/platform/vkernel64/x86_64/cpu_regs.c |   35 ++---------
 sys/sys/globaldata.h                     |    3 +
 sys/sys/mplock2.h                        |   32 ----------
 sys/sys/thread.h                         |    5 +-
 10 files changed, 118 insertions(+), 205 deletions(-)

http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/cbdd23b1e5d007ed3aa4b7b24b111f3f3e0561cb


-- 
DragonFly BSD source repository





More information about the Commits mailing list