cvs commit: src/sys/sys globaldata.h param.h proc.h src/sys/kern kern_clock.c kern_exit.c kern_switch.c kern_synch.c lwkt_thread.c src/sys/i386/i386 trap.c
dillon at crater.dragonflybsd.org
Fri Oct 17 00:31:55 PDT 2003
dillon 2003/10/17 00:30:43 PDT
sys/sys globaldata.h param.h proc.h
sys/kern kern_clock.c kern_exit.c kern_switch.c
Cleanup P_CURPROC and P_CP_RELEASED handling. P_CP_RELEASED prevents the
userland scheduler from messing with a process and must be set (in a lazy
fashion) when a thread that came in from userland is about to block in
the kernel. P_CURPROC is used to manage which threads belonging to
processes controlled by the userland scheduler are scheduled by LWKT.
The userland scheduler has also been streamlined considerably.
p_priority now has a rollup priority that can be compared directly,
regardless of the realtime/idle/whatever queue a process is on.
p_priority has been changed from an unsigned char to a signed short.
schedclock is now distributed, so 'top' shows the correct values.
A huge amount of cpu affinity code has been added to the scheduler. It is
not working 100% yet, but the framework is there (see kern/kern_switch.c).
globaldata now has gd_upri to support remote reschedule requests issued
by the affinity code. There are two goals to the new scheduling code for
MP boxes: (1) so niced/idleprio cpu bound programs do not interfere
*at* *all* with other things (like, say, a buildworld). (2) to reduce
the flip-flopping of processes between cpus.
lwkt_gettoken() now increments the generation number unconditionally so
kernel code can detect when other processes have used a token.
lwkt_send_ipiq_mask() removes stopped cpus from the mask automatically.
Revision Changes Path
1.18 +3 -1 src/sys/sys/globaldata.h
1.8 +5 -0 src/sys/sys/param.h
1.34 +4 -5 src/sys/sys/proc.h
1.12 +10 -2 src/sys/kern/kern_clock.c
1.25 +1 -1 src/sys/kern/kern_exit.c
1.11 +218 -71 src/sys/kern/kern_switch.c
1.25 +38 -50 src/sys/kern/kern_synch.c
1.37 +7 -3 src/sys/kern/lwkt_thread.c
1.36 +32 -21 src/sys/i386/i386/trap.c
More information about the Commits