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